From 9c4140d73a1004abdd57df2c804785220019459d Mon Sep 17 00:00:00 2001 From: florian-simvia Date: Fri, 11 Sep 2026 14:23:32 +0200 Subject: [PATCH 1/9] feat: give code_aster a doe_row.csv compare kind Its Compare panel previously showed an empty file selector because the adapter inherited the empty compare_kinds default. --- csauto/solvers/code_aster.py | 7 ++++++- tests/unit/test_solvers.py | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/csauto/solvers/code_aster.py b/csauto/solvers/code_aster.py index 695a6ab..f06278d 100644 --- a/csauto/solvers/code_aster.py +++ b/csauto/solvers/code_aster.py @@ -17,7 +17,7 @@ from ..execution import RUNTIME_DOCKER, RUNTIME_NATIVE, RUNTIME_SINGULARITY, RuntimeSelection, shared_dir_symlink_mounts from ..logs import _is_recent, _parse_start_time, read_tail_lines from ..registry import STATUS_DONE, STATUS_FAILED -from .base import SolverAdapterBase +from .base import CompareKind, SolverAdapterBase CODE_ASTER_EXPORT_EXTENSION = "export" @@ -34,6 +34,11 @@ class CodeAsterAdapter(SolverAdapterBase): "MESH", "RESU", ) + # doe_row.csv is written into every generated case by the generic DOE code, + # so it is comparable whatever the solver. The .export file would be a better + # candidate but its name varies per case (find_setup_file globs *.export) + # while compare_kinds expects fixed names. + compare_kinds: ClassVar[tuple[CompareKind, ...]] = (CompareKind("doe_row.csv", "doe_row.csv"),) def build_run_command( self, diff --git a/tests/unit/test_solvers.py b/tests/unit/test_solvers.py index f627ec7..a0413a6 100644 --- a/tests/unit/test_solvers.py +++ b/tests/unit/test_solvers.py @@ -308,3 +308,12 @@ def test_default_compare_kind_derives_from_first_compare_kind() -> None: assert CodeSaturneAdapter().default_compare_kind == "setup.xml" assert StubAdapter().default_compare_kind == "stub.toml" + + +def test_code_aster_declares_doe_row_compare_kind() -> None: + from csauto.solvers.base import CompareKind + from csauto.solvers.code_aster import CodeAsterAdapter + + adapter = CodeAsterAdapter() + assert adapter.compare_kinds == (CompareKind("doe_row.csv", "doe_row.csv"),) + assert adapter.default_compare_kind == "doe_row.csv" From f67772a149cc5496fc0038290ae122c9910488e3 Mon Sep 17 00:00:00 2001 From: florian-simvia Date: Fri, 11 Sep 2026 14:24:30 +0200 Subject: [PATCH 2/9] feat: derive dashboard panels from adapter capabilities dashboard_panels defaulted to ALL_DASHBOARD_PANELS, so an adapter that implements no analytics still advertised every panel. It is now a property derived from what the adapter actually provides, and subclasses are prevented from shadowing it. --- csauto/solvers/base.py | 57 ++++++++++++++++++++++++++++- tests/unit/test_solvers.py | 75 +++++++++++++++++++++++++++++++++----- 2 files changed, 122 insertions(+), 10 deletions(-) diff --git a/csauto/solvers/base.py b/csauto/solvers/base.py index c4c88c4..8b7d83f 100644 --- a/csauto/solvers/base.py +++ b/csauto/solvers/base.py @@ -37,6 +37,18 @@ class PerfColumn(NamedTuple): ALL_DASHBOARD_PANELS = ("status", "residuals", "probes", "performance", "compare", "tail", "errors") +CAPABILITY_RESIDUALS = "residuals" +CAPABILITY_PROBES = "probes" +CAPABILITY_PERFORMANCE = "performance" +CAPABILITY_COMPARE = "compare" +CAPABILITY_CONTROL = "control" +CAPABILITY_RESTART = "restart" +CAPABILITY_GUI = "gui" + +# Panels any run feeds, whatever the solver: status comes from the registry, +# tail and errors from the csauto.stdout / csauto.stderr launcher logs. +ALWAYS_ON_PANELS = ("status", "tail", "errors") + @runtime_checkable class SolverAdapter(Protocol): @@ -55,6 +67,7 @@ class SolverAdapter(Protocol): performance_fields: tuple[str, ...] performance_columns: tuple[PerfColumn, ...] dashboard_panels: tuple[str, ...] + capabilities: frozenset[str] compare_kinds: tuple[CompareKind, ...] default_compare_kind: str control_actions: frozenset[str] @@ -171,10 +184,52 @@ class SolverAdapterBase(ABC): anomaly_file_names: ClassVar[tuple[str, ...]] = ("csauto.stderr", "csauto.stdout") cleanup_log_names: ClassVar[frozenset[str]] = frozenset({"csauto.stdout", "csauto.stderr"}) performance_columns: ClassVar[tuple[PerfColumn, ...]] = () - dashboard_panels: ClassVar[tuple[str, ...]] = ALL_DASHBOARD_PANELS compare_kinds: ClassVar[tuple[CompareKind, ...]] = () control_actions: ClassVar[frozenset[str]] = frozenset() + def __init_subclass__(cls, **kwargs: Any) -> None: + super().__init_subclass__(**kwargs) + for reserved in ("dashboard_panels", "capabilities"): + if reserved in cls.__dict__: + raise TypeError( + f"{cls.__name__} must not declare {reserved!r}: it is derived " + f"from what the adapter implements (see docs/adding-a-solver.md)." + ) + + def _provides(self, method_name: str) -> bool: + """True when the adapter defines its own version instead of the empty base default.""" + return getattr(type(self), method_name) is not getattr(SolverAdapterBase, method_name) + + @property + def capabilities(self) -> frozenset[str]: + """What this adapter can actually do, derived from what it provides. + + Two forms, chosen per capability according to what the UI consumes: + a redefined method, or an existing declaration that is no longer empty. + """ + caps: set[str] = set() + if self._provides("find_residuals_files"): + caps.add(CAPABILITY_RESIDUALS) + if self._provides("list_probe_files"): + caps.add(CAPABILITY_PROBES) + if self._provides("build_restart_args"): + caps.add(CAPABILITY_RESTART) + if self._provides("gui_argv"): + caps.add(CAPABILITY_GUI) + if self.compare_kinds: + caps.add(CAPABILITY_COMPARE) + if self.performance_columns: + caps.add(CAPABILITY_PERFORMANCE) + if self.control_actions: + caps.add(CAPABILITY_CONTROL) + return frozenset(caps) + + @property + def dashboard_panels(self) -> tuple[str, ...]: + """Feedable panels, in ALL_DASHBOARD_PANELS display order.""" + caps = self.capabilities + return tuple(panel for panel in ALL_DASHBOARD_PANELS if panel in ALWAYS_ON_PANELS or panel in caps) + @property def default_compare_kind(self) -> str: """The first declared compare kind, so CLI/API defaults follow the UI order.""" diff --git a/tests/unit/test_solvers.py b/tests/unit/test_solvers.py index a0413a6..339e683 100644 --- a/tests/unit/test_solvers.py +++ b/tests/unit/test_solvers.py @@ -293,15 +293,6 @@ def test_code_saturne_performance_fields_derive_from_columns() -> None: assert {c.kind for c in adapter.performance_columns} <= {"time", "int", "float", "text"} -def test_adapter_base_defaults_expose_all_dashboard_panels() -> None: - from csauto.solvers.base import ALL_DASHBOARD_PANELS - from csauto.solvers.stub import StubAdapter - - adapter = StubAdapter() - assert adapter.dashboard_panels == ALL_DASHBOARD_PANELS - assert adapter.performance_fields == () - - def test_default_compare_kind_derives_from_first_compare_kind() -> None: from csauto.solvers.code_saturne import CodeSaturneAdapter from csauto.solvers.stub import StubAdapter @@ -317,3 +308,69 @@ def test_code_aster_declares_doe_row_compare_kind() -> None: adapter = CodeAsterAdapter() assert adapter.compare_kinds == (CompareKind("doe_row.csv", "doe_row.csv"),) assert adapter.default_compare_kind == "doe_row.csv" + + +def test_code_saturne_exposes_every_capability_and_panel() -> None: + """Regression guard: the production solver must not lose anything.""" + from csauto.solvers.base import ALL_DASHBOARD_PANELS + from csauto.solvers.code_saturne import CodeSaturneAdapter + + adapter = CodeSaturneAdapter() + assert adapter.capabilities == frozenset( + {"residuals", "probes", "performance", "compare", "control", "restart", "gui"} + ) + assert adapter.dashboard_panels == ALL_DASHBOARD_PANELS + + +def test_code_aster_capabilities_are_limited_to_compare() -> None: + from csauto.solvers.code_aster import CodeAsterAdapter + + adapter = CodeAsterAdapter() + assert adapter.capabilities == frozenset({"compare"}) + assert adapter.dashboard_panels == ("status", "compare", "tail", "errors") + + +def test_stub_capabilities_cover_compare_and_control() -> None: + from csauto.solvers.stub import StubAdapter + + adapter = StubAdapter() + assert adapter.capabilities == frozenset({"compare", "control"}) + assert adapter.dashboard_panels == ("status", "compare", "tail", "errors") + assert adapter.performance_fields == () + + +def test_always_on_panels_are_present_for_every_adapter() -> None: + from csauto.solvers import available_solvers, get_solver_adapter + from csauto.solvers.base import ALWAYS_ON_PANELS + + for name in available_solvers(): + panels = get_solver_adapter(name).dashboard_panels + assert set(ALWAYS_ON_PANELS) <= set(panels), name + + +def test_dashboard_panels_follow_declaration_order() -> None: + """Panels are ordered by ALL_DASHBOARD_PANELS, not by capability name.""" + from csauto.solvers.base import ALL_DASHBOARD_PANELS + from csauto.solvers.stub import StubAdapter + + panels = StubAdapter().dashboard_panels + assert list(panels) == [p for p in ALL_DASHBOARD_PANELS if p in panels] + + +def test_adapter_cannot_declare_dashboard_panels() -> None: + """A class attribute would shadow the derived property and silently reintroduce the bug.""" + from csauto.solvers.base import SolverAdapterBase + + with pytest.raises(TypeError, match="must not declare 'dashboard_panels'"): + + class BadAdapter(SolverAdapterBase): + dashboard_panels = ("status",) + + +def test_adapter_cannot_declare_capabilities() -> None: + from csauto.solvers.base import SolverAdapterBase + + with pytest.raises(TypeError, match="must not declare 'capabilities'"): + + class BadAdapter(SolverAdapterBase): + capabilities = frozenset({"residuals"}) From 06535bf9eb3e22008996774143abb7bb35c3a953 Mon Sep 17 00:00:00 2001 From: florian-simvia Date: Fri, 11 Sep 2026 14:24:42 +0200 Subject: [PATCH 3/9] test: assert analytics parsers imply their declarations Deriving the performance capability from performance_columns makes a parser without columns silently dead. Same for apply_control without control_actions. --- tests/unit/test_solvers.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/unit/test_solvers.py b/tests/unit/test_solvers.py index 339e683..eb6a949 100644 --- a/tests/unit/test_solvers.py +++ b/tests/unit/test_solvers.py @@ -374,3 +374,23 @@ def test_adapter_cannot_declare_capabilities() -> None: class BadAdapter(SolverAdapterBase): capabilities = frozenset({"residuals"}) + + +def test_performance_parser_implies_declared_columns() -> None: + """A parser without columns is dead code: the UI needs columns to draw the table.""" + from csauto.solvers import available_solvers, get_solver_adapter + + for name in available_solvers(): + adapter = get_solver_adapter(name) + if adapter._provides("parse_performance"): + assert adapter.performance_columns, f"{name} parses performance but declares no columns" + + +def test_control_implementation_implies_declared_actions() -> None: + """apply_control without control_actions can never be reached: every route checks the set first.""" + from csauto.solvers import available_solvers, get_solver_adapter + + for name in available_solvers(): + adapter = get_solver_adapter(name) + if adapter._provides("apply_control"): + assert adapter.control_actions, f"{name} implements apply_control but declares no actions" From 1f29965942f40daf834d438ec8b6f107ece0cad5 Mon Sep 17 00:00:00 2001 From: florian-simvia Date: Fri, 11 Sep 2026 14:27:03 +0200 Subject: [PATCH 4/9] feat: expose solver capabilities and control actions in /api/app_config capabilities gates the action buttons, control_actions gates the individual entries of the More menu. --- csauto/fastapi_routes/observability.py | 4 +++ tests/web/test_api.py | 38 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/csauto/fastapi_routes/observability.py b/csauto/fastapi_routes/observability.py index c2e26d6..d4ffab1 100644 --- a/csauto/fastapi_routes/observability.py +++ b/csauto/fastapi_routes/observability.py @@ -83,8 +83,10 @@ class CompareKindModel(BaseModel): class AppConfigModel(BaseModel): solver: str panels: list[str] + capabilities: list[str] compare_kinds: list[CompareKindModel] error_files: list[str] + control_actions: list[str] class RecentErrorItemModel(BaseModel): case_id: str @@ -144,8 +146,10 @@ def api_app_config( return { "solver": ctx.adapter.name, "panels": list(ctx.adapter.dashboard_panels), + "capabilities": sorted(ctx.adapter.capabilities), "compare_kinds": [{"value": kind.value, "label": kind.label} for kind in ctx.adapter.compare_kinds], "error_files": list(ctx.adapter.anomaly_file_names), + "control_actions": sorted(ctx.adapter.control_actions), } @app.get("/api/restart_origin", response_model=RestartOriginResponse) diff --git a/tests/web/test_api.py b/tests/web/test_api.py index 0651957..47aa937 100644 --- a/tests/web/test_api.py +++ b/tests/web/test_api.py @@ -1228,3 +1228,41 @@ def test_api_app_config_exposes_solver_and_panels(web_env) -> None: ] assert data["compare_kinds"][0]["label"] == "setup.xml" assert data["error_files"] == ["csauto.stderr", "run_solver.log", "listing", "csauto.stdout"] + assert data["capabilities"] == [ + "compare", + "control", + "gui", + "performance", + "probes", + "residuals", + "restart", + ] + assert data["control_actions"] == ["checkpoint", "extend", "flush", "stop"] + + +def test_api_app_config_reflects_a_solver_without_analytics( + runs_dir: Path, + case_factory, + registry_factory, +) -> None: + global _ACTIVE_TEST_CLIENT + + case_dir = case_factory(runs_dir, "case0001") + registry_factory(runs_dir, "case0001", case_dir, status="PREPARED") + base_url, thread, httpd = _start_server(runs_dir, solver="code_aster") + try: + status, body = _http_get(f"{base_url}/api/app_config") + assert status == 200 + data = json.loads(body) + assert data["solver"] == "code_aster" + assert data["capabilities"] == ["compare"] + assert data["control_actions"] == [] + assert "residuals" not in data["panels"] + assert "probes" not in data["panels"] + assert "performance" not in data["panels"] + assert data["panels"] == ["status", "compare", "tail", "errors"] + finally: + httpd.shutdown() + httpd.server_close() + thread.join(timeout=2) + _ACTIVE_TEST_CLIENT = None From 7f9ae546c1d659e4b7f5c21690ecf02d685b4a30 Mon Sep 17 00:00:00 2001 From: florian-simvia Date: Fri, 11 Sep 2026 14:27:55 +0200 Subject: [PATCH 5/9] fix: refuse unsupported solver actions with a clear 400 Restart on a solver without restart support returned 500 Launch error, a client error reported as a server fault. Control returned the unreadable 'Invalid action (expected one of [])'. --- csauto/fastapi_routes/actions.py | 4 +++ csauto/fastapi_routes/common.py | 8 +++++ tests/web/test_api.py | 56 ++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) diff --git a/csauto/fastapi_routes/actions.py b/csauto/fastapi_routes/actions.py index 8d9b1a6..7f7d35b 100644 --- a/csauto/fastapi_routes/actions.py +++ b/csauto/fastapi_routes/actions.py @@ -319,6 +319,7 @@ def api_control_case( authorization: str | None = Header(default=None), ) -> dict[str, str]: ctx.require_auth(x_csauto_token, authorization) + ctx.require_capability("control") if payload.action not in ctx.adapter.control_actions: raise ctx.http_exception_cls( status_code=400, detail=f"Invalid action (expected one of {sorted(ctx.adapter.control_actions)})" @@ -380,6 +381,7 @@ def api_open_gui( authorization: str | None = Header(default=None), ) -> dict[str, str]: ctx.require_auth(x_csauto_token, authorization) + ctx.require_capability("gui") case_id, case_dir = ctx.validated_case_dir(payload.case) if not os.environ.get("DISPLAY"): raise ctx.http_exception_cls(status_code=500, detail="DISPLAY not set on server") @@ -448,6 +450,8 @@ def api_run_case( payload, ctx.http_exception_cls, ) + if restart: + ctx.require_capability("restart") try: runtime_selection = resolve_runtime( diff --git a/csauto/fastapi_routes/common.py b/csauto/fastapi_routes/common.py index bafa412..e2a818e 100644 --- a/csauto/fastapi_routes/common.py +++ b/csauto/fastapi_routes/common.py @@ -146,6 +146,14 @@ def require_auth(self, x_csauto_token: str | None = None, authorization: str | N if request_token(headers) != self.api_token: raise self.http_exception_cls(status_code=401, detail="Unauthorized") + def require_capability(self, capability: str) -> None: + """Refuse an action the selected solver cannot perform, before doing any work.""" + if capability not in self.adapter.capabilities: + raise self.http_exception_cls( + status_code=400, + detail=f"Solver {self.adapter.name!r} does not support {capability}", + ) + def validate_case(self, case: object) -> str: try: return validate_case_id(case, self.runs_dir, self.runs_root) diff --git a/tests/web/test_api.py b/tests/web/test_api.py index 47aa937..8cbc934 100644 --- a/tests/web/test_api.py +++ b/tests/web/test_api.py @@ -1266,3 +1266,59 @@ def test_api_app_config_reflects_a_solver_without_analytics( httpd.server_close() thread.join(timeout=2) _ACTIVE_TEST_CLIENT = None + + +@pytest.fixture() +def aster_env(runs_dir: Path, case_factory, registry_factory): + """A server backed by a solver with no control, restart or GUI capability.""" + global _ACTIVE_TEST_CLIENT + + case_dir = case_factory(runs_dir, "case0001") + registry_factory(runs_dir, "case0001", case_dir, status="RUNNING") + base_url, thread, httpd = _start_server(runs_dir, solver="code_aster") + try: + yield base_url, case_dir + finally: + httpd.shutdown() + httpd.server_close() + thread.join(timeout=2) + _ACTIVE_TEST_CLIENT = None + + +def test_control_case_rejected_when_solver_has_no_control(aster_env) -> None: + base_url, _case_dir = aster_env + with pytest.raises(HTTPError) as excinfo: + _http_post(f"{base_url}/api/control_case", {"cases": ["case0001"], "action": "stop"}) + assert excinfo.value.code == 400 + assert "does not support control" in excinfo.value.read().decode("utf-8") + + +def test_open_gui_rejected_when_solver_has_no_gui(aster_env) -> None: + base_url, _case_dir = aster_env + with pytest.raises(HTTPError) as excinfo: + _http_post(f"{base_url}/api/open_gui", {"case": "case0001"}) + assert excinfo.value.code == 400 + assert "does not support gui" in excinfo.value.read().decode("utf-8") + + +def test_restart_rejected_when_solver_has_no_restart(aster_env) -> None: + """Previously a 500: a client error reported as a server fault.""" + base_url, _case_dir = aster_env + with pytest.raises(HTTPError) as excinfo: + _http_post( + f"{base_url}/api/run_case", + {"cases": ["case0001"], "n": 1, "nt": 1, "restart": True}, + ) + assert excinfo.value.code == 400 + assert "does not support restart" in excinfo.value.read().decode("utf-8") + + +def test_run_without_restart_is_not_blocked_by_the_restart_guard(aster_env) -> None: + """The guard must only fire when a restart was actually requested.""" + base_url, _case_dir = aster_env + try: + _http_post(f"{base_url}/api/run_case", {"cases": ["case0001"], "n": 1, "nt": 1}) + except HTTPError as exc: + # A launch failure (no runtime available in CI) is acceptable here; + # a capability rejection is not. + assert "does not support restart" not in exc.read().decode("utf-8") From c540e90fecff8c5202e66edd34d7a50dc7cb43df Mon Sep 17 00:00:00 2001 From: florian-simvia Date: Fri, 11 Sep 2026 14:28:17 +0200 Subject: [PATCH 6/9] fix: name the solver when it supports no control action 'expected one of []' did not tell the user the solver was the problem. --- csauto/control.py | 2 ++ tests/unit/test_control.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/csauto/control.py b/csauto/control.py index 5022468..484b46f 100644 --- a/csauto/control.py +++ b/csauto/control.py @@ -29,6 +29,8 @@ def control_case( solver-specific and applied by the adapter. """ adapter = adapter or _default_adapter() + if not adapter.control_actions: + raise ValueError(f"Solver {adapter.name!r} does not support live control.") if action not in adapter.control_actions: raise ValueError(f"Invalid control action: {action!r} (expected one of {sorted(adapter.control_actions)})") diff --git a/tests/unit/test_control.py b/tests/unit/test_control.py index 9c0eca0..75535bd 100644 --- a/tests/unit/test_control.py +++ b/tests/unit/test_control.py @@ -224,3 +224,13 @@ def test_control_case_logs_history(runs_dir: Path, case_factory) -> None: entry = json.loads(history_path.read_text(encoding="utf-8").splitlines()[-1]) assert entry["action"] == "control_stop" assert entry["source"] == "cli" + + +def test_control_case_reports_the_solver_when_it_supports_nothing(runs_dir: Path, case_factory) -> None: + from csauto.solvers.code_aster import CodeAsterAdapter + + case_dir = case_factory(runs_dir, "case0001") + save_registry(runs_dir, {"case0001": {"case_id": "case0001", "path": str(case_dir), "status": "RUNNING"}}) + + with pytest.raises(ValueError, match="does not support live control"): + control_case(runs_dir, "case0001", "stop", adapter=CodeAsterAdapter()) From 76ce1ea11474dcf24541e1905e24b5875721db30 Mon Sep 17 00:00:00 2001 From: florian-simvia Date: Fri, 11 Sep 2026 14:28:55 +0200 Subject: [PATCH 7/9] feat: report derived panels and capabilities in doctor The derivation is implicit by design; this is where an adapter author sees its result without reading base.py. --- csauto/maintenance.py | 4 ++++ tests/unit/test_maintenance.py | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/csauto/maintenance.py b/csauto/maintenance.py index b68a5c9..5c20943 100644 --- a/csauto/maintenance.py +++ b/csauto/maintenance.py @@ -87,6 +87,10 @@ def add(level: str, message: str) -> None: ) ) + add("ok", f"solver {adapter.name}: panels {', '.join(adapter.dashboard_panels)}") + capability_names = sorted(adapter.capabilities) + add("ok", f"solver {adapter.name}: capabilities {', '.join(capability_names) if capability_names else 'none'}") + solver_bin_name = adapter.native_bin_name _rt = (runtime or "auto").strip().lower() # Override legacy flags with explicit runtime when provided diff --git a/tests/unit/test_maintenance.py b/tests/unit/test_maintenance.py index 1494279..746937c 100644 --- a/tests/unit/test_maintenance.py +++ b/tests/unit/test_maintenance.py @@ -478,3 +478,41 @@ def test_cleanup_runs_unlinks_symlink_without_following_target(tmp_path: Path) - assert real_resu.is_dir() assert sentinel.read_text(encoding="utf-8") == "data" assert report.resu_removed == 1 + + +def test_doctor_reports_derived_panels_and_capabilities(tmp_path: Path) -> None: + from csauto.solvers.code_aster import CodeAsterAdapter + + runs_dir = _make_runs_dir(tmp_path) + _add_case(runs_dir, "case0001", with_setup=False) + + items = run_doctor(runs_dir, check_setup=False, check_display=False, adapter=CodeAsterAdapter()) + assert _has_item(items, "ok", "solver code_aster: panels status, compare, tail, errors") + assert _has_item(items, "ok", "solver code_aster: capabilities compare") + + +def test_doctor_says_none_when_the_solver_has_no_capability(tmp_path: Path) -> None: + from csauto.solvers.base import SolverAdapterBase + + class BareAdapter(SolverAdapterBase): + name = "bare" + native_bin_name = "bare" + container_bin_name = "bare" + container_root = "/bare" + default_docker_image = "" + results_dirname = "OUT" + + def run_argv(self, case_path, nprocs, nt, run_args=None): + return [] + + def detect_outcome(self, case_dir, start_time=None): + return None + + def find_setup_file(self, template_dir): + raise FileNotFoundError(template_dir) + + runs_dir = _make_runs_dir(tmp_path) + _add_case(runs_dir, "case0001", with_setup=False) + + items = run_doctor(runs_dir, check_setup=False, check_display=False, adapter=BareAdapter()) + assert _has_item(items, "ok", "solver bare: capabilities none") From fa0cc15dc2a3b061d249195e6b9b106ce062fe39 Mon Sep 17 00:00:00 2001 From: florian-simvia Date: Fri, 11 Sep 2026 14:40:57 +0200 Subject: [PATCH 8/9] feat: hide dashboard actions the solver cannot perform Restart, Stop, the control directives and the Open GUI column were gated on case status only, so they were offered for solvers that reject them. --- .../dist/_app/immutable/chunks/BI00lc_u.js | 1 + .../dist/_app/immutable/chunks/eeJ2SmtH.js | 1 - .../{app.BcimqTdT.js => app.Cn2ZzZiT.js} | 4 +- .../_app/immutable/entry/start.Ca27w5R7.js | 1 + .../_app/immutable/entry/start.Cnn_J3kK.js | 1 - .../nodes/{1.CqrNlNqJ.js => 1.DU6Ijmpv.js} | 2 +- .../dist/_app/immutable/nodes/2.Cadsvez-.js | 1190 ----------------- .../dist/_app/immutable/nodes/2.DQxkgq4x.js | 1190 +++++++++++++++++ frontend/dist/_app/version.json | 2 +- frontend/dist/index.html | 12 +- frontend/src/lib/api/types.ts | 2 + .../lib/components/status/StatusCard.svelte | 88 +- .../lib/components/status/StatusTable.svelte | 7 +- frontend/src/lib/stores/appConfig.svelte.ts | 18 + 14 files changed, 1280 insertions(+), 1239 deletions(-) create mode 100644 frontend/dist/_app/immutable/chunks/BI00lc_u.js delete mode 100644 frontend/dist/_app/immutable/chunks/eeJ2SmtH.js rename frontend/dist/_app/immutable/entry/{app.BcimqTdT.js => app.Cn2ZzZiT.js} (94%) create mode 100644 frontend/dist/_app/immutable/entry/start.Ca27w5R7.js delete mode 100644 frontend/dist/_app/immutable/entry/start.Cnn_J3kK.js rename frontend/dist/_app/immutable/nodes/{1.CqrNlNqJ.js => 1.DU6Ijmpv.js} (78%) delete mode 100644 frontend/dist/_app/immutable/nodes/2.Cadsvez-.js create mode 100644 frontend/dist/_app/immutable/nodes/2.DQxkgq4x.js diff --git a/frontend/dist/_app/immutable/chunks/BI00lc_u.js b/frontend/dist/_app/immutable/chunks/BI00lc_u.js new file mode 100644 index 0000000..4b090d1 --- /dev/null +++ b/frontend/dist/_app/immutable/chunks/BI00lc_u.js @@ -0,0 +1 @@ +var te=t=>{throw TypeError(t)};var je=(t,e,n)=>e.has(t)||te("Cannot "+n);var v=(t,e,n)=>(je(t,e,"read from private field"),n?n.call(t):e.get(t)),U=(t,e,n)=>e.has(t)?te("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n);import{bf as Ut,bg as Ne,aK as T,o as I,$ as O,aJ as mt,bh as qe}from"./VJhVTb1A.js";import{o as ee}from"./Cz6m6K8p.js";const B=[];function Dt(t,e=Ut){let n=null;const a=new Set;function r(o){if(Ne(t,o)&&(t=o,n)){const l=!B.length;for(const c of a)c[1](),B.push(c,t);if(l){for(let c=0;c{a.delete(c),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:s}}class Vt{constructor(e,n){this.status=e,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}}class Kt{constructor(e,n){this.status=e,this.location=n}}class Bt extends Error{constructor(e,n,a){super(a),this.status=e,this.text=n}}new URL("sveltekit-internal://");function De(t,e){return t==="/"||e==="ignore"?t:e==="never"?t.endsWith("/")?t.slice(0,-1):t:e==="always"&&!t.endsWith("/")?t+"/":t}function Ve(t){return t.split("%25").map(decodeURI).join("%25")}function Ke(t){for(const e in t)t[e]=decodeURIComponent(t[e]);return t}function Tt({href:t}){return t.split("#")[0]}function Be(...t){let e=5381;for(const n of t)if(typeof n=="string"){let a=n.length;for(;a;)e=e*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)e=e*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(e>>>0).toString(36)}new TextEncoder;new TextDecoder;function Me(t){const e=atob(t),n=new Uint8Array(e.length);for(let a=0;a((t instanceof Request?t.method:(e==null?void 0:e.method)||"GET")!=="GET"&&H.delete(Mt(t)),ze(t,e));const H=new Map;function Fe(t,e){const n=Mt(t,e),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const s=a.getAttribute("data-ttl");return s&&H.set(n,{body:r,init:i,ttl:1e3*Number(s)}),a.getAttribute("data-b64")!==null&&(r=Me(r)),Promise.resolve(new Response(r,i))}return window.fetch(t,e)}function Ge(t,e,n){if(H.size>0){const a=Mt(t,n),r=H.get(a);if(r){if(performance.now(){const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return e.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return e.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const s=a.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return It(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return It(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=We.exec(l),[,u,w,p,f]=d;return e.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&s[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return It(l)}).join("")}).join("")}/?$`),params:e}}function Ye(t){return t!==""&&!/^\([^)]+\)$/.test(t)}function He(t){return t.slice(1).split("/").filter(Ye)}function Xe(t,e,n){const a={},r=t.slice(1),i=r.filter(o=>o!==void 0);let s=0;for(let o=0;od).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=e[o+1],u=r[o+1];d&&!d.rest&&d.optional&&u&&l.chained&&(s=0),!d&&!u&&Object.keys(a).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return a}function It(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Qe({nodes:t,server_loads:e,dictionary:n,matchers:a}){const r=new Set(e);return Object.entries(n).map(([o,[l,c,d]])=>{const{pattern:u,params:w}=Je(o),p={id:o,exec:f=>{const m=u.exec(f);if(m)return Xe(m,w,a)},errors:[1,...d||[]].map(f=>t[f]),layouts:[0,...c||[]].map(s),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(o){const l=o<0;return l&&(o=~o),[l,t[o]]}function s(o){return o===void 0?o:[r.has(o),t[o]]}}function ge(t,e=JSON.parse){try{return e(sessionStorage[t])}catch{}}function ne(t,e,n=JSON.stringify){const a=n(e);try{sessionStorage[t]=a}catch{}}var fe;const A=((fe=globalThis.__sveltekit_cs5p4g)==null?void 0:fe.base)??"";var ue;const Ze=((ue=globalThis.__sveltekit_cs5p4g)==null?void 0:ue.assets)??A??"",tn="1789130391568",me="sveltekit:snapshot",_e="sveltekit:scroll",we="sveltekit:states",en="sveltekit:pageurl",z="sveltekit:history",Q="sveltekit:navigation",q={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},zt=location.origin;function ve(t){if(t instanceof URL)return t;let e=document.baseURI;if(!e){const n=document.getElementsByTagName("base");e=n.length?n[0].href:document.URL}return new URL(t,e)}function V(){return{x:pageXOffset,y:pageYOffset}}function M(t,e){return t.getAttribute(`data-sveltekit-${e}`)}const re={...q,"":q.hover};function ye(t){let e=t.assignedSlot??t.parentNode;return(e==null?void 0:e.nodeType)===11&&(e=e.host),e}function be(t,e){for(;t&&t!==e;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=ye(t)}}function $t(t,e,n){let a;try{if(a=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";a.hash=`#${o}${a.hash}`}}catch{}const r=t instanceof SVGAElement?t.target.baseVal:t.target,i=!a||!!r||Rt(a,e,n)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),s=(a==null?void 0:a.origin)===zt&&t.hasAttribute("download");return{url:a,external:i,target:r,download:s}}function _t(t){let e=null,n=null,a=null,r=null,i=null,s=null,o=t;for(;o&&o!==document.documentElement;)a===null&&(a=M(o,"preload-code")),r===null&&(r=M(o,"preload-data")),e===null&&(e=M(o,"keepfocus")),n===null&&(n=M(o,"noscroll")),i===null&&(i=M(o,"reload")),s===null&&(s=M(o,"replacestate")),o=ye(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:re[a??"off"],preload_data:re[r??"off"],keepfocus:l(e),noscroll:l(n),reload:l(i),replace_state:l(s)}}function ae(t){const e=Dt(t);let n=!0;function a(){n=!0,e.update(s=>s)}function r(s){n=!1,e.set(s)}function i(s){let o;return e.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:a,set:r,subscribe:i}}const ke={v:()=>{}};function nn(){const{set:t,subscribe:e}=Dt(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${Ze}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const s=(await r.json()).version!==tn;return s&&(t(!0),ke.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:e,check:a}}function Rt(t,e,n){return t.origin!==zt||!t.pathname.startsWith(e)?!0:n?t.pathname!==location.pathname:!1}function On(t){}const Se=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Se];const rn=new Set([...Se]);[...rn];function an(t){return t.filter(e=>e!=null)}function Ft(t){return t instanceof Vt||t instanceof Bt?t.status:500}function on(t){return t instanceof Bt?t.text:"Internal Error"}let R,Z,Ot;const sn=ee.toString().includes("$$")||/function \w+\(\) \{\}/.test(ee.toString()),oe="a:";var at,ot,st,it,lt,ct,ft,ut,de,dt,he,ht,pe;sn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(oe)},Z={current:null},Ot={current:!1}):(R=new(de=class{constructor(){U(this,at,T({}));U(this,ot,T(null));U(this,st,T(null));U(this,it,T({}));U(this,lt,T({id:null}));U(this,ct,T({}));U(this,ft,T(-1));U(this,ut,T(new URL(oe)))}get data(){return I(v(this,at))}set data(e){O(v(this,at),e)}get form(){return I(v(this,ot))}set form(e){O(v(this,ot),e)}get error(){return I(v(this,st))}set error(e){O(v(this,st),e)}get params(){return I(v(this,it))}set params(e){O(v(this,it),e)}get route(){return I(v(this,lt))}set route(e){O(v(this,lt),e)}get state(){return I(v(this,ct))}set state(e){O(v(this,ct),e)}get status(){return I(v(this,ft))}set status(e){O(v(this,ft),e)}get url(){return I(v(this,ut))}set url(e){O(v(this,ut),e)}},at=new WeakMap,ot=new WeakMap,st=new WeakMap,it=new WeakMap,lt=new WeakMap,ct=new WeakMap,ft=new WeakMap,ut=new WeakMap,de),Z=new(he=class{constructor(){U(this,dt,T(null))}get current(){return I(v(this,dt))}set current(e){O(v(this,dt),e)}},dt=new WeakMap,he),Ot=new(pe=class{constructor(){U(this,ht,T(!1))}get current(){return I(v(this,ht))}set current(e){O(v(this,ht),e)}},ht=new WeakMap,pe),ke.v=()=>Ot.current=!0);function ln(t){Object.assign(R,t)}const cn=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const j=ge(_e)??{},tt=ge(me)??{},C={url:ae({}),page:ae({}),navigating:Dt(null),updated:nn()};function Gt(t){j[t]=V()}function fn(t,e){let n=t+1;for(;j[n];)delete j[n],n+=1;for(n=e+1;tt[n];)delete tt[n],n+=1}function et(t,e=!1){return e?location.replace(t.href):location.href=t.href,new Promise(()=>{})}async function Ee(){if("serviceWorker"in navigator){const t=await navigator.serviceWorker.getRegistration(A||"/");t&&await t.update()}}function se(){}let Wt,Ct,wt,P,jt,S;const vt=[],yt=[];let y=null;function Nt(){var t;(t=y==null?void 0:y.fork)==null||t.then(e=>e==null?void 0:e.discard()),y=null}const gt=new Map,Re=new Set,un=new Set,X=new Set;let _={branch:[],error:null,url:null},xe=!1,bt=!1,ie=!0,nt=!1,Y=!1,Le=!1,Jt=!1,Ae,k,L,D;const kt=new Set,le=new Map;async function jn(t,e,n){var i,s,o,l,c;(i=globalThis.__sveltekit_cs5p4g)!=null&&i.data&&globalThis.__sveltekit_cs5p4g.data,document.URL!==location.href&&(location.href=location.href),S=t,await((o=(s=t.hooks).init)==null?void 0:o.call(s)),Wt=Qe(t),P=document.documentElement,jt=e,Ct=t.nodes[0],wt=t.nodes[1],Ct(),wt(),k=(l=history.state)==null?void 0:l[z],L=(c=history.state)==null?void 0:c[Q],k||(k=L=Date.now(),history.replaceState({...history.state,[z]:k,[Q]:L},""));const a=j[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Rn(jt,n)):(await F({type:"enter",url:ve(S.hash?An(new URL(location.href)):location.href),replace_state:!0}),r()),En()}function dn(){vt.length=0,Jt=!1}function Ue(t){yt.some(e=>e==null?void 0:e.snapshot)&&(tt[t]=yt.map(e=>{var n;return(n=e==null?void 0:e.snapshot)==null?void 0:n.capture()}))}function Te(t){var e;(e=tt[t])==null||e.forEach((n,a)=>{var r,i;(i=(r=yt[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function ce(){Gt(k),ne(_e,j),Ue(L),ne(me,tt)}async function hn(t,e,n,a){let r;e.invalidateAll&&Nt(),await F({type:"goto",url:ve(t),keepfocus:e.keepFocus,noscroll:e.noScroll,replace_state:e.replaceState,state:e.state,redirect_count:n,nav_token:a,accept:()=>{e.invalidateAll&&(Jt=!0,r=[...le.keys()]),e.invalidate&&e.invalidate.forEach(Sn)}}),e.invalidateAll&&mt().then(mt).then(()=>{le.forEach(({resource:i},s)=>{var o;r!=null&&r.includes(s)&&((o=i.refresh)==null||o.call(i))})})}async function pn(t){if(t.id!==(y==null?void 0:y.id)){Nt();const e={};kt.add(e),y={id:t.id,token:e,promise:Oe({...t,preload:e}).then(n=>(kt.delete(e),n.type==="loaded"&&n.state.error&&Nt(),n)),fork:null}}return y.promise}async function Pt(t){var n;const e=(n=await xt(t,!1))==null?void 0:n.route;e&&await Promise.all([...e.layouts,e.leaf].filter(Boolean).map(a=>a[1]()))}async function Ie(t,e,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...t.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,t.props.page),Ae=new S.root({target:e,props:{...t.props,stores:C,components:yt},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),Te(L),n){const s={from:null,to:{...a,scroll:j[k]??V()},willUnload:!1,type:"enter",complete:Promise.resolve()};X.forEach(o=>o(s))}bt=!0}async function St({url:t,params:e,branch:n,errors:a,status:r,error:i,route:s,form:o}){let l="never";if(A&&(t.pathname===A||t.pathname===A+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);t.pathname=De(t.pathname,l),t.search=t.search;const c={type:"loaded",state:{url:t,params:e,branch:n,error:i,route:s},props:{constructors:an(n).map(f=>f.node.component),page:Zt(R)}};o!==void 0&&(c.props.form=o);let d={},u=!R,w=0;for(let f=0;fo(new URL(s))))return!0;return!1}function Ht(t,e){return(t==null?void 0:t.type)==="data"?t:(t==null?void 0:t.type)==="skip"?e??null:null}function _n(t,e){if(!t)return new Set(e.searchParams.keys());const n=new Set([...t.searchParams.keys(),...e.searchParams.keys()]);for(const a of n){const r=t.searchParams.getAll(a),i=e.searchParams.getAll(a);r.every(s=>i.includes(s))&&i.every(s=>r.includes(s))&&n.delete(a)}return n}function wn({error:t,url:e,route:n,params:a}){return{type:"loaded",state:{error:t,url:e,route:n,params:a,branch:[]},props:{page:Zt(R),constructors:[]}}}async function Oe({id:t,invalidating:e,url:n,params:a,route:r,preload:i}){if((y==null?void 0:y.id)===t)return kt.delete(y.token),y.promise;const{errors:s,layouts:o,leaf:l}=r,c=[...o,l];s.forEach(h=>h==null?void 0:h().catch(()=>{})),c.forEach(h=>h==null?void 0:h[1]().catch(()=>{}));const d=_.url?t!==Et(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=_n(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var $;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!mn(p,u,d,w,($=b.universal)==null?void 0:$.uses,a)?b:(p=!0,Yt({loader:h[1],url:n,params:a,route:r,parent:async()=>{var pt;const N={};for(let K=0;K{});const m=[];for(let h=0;hPromise.resolve({}),server_data_node:Ht(i)}),o={node:await wt(),loader:wt,universal:null,server:null,data:null};return St({url:n,params:r,branch:[s,o],status:t,error:e,errors:[],route:null})}catch(s){if(s instanceof Kt)return hn(new URL(s.location,location.href),{},0);throw s}}async function yn(t){const e=t.href;if(gt.has(e))return gt.get(e);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(t),fetch:async(i,s)=>gn(i,s,t).promise})??t;if(typeof r=="string"){const i=new URL(t);S.hash?i.hash=r:i.pathname=r,r=i}return r})();gt.set(e,a),n=await a}catch{gt.delete(e);return}return n}async function xt(t,e){if(t&&!Rt(t,A,S.hash)){const n=await yn(t);if(!n)return;const a=bn(n);for(const r of Wt){const i=r.exec(a);if(i)return{id:Et(t),invalidating:e,route:r,params:Ke(i),url:t}}}}function bn(t){return Ve(S.hash?t.hash.replace(/^#/,"").replace(/[?#].+/,""):t.pathname.slice(A.length))||"/"}function Et(t){return(S.hash?t.hash.replace(/^#/,""):t.pathname)+t.search}function Pe({url:t,type:e,intent:n,delta:a,event:r,scroll:i}){let s=!1;const o=Qt(_,n,t,e,i??null);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return nt||Re.forEach(c=>c(l)),s?null:o}async function F({type:t,url:e,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=se,block:d=se,event:u}){var K;const w=D;D=l;const p=await xt(e,!1),f=t==="enter"?Qt(_,p,e,t):Pe({url:e,type:t,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),D===l&&(D=w);return}const m=k,h=L;c(),nt=!0,bt&&f.navigation.type!=="enter"&&C.navigating.set(Z.current=f.navigation);let g=p&&await Oe(p);if(!g){if(Rt(e,A,S.hash))return await et(e,i);g=await $e(e,{id:null},await rt(new Bt(404,"Not Found",`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404,i)}if(e=(p==null?void 0:p.url)||e,D!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(o<20){await F({type:t,url:new URL(g.location,e),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),f.fulfil(void 0);return}g=await Xt({status:500,error:await rt(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}})}else g.props.page.status>=400&&await C.updated.check()&&(await Ee(),await et(e,i));if(dn(),Gt(m),Ue(h),g.props.page.url.pathname!==e.pathname&&(e.pathname=g.props.page.url.pathname),s=n?n.state:s,!n){const E=i?0:1,G={[z]:k+=E,[Q]:L+=E,[we]:s};(i?history.replaceState:history.pushState).call(history,G,"",e),i||fn(k,L)}const b=p&&(y==null?void 0:y.id)===p.id?y.fork:null;y=null,g.props.page.state=s;let x;if(bt){const E=(await Promise.all(Array.from(un,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(E.length>0){let W=function(){E.forEach(At=>{X.delete(At)})};E.push(W),E.forEach(At=>{X.add(At)})}const G=f.navigation.to;_={...g.state,nav:{params:G.params,route:G.route,url:G.url}},g.props.page&&(g.props.page.url=e);const Lt=b&&await b;Lt?x=Lt.commit():(J=null,Ae.$set(g.props),J&&Object.assign(g.props.page,J),ln(g.props.page),x=(K=qe)==null?void 0:K()),Le=!0}else await Ie(g,jt,!1);const{activeElement:$}=document;await x,await mt(),await mt();let N=null;if(ie){const E=n?n.scroll:r?V():null;E?scrollTo(E.x,E.y):(N=e.hash&&document.getElementById(Ce(e)))?N.scrollIntoView():scrollTo(0,0)}const pt=document.activeElement!==$&&document.activeElement!==document.body;!a&&!pt&&Ln(e,!N),ie=!0,g.props.page&&(J&&Object.assign(g.props.page,J),Object.assign(R,g.props.page)),nt=!1,t==="popstate"&&Te(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=V()),X.forEach(E=>E(f.navigation)),C.navigating.set(Z.current=null)}async function $e(t,e,n,a,r){return t.origin===zt&&t.pathname===location.pathname&&!xe?await Xt({status:a,error:n,url:t,route:e}):await et(t,r)}function kn(){let t,e={element:void 0,href:void 0},n;P.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(t),t=setTimeout(()=>{i(l,q.hover)},20)});function a(o){o.defaultPrevented||i(o.composedPath()[0],q.tap)}P.addEventListener("mousedown",a),P.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Pt(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(o,l){const c=be(o,P),d=c===e.element&&(c==null?void 0:c.href)===e.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=$t(c,A,S.hash);if(w||p)return;const f=_t(c),m=u&&Et(_.url)===Et(u);if(!(f.reload||m))if(l<=f.preload_data){e={element:c,href:c.href},n=q.tap;const h=await xt(u,!1);if(!h)return;pn(h)}else l<=f.preload_code&&(e={element:c,href:c.href},n=l,Pt(u))}function s(){r.disconnect();for(const o of P.querySelectorAll("a")){const{url:l,external:c,download:d}=$t(o,A,S.hash);if(c||d)continue;const u=_t(o);u.reload||(u.preload_code===q.viewport&&r.observe(o),u.preload_code===q.eager&&Pt(l))}}X.add(s),s()}function rt(t,e){if(t instanceof Vt)return t.body;const n=Ft(t),a=on(t);return S.hooks.handleError({error:t,event:e,status:n,message:a})??{message:a}}function Sn(t){if(typeof t=="function")vt.push(t);else{const{href:e}=new URL(t,location.href);vt.push(n=>n.href===e)}}function En(){var e;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(ce(),!nt){const r=Qt(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Re.forEach(s=>s(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ce()}),(e=navigator.connection)!=null&&e.saveData||kn(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=be(n.composedPath()[0],P);if(!a)return;const{url:r,external:i,target:s,download:o}=$t(a,A,S.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const l=_t(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===Tt(location);if(i||l.reload&&(!w||!u)){Pe({url:r,type:"link",event:n})?nt=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,Gt(k),t(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await F({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const o=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Rt(o,A,!1))return;const l=n.target,c=_t(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);o.search=new URLSearchParams(d).toString(),F({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!qt){if((a=n.state)!=null&&a[z]){const r=n.state[z];if(D={},r===k)return;const i=j[r],s=n.state[we]??{},o=new URL(n.state[en]??location.href),l=n.state[Q],c=_.url?Tt(location)===Tt(_.url):!1;if(l===L&&(Le||c)){s!==R.state&&(R.state=s),t(o),j[k]=V(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await F({type:"popstate",url:o,popped:{state:s,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:D,event:n})}else if(!Y){const r=new URL(location.href);t(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[z]:++k,[Q]:L},"",location.href))});for(const n of document.querySelectorAll("link"))cn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&C.navigating.set(Z.current=null)});function t(n){_.url=R.url=n,C.page.set(Zt(R)),C.page.notify()}}async function Rn(t,{status:e=200,error:n,node_ids:a,params:r,route:i,server_route:s,data:o,form:l}){xe=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await xt(c,!1)||{}),d=Wt.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=o[h];return g!=null&&g.uses&&(g.uses=xn(g.uses)),Yt({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let x=0;x{const o=history.state;qt=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(o,"",t),e&&scrollTo(i,s),qt=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let s=0;s{if(r.rangeCount===i.length){for(let s=0;s{i=u,s=w});return o.catch(()=>{}),{navigation:{from:{params:t.params,route:{id:((c=t.route)==null?void 0:c.id)??null},url:t.url,scroll:V()},to:n&&{params:(e==null?void 0:e.params)??null,route:{id:((d=e==null?void 0:e.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!e,type:a,complete:o},fulfil:i,reject:s}}function Zt(t){return{data:t.data,error:t.error,form:t.form,params:t.params,route:t.route,state:t.state,status:t.status,url:t.url}}function An(t){const e=new URL(t);return e.hash=decodeURIComponent(t.hash),e}function Ce(t){let e;if(S.hash){const[,,n]=t.hash.split("#",3);e=n??""}else e=t.hash.slice(1);return decodeURIComponent(e)}export{jn as a,On as l,R as p,C as s}; diff --git a/frontend/dist/_app/immutable/chunks/eeJ2SmtH.js b/frontend/dist/_app/immutable/chunks/eeJ2SmtH.js deleted file mode 100644 index 1980122..0000000 --- a/frontend/dist/_app/immutable/chunks/eeJ2SmtH.js +++ /dev/null @@ -1 +0,0 @@ -var te=t=>{throw TypeError(t)};var je=(t,e,n)=>e.has(t)||te("Cannot "+n);var v=(t,e,n)=>(je(t,e,"read from private field"),n?n.call(t):e.get(t)),U=(t,e,n)=>e.has(t)?te("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n);import{bf as Ut,bg as Ne,aK as T,o as I,$ as O,aJ as mt,bh as qe}from"./VJhVTb1A.js";import{o as ee}from"./Cz6m6K8p.js";const B=[];function Dt(t,e=Ut){let n=null;const a=new Set;function r(o){if(Ne(t,o)&&(t=o,n)){const l=!B.length;for(const c of a)c[1](),B.push(c,t);if(l){for(let c=0;c{a.delete(c),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:s}}class Vt{constructor(e,n){this.status=e,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}}class Kt{constructor(e,n){this.status=e,this.location=n}}class Bt extends Error{constructor(e,n,a){super(a),this.status=e,this.text=n}}new URL("sveltekit-internal://");function De(t,e){return t==="/"||e==="ignore"?t:e==="never"?t.endsWith("/")?t.slice(0,-1):t:e==="always"&&!t.endsWith("/")?t+"/":t}function Ve(t){return t.split("%25").map(decodeURI).join("%25")}function Ke(t){for(const e in t)t[e]=decodeURIComponent(t[e]);return t}function Tt({href:t}){return t.split("#")[0]}function Be(...t){let e=5381;for(const n of t)if(typeof n=="string"){let a=n.length;for(;a;)e=e*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)e=e*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(e>>>0).toString(36)}new TextEncoder;new TextDecoder;function Me(t){const e=atob(t),n=new Uint8Array(e.length);for(let a=0;a((t instanceof Request?t.method:(e==null?void 0:e.method)||"GET")!=="GET"&&H.delete(Mt(t)),ze(t,e));const H=new Map;function Fe(t,e){const n=Mt(t,e),a=document.querySelector(n);if(a!=null&&a.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const s=a.getAttribute("data-ttl");return s&&H.set(n,{body:r,init:i,ttl:1e3*Number(s)}),a.getAttribute("data-b64")!==null&&(r=Me(r)),Promise.resolve(new Response(r,i))}return window.fetch(t,e)}function Ge(t,e,n){if(H.size>0){const a=Mt(t,n),r=H.get(a);if(r){if(performance.now(){const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return e.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return e.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const s=a.split(/\[(.+?)\](?!\])/);return"/"+s.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return It(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return It(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const d=We.exec(l),[,u,w,p,f]=d;return e.push({name:p,matcher:f,optional:!!u,rest:!!w,chained:w?c===1&&s[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return It(l)}).join("")}).join("")}/?$`),params:e}}function Ye(t){return t!==""&&!/^\([^)]+\)$/.test(t)}function He(t){return t.slice(1).split("/").filter(Ye)}function Xe(t,e,n){const a={},r=t.slice(1),i=r.filter(o=>o!==void 0);let s=0;for(let o=0;od).join("/"),s=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){a[l.name]=c;const d=e[o+1],u=r[o+1];d&&!d.rest&&d.optional&&u&&l.chained&&(s=0),!d&&!u&&Object.keys(a).length===i.length&&(s=0);continue}if(l.optional&&l.chained){s++;continue}return}if(!s)return a}function It(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Qe({nodes:t,server_loads:e,dictionary:n,matchers:a}){const r=new Set(e);return Object.entries(n).map(([o,[l,c,d]])=>{const{pattern:u,params:w}=Je(o),p={id:o,exec:f=>{const m=u.exec(f);if(m)return Xe(m,w,a)},errors:[1,...d||[]].map(f=>t[f]),layouts:[0,...c||[]].map(s),leaf:i(l)};return p.errors.length=p.layouts.length=Math.max(p.errors.length,p.layouts.length),p});function i(o){const l=o<0;return l&&(o=~o),[l,t[o]]}function s(o){return o===void 0?o:[r.has(o),t[o]]}}function ge(t,e=JSON.parse){try{return e(sessionStorage[t])}catch{}}function ne(t,e,n=JSON.stringify){const a=n(e);try{sessionStorage[t]=a}catch{}}var fe;const A=((fe=globalThis.__sveltekit_134ve28)==null?void 0:fe.base)??"";var ue;const Ze=((ue=globalThis.__sveltekit_134ve28)==null?void 0:ue.assets)??A??"",tn="1785259782195",me="sveltekit:snapshot",_e="sveltekit:scroll",we="sveltekit:states",en="sveltekit:pageurl",z="sveltekit:history",Q="sveltekit:navigation",q={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},zt=location.origin;function ve(t){if(t instanceof URL)return t;let e=document.baseURI;if(!e){const n=document.getElementsByTagName("base");e=n.length?n[0].href:document.URL}return new URL(t,e)}function V(){return{x:pageXOffset,y:pageYOffset}}function M(t,e){return t.getAttribute(`data-sveltekit-${e}`)}const re={...q,"":q.hover};function ye(t){let e=t.assignedSlot??t.parentNode;return(e==null?void 0:e.nodeType)===11&&(e=e.host),e}function be(t,e){for(;t&&t!==e;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=ye(t)}}function $t(t,e,n){let a;try{if(a=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";a.hash=`#${o}${a.hash}`}}catch{}const r=t instanceof SVGAElement?t.target.baseVal:t.target,i=!a||!!r||Rt(a,e,n)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),s=(a==null?void 0:a.origin)===zt&&t.hasAttribute("download");return{url:a,external:i,target:r,download:s}}function _t(t){let e=null,n=null,a=null,r=null,i=null,s=null,o=t;for(;o&&o!==document.documentElement;)a===null&&(a=M(o,"preload-code")),r===null&&(r=M(o,"preload-data")),e===null&&(e=M(o,"keepfocus")),n===null&&(n=M(o,"noscroll")),i===null&&(i=M(o,"reload")),s===null&&(s=M(o,"replacestate")),o=ye(o);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:re[a??"off"],preload_data:re[r??"off"],keepfocus:l(e),noscroll:l(n),reload:l(i),replace_state:l(s)}}function ae(t){const e=Dt(t);let n=!0;function a(){n=!0,e.update(s=>s)}function r(s){n=!1,e.set(s)}function i(s){let o;return e.subscribe(l=>{(o===void 0||n&&l!==o)&&s(o=l)})}return{notify:a,set:r,subscribe:i}}const ke={v:()=>{}};function nn(){const{set:t,subscribe:e}=Dt(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${Ze}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const s=(await r.json()).version!==tn;return s&&(t(!0),ke.v(),clearTimeout(n)),s}catch{return!1}}return{subscribe:e,check:a}}function Rt(t,e,n){return t.origin!==zt||!t.pathname.startsWith(e)?!0:n?t.pathname!==location.pathname:!1}function On(t){}const Se=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Se];const rn=new Set([...Se]);[...rn];function an(t){return t.filter(e=>e!=null)}function Ft(t){return t instanceof Vt||t instanceof Bt?t.status:500}function on(t){return t instanceof Bt?t.text:"Internal Error"}let R,Z,Ot;const sn=ee.toString().includes("$$")||/function \w+\(\) \{\}/.test(ee.toString()),oe="a:";var at,ot,st,it,lt,ct,ft,ut,de,dt,he,ht,pe;sn?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(oe)},Z={current:null},Ot={current:!1}):(R=new(de=class{constructor(){U(this,at,T({}));U(this,ot,T(null));U(this,st,T(null));U(this,it,T({}));U(this,lt,T({id:null}));U(this,ct,T({}));U(this,ft,T(-1));U(this,ut,T(new URL(oe)))}get data(){return I(v(this,at))}set data(e){O(v(this,at),e)}get form(){return I(v(this,ot))}set form(e){O(v(this,ot),e)}get error(){return I(v(this,st))}set error(e){O(v(this,st),e)}get params(){return I(v(this,it))}set params(e){O(v(this,it),e)}get route(){return I(v(this,lt))}set route(e){O(v(this,lt),e)}get state(){return I(v(this,ct))}set state(e){O(v(this,ct),e)}get status(){return I(v(this,ft))}set status(e){O(v(this,ft),e)}get url(){return I(v(this,ut))}set url(e){O(v(this,ut),e)}},at=new WeakMap,ot=new WeakMap,st=new WeakMap,it=new WeakMap,lt=new WeakMap,ct=new WeakMap,ft=new WeakMap,ut=new WeakMap,de),Z=new(he=class{constructor(){U(this,dt,T(null))}get current(){return I(v(this,dt))}set current(e){O(v(this,dt),e)}},dt=new WeakMap,he),Ot=new(pe=class{constructor(){U(this,ht,T(!1))}get current(){return I(v(this,ht))}set current(e){O(v(this,ht),e)}},ht=new WeakMap,pe),ke.v=()=>Ot.current=!0);function ln(t){Object.assign(R,t)}const cn=new Set(["icon","shortcut icon","apple-touch-icon"]);let J=null;const j=ge(_e)??{},tt=ge(me)??{},C={url:ae({}),page:ae({}),navigating:Dt(null),updated:nn()};function Gt(t){j[t]=V()}function fn(t,e){let n=t+1;for(;j[n];)delete j[n],n+=1;for(n=e+1;tt[n];)delete tt[n],n+=1}function et(t,e=!1){return e?location.replace(t.href):location.href=t.href,new Promise(()=>{})}async function Ee(){if("serviceWorker"in navigator){const t=await navigator.serviceWorker.getRegistration(A||"/");t&&await t.update()}}function se(){}let Wt,Ct,wt,P,jt,S;const vt=[],yt=[];let y=null;function Nt(){var t;(t=y==null?void 0:y.fork)==null||t.then(e=>e==null?void 0:e.discard()),y=null}const gt=new Map,Re=new Set,un=new Set,X=new Set;let _={branch:[],error:null,url:null},xe=!1,bt=!1,ie=!0,nt=!1,Y=!1,Le=!1,Jt=!1,Ae,k,L,D;const kt=new Set,le=new Map;async function jn(t,e,n){var i,s,o,l,c;(i=globalThis.__sveltekit_134ve28)!=null&&i.data&&globalThis.__sveltekit_134ve28.data,document.URL!==location.href&&(location.href=location.href),S=t,await((o=(s=t.hooks).init)==null?void 0:o.call(s)),Wt=Qe(t),P=document.documentElement,jt=e,Ct=t.nodes[0],wt=t.nodes[1],Ct(),wt(),k=(l=history.state)==null?void 0:l[z],L=(c=history.state)==null?void 0:c[Q],k||(k=L=Date.now(),history.replaceState({...history.state,[z]:k,[Q]:L},""));const a=j[k];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await Rn(jt,n)):(await F({type:"enter",url:ve(S.hash?An(new URL(location.href)):location.href),replace_state:!0}),r()),En()}function dn(){vt.length=0,Jt=!1}function Ue(t){yt.some(e=>e==null?void 0:e.snapshot)&&(tt[t]=yt.map(e=>{var n;return(n=e==null?void 0:e.snapshot)==null?void 0:n.capture()}))}function Te(t){var e;(e=tt[t])==null||e.forEach((n,a)=>{var r,i;(i=(r=yt[a])==null?void 0:r.snapshot)==null||i.restore(n)})}function ce(){Gt(k),ne(_e,j),Ue(L),ne(me,tt)}async function hn(t,e,n,a){let r;e.invalidateAll&&Nt(),await F({type:"goto",url:ve(t),keepfocus:e.keepFocus,noscroll:e.noScroll,replace_state:e.replaceState,state:e.state,redirect_count:n,nav_token:a,accept:()=>{e.invalidateAll&&(Jt=!0,r=[...le.keys()]),e.invalidate&&e.invalidate.forEach(Sn)}}),e.invalidateAll&&mt().then(mt).then(()=>{le.forEach(({resource:i},s)=>{var o;r!=null&&r.includes(s)&&((o=i.refresh)==null||o.call(i))})})}async function pn(t){if(t.id!==(y==null?void 0:y.id)){Nt();const e={};kt.add(e),y={id:t.id,token:e,promise:Oe({...t,preload:e}).then(n=>(kt.delete(e),n.type==="loaded"&&n.state.error&&Nt(),n)),fork:null}}return y.promise}async function Pt(t){var n;const e=(n=await xt(t,!1))==null?void 0:n.route;e&&await Promise.all([...e.layouts,e.leaf].filter(Boolean).map(a=>a[1]()))}async function Ie(t,e,n){var i;const a={params:_.params,route:{id:((i=_.route)==null?void 0:i.id)??null},url:new URL(location.href)};_={...t.state,nav:a};const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,t.props.page),Ae=new S.root({target:e,props:{...t.props,stores:C,components:yt},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),Te(L),n){const s={from:null,to:{...a,scroll:j[k]??V()},willUnload:!1,type:"enter",complete:Promise.resolve()};X.forEach(o=>o(s))}bt=!0}async function St({url:t,params:e,branch:n,errors:a,status:r,error:i,route:s,form:o}){let l="never";if(A&&(t.pathname===A||t.pathname===A+"/"))l="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(l=f.slash);t.pathname=De(t.pathname,l),t.search=t.search;const c={type:"loaded",state:{url:t,params:e,branch:n,error:i,route:s},props:{constructors:an(n).map(f=>f.node.component),page:Zt(R)}};o!==void 0&&(c.props.form=o);let d={},u=!R,w=0;for(let f=0;fo(new URL(s))))return!0;return!1}function Ht(t,e){return(t==null?void 0:t.type)==="data"?t:(t==null?void 0:t.type)==="skip"?e??null:null}function _n(t,e){if(!t)return new Set(e.searchParams.keys());const n=new Set([...t.searchParams.keys(),...e.searchParams.keys()]);for(const a of n){const r=t.searchParams.getAll(a),i=e.searchParams.getAll(a);r.every(s=>i.includes(s))&&i.every(s=>r.includes(s))&&n.delete(a)}return n}function wn({error:t,url:e,route:n,params:a}){return{type:"loaded",state:{error:t,url:e,route:n,params:a,branch:[]},props:{page:Zt(R),constructors:[]}}}async function Oe({id:t,invalidating:e,url:n,params:a,route:r,preload:i}){if((y==null?void 0:y.id)===t)return kt.delete(y.token),y.promise;const{errors:s,layouts:o,leaf:l}=r,c=[...o,l];s.forEach(h=>h==null?void 0:h().catch(()=>{})),c.forEach(h=>h==null?void 0:h[1]().catch(()=>{}));const d=_.url?t!==Et(_.url):!1,u=_.route?r.id!==_.route.id:!1,w=_n(_.url,n);let p=!1;const f=c.map(async(h,g)=>{var $;if(!h)return;const b=_.branch[g];return h[1]===(b==null?void 0:b.loader)&&!mn(p,u,d,w,($=b.universal)==null?void 0:$.uses,a)?b:(p=!0,Yt({loader:h[1],url:n,params:a,route:r,parent:async()=>{var pt;const N={};for(let K=0;K{});const m=[];for(let h=0;hPromise.resolve({}),server_data_node:Ht(i)}),o={node:await wt(),loader:wt,universal:null,server:null,data:null};return St({url:n,params:r,branch:[s,o],status:t,error:e,errors:[],route:null})}catch(s){if(s instanceof Kt)return hn(new URL(s.location,location.href),{},0);throw s}}async function yn(t){const e=t.href;if(gt.has(e))return gt.get(e);let n;try{const a=(async()=>{let r=await S.hooks.reroute({url:new URL(t),fetch:async(i,s)=>gn(i,s,t).promise})??t;if(typeof r=="string"){const i=new URL(t);S.hash?i.hash=r:i.pathname=r,r=i}return r})();gt.set(e,a),n=await a}catch{gt.delete(e);return}return n}async function xt(t,e){if(t&&!Rt(t,A,S.hash)){const n=await yn(t);if(!n)return;const a=bn(n);for(const r of Wt){const i=r.exec(a);if(i)return{id:Et(t),invalidating:e,route:r,params:Ke(i),url:t}}}}function bn(t){return Ve(S.hash?t.hash.replace(/^#/,"").replace(/[?#].+/,""):t.pathname.slice(A.length))||"/"}function Et(t){return(S.hash?t.hash.replace(/^#/,""):t.pathname)+t.search}function Pe({url:t,type:e,intent:n,delta:a,event:r,scroll:i}){let s=!1;const o=Qt(_,n,t,e,i??null);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const l={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return nt||Re.forEach(c=>c(l)),s?null:o}async function F({type:t,url:e,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s={},redirect_count:o=0,nav_token:l={},accept:c=se,block:d=se,event:u}){var K;const w=D;D=l;const p=await xt(e,!1),f=t==="enter"?Qt(_,p,e,t):Pe({url:e,type:t,delta:n==null?void 0:n.delta,intent:p,scroll:n==null?void 0:n.scroll,event:u});if(!f){d(),D===l&&(D=w);return}const m=k,h=L;c(),nt=!0,bt&&f.navigation.type!=="enter"&&C.navigating.set(Z.current=f.navigation);let g=p&&await Oe(p);if(!g){if(Rt(e,A,S.hash))return await et(e,i);g=await $e(e,{id:null},await rt(new Bt(404,"Not Found",`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404,i)}if(e=(p==null?void 0:p.url)||e,D!==l)return f.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(o<20){await F({type:t,url:new URL(g.location,e),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:s,redirect_count:o+1,nav_token:l}),f.fulfil(void 0);return}g=await Xt({status:500,error:await rt(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}})}else g.props.page.status>=400&&await C.updated.check()&&(await Ee(),await et(e,i));if(dn(),Gt(m),Ue(h),g.props.page.url.pathname!==e.pathname&&(e.pathname=g.props.page.url.pathname),s=n?n.state:s,!n){const E=i?0:1,G={[z]:k+=E,[Q]:L+=E,[we]:s};(i?history.replaceState:history.pushState).call(history,G,"",e),i||fn(k,L)}const b=p&&(y==null?void 0:y.id)===p.id?y.fork:null;y=null,g.props.page.state=s;let x;if(bt){const E=(await Promise.all(Array.from(un,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(E.length>0){let W=function(){E.forEach(At=>{X.delete(At)})};E.push(W),E.forEach(At=>{X.add(At)})}const G=f.navigation.to;_={...g.state,nav:{params:G.params,route:G.route,url:G.url}},g.props.page&&(g.props.page.url=e);const Lt=b&&await b;Lt?x=Lt.commit():(J=null,Ae.$set(g.props),J&&Object.assign(g.props.page,J),ln(g.props.page),x=(K=qe)==null?void 0:K()),Le=!0}else await Ie(g,jt,!1);const{activeElement:$}=document;await x,await mt(),await mt();let N=null;if(ie){const E=n?n.scroll:r?V():null;E?scrollTo(E.x,E.y):(N=e.hash&&document.getElementById(Ce(e)))?N.scrollIntoView():scrollTo(0,0)}const pt=document.activeElement!==$&&document.activeElement!==document.body;!a&&!pt&&Ln(e,!N),ie=!0,g.props.page&&(J&&Object.assign(g.props.page,J),Object.assign(R,g.props.page)),nt=!1,t==="popstate"&&Te(L),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=V()),X.forEach(E=>E(f.navigation)),C.navigating.set(Z.current=null)}async function $e(t,e,n,a,r){return t.origin===zt&&t.pathname===location.pathname&&!xe?await Xt({status:a,error:n,url:t,route:e}):await et(t,r)}function kn(){let t,e={element:void 0,href:void 0},n;P.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(t),t=setTimeout(()=>{i(l,q.hover)},20)});function a(o){o.defaultPrevented||i(o.composedPath()[0],q.tap)}P.addEventListener("mousedown",a),P.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Pt(new URL(l.target.href)),r.unobserve(l.target))},{threshold:0});async function i(o,l){const c=be(o,P),d=c===e.element&&(c==null?void 0:c.href)===e.href&&l>=n;if(!c||d)return;const{url:u,external:w,download:p}=$t(c,A,S.hash);if(w||p)return;const f=_t(c),m=u&&Et(_.url)===Et(u);if(!(f.reload||m))if(l<=f.preload_data){e={element:c,href:c.href},n=q.tap;const h=await xt(u,!1);if(!h)return;pn(h)}else l<=f.preload_code&&(e={element:c,href:c.href},n=l,Pt(u))}function s(){r.disconnect();for(const o of P.querySelectorAll("a")){const{url:l,external:c,download:d}=$t(o,A,S.hash);if(c||d)continue;const u=_t(o);u.reload||(u.preload_code===q.viewport&&r.observe(o),u.preload_code===q.eager&&Pt(l))}}X.add(s),s()}function rt(t,e){if(t instanceof Vt)return t.body;const n=Ft(t),a=on(t);return S.hooks.handleError({error:t,event:e,status:n,message:a})??{message:a}}function Sn(t){if(typeof t=="function")vt.push(t);else{const{href:e}=new URL(t,location.href);vt.push(n=>n.href===e)}}function En(){var e;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let a=!1;if(ce(),!nt){const r=Qt(_,void 0,null,"leave"),i={...r.navigation,cancel:()=>{a=!0,r.reject(new Error("navigation cancelled"))}};Re.forEach(s=>s(i))}a?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ce()}),(e=navigator.connection)!=null&&e.saveData||kn(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const a=be(n.composedPath()[0],P);if(!a)return;const{url:r,external:i,target:s,download:o}=$t(a,A,S.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const l=_t(a);if(!(a instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[d,u]=(S.hash?r.hash.replace(/^#/,""):r.href).split("#"),w=d===Tt(location);if(i||l.reload&&(!w||!u)){Pe({url:r,type:"link",event:n})?nt=!0:n.preventDefault();return}if(u!==void 0&&w){const[,p]=_.url.href.split("#");if(p===u){if(n.preventDefault(),u===""||u==="top"&&a.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=a.ownerDocument.getElementById(decodeURIComponent(u));f&&(f.scrollIntoView(),f.focus())}return}if(Y=!0,Gt(k),t(r),!l.replace_state)return;Y=!1}n.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await F({type:"link",url:r,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??r.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const a=HTMLFormElement.prototype.cloneNode.call(n.target),r=n.submitter;if(((r==null?void 0:r.formTarget)||a.target)==="_blank"||((r==null?void 0:r.formMethod)||a.method)!=="get")return;const o=new URL((r==null?void 0:r.hasAttribute("formaction"))&&(r==null?void 0:r.formAction)||a.action);if(Rt(o,A,!1))return;const l=n.target,c=_t(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(l,r);o.search=new URLSearchParams(d).toString(),F({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:n})}),addEventListener("popstate",async n=>{var a;if(!qt){if((a=n.state)!=null&&a[z]){const r=n.state[z];if(D={},r===k)return;const i=j[r],s=n.state[we]??{},o=new URL(n.state[en]??location.href),l=n.state[Q],c=_.url?Tt(location)===Tt(_.url):!1;if(l===L&&(Le||c)){s!==R.state&&(R.state=s),t(o),j[k]=V(),i&&scrollTo(i.x,i.y),k=r;return}const u=r-k;await F({type:"popstate",url:o,popped:{state:s,scroll:i,delta:u},accept:()=>{k=r,L=l},block:()=>{history.go(-u)},nav_token:D,event:n})}else if(!Y){const r=new URL(location.href);t(r),S.hash&&location.reload()}}}),addEventListener("hashchange",()=>{Y&&(Y=!1,history.replaceState({...history.state,[z]:++k,[Q]:L},"",location.href))});for(const n of document.querySelectorAll("link"))cn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&C.navigating.set(Z.current=null)});function t(n){_.url=R.url=n,C.page.set(Zt(R)),C.page.notify()}}async function Rn(t,{status:e=200,error:n,node_ids:a,params:r,route:i,server_route:s,data:o,form:l}){xe=!0;const c=new URL(location.href);let d;({params:r={},route:i={id:null}}=await xt(c,!1)||{}),d=Wt.find(({id:p})=>p===i.id);let u,w=!0;try{const p=a.map(async(m,h)=>{const g=o[h];return g!=null&&g.uses&&(g.uses=xn(g.uses)),Yt({loader:S.nodes[m],url:c,params:r,route:i,parent:async()=>{const b={};for(let x=0;x{const o=history.state;qt=!0,location.replace(new URL(`#${a}`,location.href)),history.replaceState(o,"",t),e&&scrollTo(i,s),qt=!1})}else{const i=document.body,s=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),s!==null?i.setAttribute("tabindex",s):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let s=0;s{if(r.rangeCount===i.length){for(let s=0;s{i=u,s=w});return o.catch(()=>{}),{navigation:{from:{params:t.params,route:{id:((c=t.route)==null?void 0:c.id)??null},url:t.url,scroll:V()},to:n&&{params:(e==null?void 0:e.params)??null,route:{id:((d=e==null?void 0:e.route)==null?void 0:d.id)??null},url:n,scroll:r},willUnload:!e,type:a,complete:o},fulfil:i,reject:s}}function Zt(t){return{data:t.data,error:t.error,form:t.form,params:t.params,route:t.route,state:t.state,status:t.status,url:t.url}}function An(t){const e=new URL(t);return e.hash=decodeURIComponent(t.hash),e}function Ce(t){let e;if(S.hash){const[,,n]=t.hash.split("#",3);e=n??""}else e=t.hash.slice(1);return decodeURIComponent(e)}export{jn as a,On as l,R as p,C as s}; diff --git a/frontend/dist/_app/immutable/entry/app.BcimqTdT.js b/frontend/dist/_app/immutable/entry/app.Cn2ZzZiT.js similarity index 94% rename from frontend/dist/_app/immutable/entry/app.BcimqTdT.js rename to frontend/dist/_app/immutable/entry/app.Cn2ZzZiT.js index df3cf23..5c2d84c 100644 --- a/frontend/dist/_app/immutable/entry/app.BcimqTdT.js +++ b/frontend/dist/_app/immutable/entry/app.Cn2ZzZiT.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DecrOZwe.js","../chunks/C14P8jaG.js","../chunks/VJhVTb1A.js","../chunks/CiUbu-1F.js","../chunks/U5yjBaoU.js","../nodes/1.CqrNlNqJ.js","../chunks/DmjnTBOd.js","../chunks/BeON-0X8.js","../chunks/eeJ2SmtH.js","../chunks/Cz6m6K8p.js","../nodes/2.Cadsvez-.js","../chunks/zf4GFcxs.js","../assets/2.DKE6ochW.css"])))=>i.map(i=>d[i]); -var H=t=>{throw TypeError(t)};var J=(t,e,s)=>e.has(t)||H("Cannot "+s);var l=(t,e,s)=>(J(t,e,"read from private field"),s?s.call(t):e.get(t)),S=(t,e,s)=>e.has(t)?H("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,s),C=(t,e,s,o)=>(J(t,e,"write to private field"),o?o.call(t,s):e.set(t,s),s);import{$ as L,ab as X,o as g,aH as Z,au as M,aI as N,x as $,u as ee,j as te,aJ as re,g as j,C as se,z as ae,aK as A,A as ne,B as oe,aL as B,y as ce}from"../chunks/VJhVTb1A.js";import{h as ie,m as le,u as ue,s as fe}from"../chunks/BeON-0X8.js";import{a as w,c as I,f as W,t as me}from"../chunks/C14P8jaG.js";import{o as de}from"../chunks/Cz6m6K8p.js";import{p as T,i as D,c as V,b as q}from"../chunks/zf4GFcxs.js";function he(t){return class extends _e{constructor(e){super({component:t,...e})}}}var y,m;class _e{constructor(e){S(this,y);S(this,m);var _;var s=new Map,o=(a,r)=>{var c=N(r,!1,!1);return s.set(a,c),c};const u=new Proxy({...e.props||{},$$events:{}},{get(a,r){return g(s.get(r)??o(r,Reflect.get(a,r)))},has(a,r){return r===X?!0:(g(s.get(r)??o(r,Reflect.get(a,r))),Reflect.has(a,r))},set(a,r,c){return L(s.get(r)??o(r,c),c),Reflect.set(a,r,c)}});C(this,m,(e.hydrate?ie:le)(e.component,{target:e.target,anchor:e.anchor,props:u,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError})),(!((_=e==null?void 0:e.props)!=null&&_.$$host)||e.sync===!1)&&Z(),C(this,y,u.$$events);for(const a of Object.keys(l(this,m)))a==="$set"||a==="$destroy"||a==="$on"||M(this,a,{get(){return l(this,m)[a]},set(r){l(this,m)[a]=r},enumerable:!0});l(this,m).$set=a=>{Object.assign(u,a)},l(this,m).$destroy=()=>{ue(l(this,m))}}$set(e){l(this,m).$set(e)}$on(e,s){l(this,y)[e]=l(this,y)[e]||[];const o=(...u)=>s.call(this,...u);return l(this,y)[e].push(o),()=>{l(this,y)[e]=l(this,y)[e].filter(u=>u!==o)}}$destroy(){l(this,m).$destroy()}}y=new WeakMap,m=new WeakMap;const ve="modulepreload",ge=function(t,e){return new URL(t,e).href},K={},U=function(e,s,o){let u=Promise.resolve();if(s&&s.length>0){let a=function(i){return Promise.all(i.map(v=>Promise.resolve(v).then(b=>({status:"fulfilled",value:b}),b=>({status:"rejected",reason:b}))))};const r=document.getElementsByTagName("link"),c=document.querySelector("meta[property=csp-nonce]"),k=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));u=a(s.map(i=>{if(i=ge(i,o),i in K)return;K[i]=!0;const v=i.endsWith(".css"),b=v?'[rel="stylesheet"]':"";if(!!o)for(let n=r.length-1;n>=0;n--){const f=r[n];if(f.href===i&&(!v||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${b}`))return;const h=document.createElement("link");if(h.rel=v?"stylesheet":ve,v||(h.as="script"),h.crossOrigin="",h.href=i,k&&h.setAttribute("nonce",k),document.head.appendChild(h),v)return new Promise((n,f)=>{h.addEventListener("load",n),h.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${i}`)))})}))}function _(a){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=a,window.dispatchEvent(r),!r.defaultPrevented)throw a}return u.then(a=>{for(const r of a||[])r.status==="rejected"&&_(r.reason);return e().catch(_)})},Se={};var ye=W('
'),be=W(" ",1);function Ee(t,e){$(e,!0);let s=T(e,"components",23,()=>[]),o=T(e,"data_0",3,null),u=T(e,"data_1",3,null);ee(()=>e.stores.page.set(e.page)),te(()=>{e.stores,e.page,e.constructors,s(),e.form,o(),u(),e.stores.page.notify()});let _=A(!1),a=A(!1),r=A(null);de(()=>{const n=e.stores.page.subscribe(()=>{g(_)&&(L(a,!0),re().then(()=>{L(r,document.title||"untitled page",!0)}))});return L(_,!0),n});const c=B(()=>e.constructors[1]);var k=be(),i=j(k);{var v=n=>{const f=B(()=>e.constructors[0]);var E=I(),x=j(E);V(x,()=>g(f),(P,R)=>{q(R(P,{get data(){return o()},get form(){return e.form},get params(){return e.page.params},children:(d,Re)=>{var G=I(),p=j(G);V(p,()=>g(c),(F,Q)=>{q(Q(F,{get data(){return u()},get form(){return e.form},get params(){return e.page.params}}),O=>s()[1]=O,()=>{var O;return(O=s())==null?void 0:O[1]})}),w(d,G)},$$slots:{default:!0}}),d=>s()[0]=d,()=>{var d;return(d=s())==null?void 0:d[0]})}),w(n,E)},b=n=>{const f=B(()=>e.constructors[0]);var E=I(),x=j(E);V(x,()=>g(f),(P,R)=>{q(R(P,{get data(){return o()},get form(){return e.form},get params(){return e.page.params}}),d=>s()[0]=d,()=>{var d;return(d=s())==null?void 0:d[0]})}),w(n,E)};D(i,n=>{e.constructors[1]?n(v):n(b,-1)})}var z=se(i,2);{var h=n=>{var f=ye(),E=ne(f);{var x=P=>{var R=me();ce(()=>fe(R,g(r))),w(P,R)};D(E,P=>{g(a)&&P(x)})}oe(f),w(n,f)};D(z,n=>{g(_)&&n(h)})}w(t,k),ae()}const Ce=he(Ee),Ae=[()=>U(()=>import("../nodes/0.DecrOZwe.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url),()=>U(()=>import("../nodes/1.CqrNlNqJ.js"),__vite__mapDeps([5,1,2,6,7,8,9]),import.meta.url),()=>U(()=>import("../nodes/2.Cadsvez-.js"),__vite__mapDeps([10,1,2,9,11,4,7,3,6,12]),import.meta.url)],Be=[],Ie={"/":[2]},Y={handleError:(({error:t})=>{console.error(t)}),reroute:(()=>{}),transport:{}},Pe=Object.fromEntries(Object.entries(Y.transport).map(([t,e])=>[t,e.decode])),Te=Object.fromEntries(Object.entries(Y.transport).map(([t,e])=>[t,e.encode])),De=!1,Ve=(t,e)=>Pe[t](e);export{Ve as decode,Pe as decoders,Ie as dictionary,Te as encoders,De as hash,Y as hooks,Se as matchers,Ae as nodes,Ce as root,Be as server_loads}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DecrOZwe.js","../chunks/C14P8jaG.js","../chunks/VJhVTb1A.js","../chunks/CiUbu-1F.js","../chunks/U5yjBaoU.js","../nodes/1.DU6Ijmpv.js","../chunks/DmjnTBOd.js","../chunks/BeON-0X8.js","../chunks/BI00lc_u.js","../chunks/Cz6m6K8p.js","../nodes/2.DQxkgq4x.js","../chunks/zf4GFcxs.js","../assets/2.DKE6ochW.css"])))=>i.map(i=>d[i]); +var H=t=>{throw TypeError(t)};var J=(t,e,s)=>e.has(t)||H("Cannot "+s);var l=(t,e,s)=>(J(t,e,"read from private field"),s?s.call(t):e.get(t)),S=(t,e,s)=>e.has(t)?H("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,s),C=(t,e,s,o)=>(J(t,e,"write to private field"),o?o.call(t,s):e.set(t,s),s);import{$ as L,ab as X,o as g,aH as Z,au as M,aI as N,x as $,u as ee,j as te,aJ as re,g as j,C as se,z as ae,aK as A,A as ne,B as oe,aL as B,y as ce}from"../chunks/VJhVTb1A.js";import{h as ie,m as le,u as ue,s as fe}from"../chunks/BeON-0X8.js";import{a as w,c as I,f as W,t as me}from"../chunks/C14P8jaG.js";import{o as de}from"../chunks/Cz6m6K8p.js";import{p as T,i as D,c as V,b as q}from"../chunks/zf4GFcxs.js";function he(t){return class extends _e{constructor(e){super({component:t,...e})}}}var y,m;class _e{constructor(e){S(this,y);S(this,m);var _;var s=new Map,o=(a,r)=>{var c=N(r,!1,!1);return s.set(a,c),c};const u=new Proxy({...e.props||{},$$events:{}},{get(a,r){return g(s.get(r)??o(r,Reflect.get(a,r)))},has(a,r){return r===X?!0:(g(s.get(r)??o(r,Reflect.get(a,r))),Reflect.has(a,r))},set(a,r,c){return L(s.get(r)??o(r,c),c),Reflect.set(a,r,c)}});C(this,m,(e.hydrate?ie:le)(e.component,{target:e.target,anchor:e.anchor,props:u,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError})),(!((_=e==null?void 0:e.props)!=null&&_.$$host)||e.sync===!1)&&Z(),C(this,y,u.$$events);for(const a of Object.keys(l(this,m)))a==="$set"||a==="$destroy"||a==="$on"||M(this,a,{get(){return l(this,m)[a]},set(r){l(this,m)[a]=r},enumerable:!0});l(this,m).$set=a=>{Object.assign(u,a)},l(this,m).$destroy=()=>{ue(l(this,m))}}$set(e){l(this,m).$set(e)}$on(e,s){l(this,y)[e]=l(this,y)[e]||[];const o=(...u)=>s.call(this,...u);return l(this,y)[e].push(o),()=>{l(this,y)[e]=l(this,y)[e].filter(u=>u!==o)}}$destroy(){l(this,m).$destroy()}}y=new WeakMap,m=new WeakMap;const ve="modulepreload",ge=function(t,e){return new URL(t,e).href},K={},U=function(e,s,o){let u=Promise.resolve();if(s&&s.length>0){let a=function(i){return Promise.all(i.map(v=>Promise.resolve(v).then(b=>({status:"fulfilled",value:b}),b=>({status:"rejected",reason:b}))))};const r=document.getElementsByTagName("link"),c=document.querySelector("meta[property=csp-nonce]"),k=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));u=a(s.map(i=>{if(i=ge(i,o),i in K)return;K[i]=!0;const v=i.endsWith(".css"),b=v?'[rel="stylesheet"]':"";if(!!o)for(let n=r.length-1;n>=0;n--){const f=r[n];if(f.href===i&&(!v||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${b}`))return;const h=document.createElement("link");if(h.rel=v?"stylesheet":ve,v||(h.as="script"),h.crossOrigin="",h.href=i,k&&h.setAttribute("nonce",k),document.head.appendChild(h),v)return new Promise((n,f)=>{h.addEventListener("load",n),h.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${i}`)))})}))}function _(a){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=a,window.dispatchEvent(r),!r.defaultPrevented)throw a}return u.then(a=>{for(const r of a||[])r.status==="rejected"&&_(r.reason);return e().catch(_)})},Se={};var ye=W('
'),be=W(" ",1);function Ee(t,e){$(e,!0);let s=T(e,"components",23,()=>[]),o=T(e,"data_0",3,null),u=T(e,"data_1",3,null);ee(()=>e.stores.page.set(e.page)),te(()=>{e.stores,e.page,e.constructors,s(),e.form,o(),u(),e.stores.page.notify()});let _=A(!1),a=A(!1),r=A(null);de(()=>{const n=e.stores.page.subscribe(()=>{g(_)&&(L(a,!0),re().then(()=>{L(r,document.title||"untitled page",!0)}))});return L(_,!0),n});const c=B(()=>e.constructors[1]);var k=be(),i=j(k);{var v=n=>{const f=B(()=>e.constructors[0]);var E=I(),x=j(E);V(x,()=>g(f),(P,R)=>{q(R(P,{get data(){return o()},get form(){return e.form},get params(){return e.page.params},children:(d,Re)=>{var G=I(),p=j(G);V(p,()=>g(c),(F,Q)=>{q(Q(F,{get data(){return u()},get form(){return e.form},get params(){return e.page.params}}),O=>s()[1]=O,()=>{var O;return(O=s())==null?void 0:O[1]})}),w(d,G)},$$slots:{default:!0}}),d=>s()[0]=d,()=>{var d;return(d=s())==null?void 0:d[0]})}),w(n,E)},b=n=>{const f=B(()=>e.constructors[0]);var E=I(),x=j(E);V(x,()=>g(f),(P,R)=>{q(R(P,{get data(){return o()},get form(){return e.form},get params(){return e.page.params}}),d=>s()[0]=d,()=>{var d;return(d=s())==null?void 0:d[0]})}),w(n,E)};D(i,n=>{e.constructors[1]?n(v):n(b,-1)})}var z=se(i,2);{var h=n=>{var f=ye(),E=ne(f);{var x=P=>{var R=me();ce(()=>fe(R,g(r))),w(P,R)};D(E,P=>{g(a)&&P(x)})}oe(f),w(n,f)};D(z,n=>{g(_)&&n(h)})}w(t,k),ae()}const Ce=he(Ee),Ae=[()=>U(()=>import("../nodes/0.DecrOZwe.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url),()=>U(()=>import("../nodes/1.DU6Ijmpv.js"),__vite__mapDeps([5,1,2,6,7,8,9]),import.meta.url),()=>U(()=>import("../nodes/2.DQxkgq4x.js"),__vite__mapDeps([10,1,2,9,11,4,7,3,6,12]),import.meta.url)],Be=[],Ie={"/":[2]},Y={handleError:(({error:t})=>{console.error(t)}),reroute:(()=>{}),transport:{}},Pe=Object.fromEntries(Object.entries(Y.transport).map(([t,e])=>[t,e.decode])),Te=Object.fromEntries(Object.entries(Y.transport).map(([t,e])=>[t,e.encode])),De=!1,Ve=(t,e)=>Pe[t](e);export{Ve as decode,Pe as decoders,Ie as dictionary,Te as encoders,De as hash,Y as hooks,Se as matchers,Ae as nodes,Ce as root,Be as server_loads}; diff --git a/frontend/dist/_app/immutable/entry/start.Ca27w5R7.js b/frontend/dist/_app/immutable/entry/start.Ca27w5R7.js new file mode 100644 index 0000000..2f7d149 --- /dev/null +++ b/frontend/dist/_app/immutable/entry/start.Ca27w5R7.js @@ -0,0 +1 @@ +import{l as o,a as r}from"../chunks/BI00lc_u.js";export{o as load_css,r as start}; diff --git a/frontend/dist/_app/immutable/entry/start.Cnn_J3kK.js b/frontend/dist/_app/immutable/entry/start.Cnn_J3kK.js deleted file mode 100644 index bf59000..0000000 --- a/frontend/dist/_app/immutable/entry/start.Cnn_J3kK.js +++ /dev/null @@ -1 +0,0 @@ -import{l as o,a as r}from"../chunks/eeJ2SmtH.js";export{o as load_css,r as start}; diff --git a/frontend/dist/_app/immutable/nodes/1.CqrNlNqJ.js b/frontend/dist/_app/immutable/nodes/1.DU6Ijmpv.js similarity index 78% rename from frontend/dist/_app/immutable/nodes/1.CqrNlNqJ.js rename to frontend/dist/_app/immutable/nodes/1.DU6Ijmpv.js index 7310eac..6885a46 100644 --- a/frontend/dist/_app/immutable/nodes/1.CqrNlNqJ.js +++ b/frontend/dist/_app/immutable/nodes/1.DU6Ijmpv.js @@ -1 +1 @@ -import{a as g,f as h}from"../chunks/C14P8jaG.js";import{i as l}from"../chunks/DmjnTBOd.js";import{x as v,g as d,y as x,z as _,A as e,B as o,C as $}from"../chunks/VJhVTb1A.js";import{s as p}from"../chunks/BeON-0X8.js";import{s as k,p as m}from"../chunks/eeJ2SmtH.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var y=h("

",1);function j(f,n){v(n,!1),l();var t=y(),r=d(t),c=e(r,!0);o(r);var s=$(r,2),u=e(s,!0);o(s),x(()=>{var a;p(c,i.status),p(u,(a=i.error)==null?void 0:a.message)}),g(f,t),_()}export{j as component}; +import{a as g,f as h}from"../chunks/C14P8jaG.js";import{i as l}from"../chunks/DmjnTBOd.js";import{x as v,g as d,y as x,z as _,A as e,B as o,C as $}from"../chunks/VJhVTb1A.js";import{s as p}from"../chunks/BeON-0X8.js";import{s as k,p as m}from"../chunks/BI00lc_u.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var y=h("

",1);function j(f,n){v(n,!1),l();var t=y(),r=d(t),c=e(r,!0);o(r);var s=$(r,2),u=e(s,!0);o(s),x(()=>{var a;p(c,i.status),p(u,(a=i.error)==null?void 0:a.message)}),g(f,t),_()}export{j as component}; diff --git a/frontend/dist/_app/immutable/nodes/2.Cadsvez-.js b/frontend/dist/_app/immutable/nodes/2.Cadsvez-.js deleted file mode 100644 index b819d1c..0000000 --- a/frontend/dist/_app/immutable/nodes/2.Cadsvez-.js +++ /dev/null @@ -1,1190 +0,0 @@ -import{b as Sr,a as u,f as P,c as _e,t as Be,d as Ot}from"../chunks/C14P8jaG.js";import{o as Yn,a as dr}from"../chunks/Cz6m6K8p.js";import{h as De,L as $t,G as Lt,c as $r,J as Kt,b as Qn,o as e,N as Ha,ag as ja,O as $n,P as zt,f as _t,ay as Zn,aF as Va,ao as Pn,e as mt,a as cr,aM as Ua,s as Ba,a5 as qa,aN as Jn,aE as cn,aO as Ka,a7 as En,aP as Ga,aQ as Wa,aI as Xa,aR as ht,aS as ea,a1 as Ya,r as ta,p as ra,aT as jr,ae as na,aU as Qa,aV as Za,aC as Ja,m as es,d as Er,az as aa,y as Q,F as sa,aW as ts,aG as rs,aA as ns,D as oa,aX as ia,aY as as,aZ as ss,E as os,aw as la,S as Tr,k as Rr,a_ as ca,a$ as is,b0 as ls,b1 as ua,b2 as cs,b3 as us,b4 as fr,b5 as ds,b6 as fs,b7 as vs,b8 as gs,b9 as hs,ba as ps,bb as ms,aJ as Pt,U as _s,aK as I,_ as oe,$ as f,A as C,B as p,x as Ae,g as B,z as Le,C as E,j as Ne,ap as ke,aL as j,bc as bs,q as Vt,bd as xs,be as it,bf as ys}from"../chunks/VJhVTb1A.js";import{p as he,i as Y,b as nt,c as ws,l as Ve,s as qe}from"../chunks/zf4GFcxs.js";import{i as ks,a as Cs,d as ie,b as We,c as Ss,n as $s,e as Ps,s as ee,f as rt}from"../chunks/BeON-0X8.js";import{s as ft}from"../chunks/CiUbu-1F.js";import{i as Es}from"../chunks/DmjnTBOd.js";import{B as Rs}from"../chunks/U5yjBaoU.js";function un(t,r){return r}function Ns(t,r,a){for(var n=[],s=r.length,i,o=r.length,l=0;l{if(i){if(i.pending.delete(T),i.done.add(T),i.pending.size===0){var m=t.outrogroups;Xr(t,cn(i.done)),m.delete(i),m.size===0&&(t.outrogroups=null)}}else o-=1},!1)}if(o===0){var d=n.length===0&&a!==null;if(d){var x=a,w=x.parentNode;Ja(w),w.append(x),t.items.clear()}Xr(t,r,!d)}else i={pending:new Set(r),done:new Set},(t.outrogroups??(t.outrogroups=new Set)).add(i)}function Xr(t,r,a=!0){var n;if(t.pending.size>0){n=new Set;for(const o of t.pending.values())for(const l of o)n.add(t.items.get(l).e)}for(var s=0;s{var g=a();return Jn(g)?g:g==null?[]:cn(g)}),m,A=new Map,F=!0;function v(g){(R.effect.f&Ya)===0&&(R.pending.delete(g),R.fallback=w,Ms(R,m,o,r,n),w!==null&&(m.length===0?(w.f&ht)===0?ta(w):(w.f^=ht,ir(w,null,o)):ra(w,()=>{w=null})))}function c(g){R.pending.delete(g)}var y=Qn(()=>{m=e(T);var g=m.length;let b=!1;if(De){var $=Ha(o)===ja;$!==(g===0)&&(o=$n(),$t(o),zt(!1),b=!0)}for(var _=new Set,L=mt,z=Ba(),D=0;Di(o)):(w=cr(()=>i(Rn??(Rn=$r()))),w.f|=ht)),g>_.size&&Ua(),De&&g>0&&$t($n()),!F)if(A.set(L,_),z){for(const[V,q]of l)_.has(V)||L.skip_effect(q.e);L.oncommit(v),L.ondiscard(c)}else v(L);b&&zt(!0),e(T)}),R={effect:y,items:l,pending:A,outrogroups:null,fallback:w};F=!1,De&&(o=_t)}function nr(t){for(;t!==null&&(t.f&Qa)===0;)t=t.next;return t}function Ms(t,r,a,n,s){var U,H,O,V,q,X,ae,N,M;var i=(n&Za)!==0,o=r.length,l=t.items,d=nr(t.effect.first),x,w=null,T,m=[],A=[],F,v,c,y;if(i)for(y=0;y0){var D=(n&ea)!==0&&o===0?a:null;if(i){for(y=0;y{var h,k;if(T!==void 0)for(c of T)(k=(h=c.nodes)==null?void 0:h.a)==null||k.apply()})}function As(t,r,a,n,s,i,o,l){var d=(o&Ga)!==0?(o&Wa)===0?Xa(a,!1,!1):En(a):null,x=(o&Ka)!==0?En(s):null;return{v:d,i:x,e:cr(()=>(i(r,d??a,x??s,l),()=>{t.delete(n)}))}}function ir(t,r,a){if(t.nodes)for(var n=t.nodes.start,s=t.nodes.end,i=r&&(r.f&ht)===0?r.nodes.start:a;n!==null;){var o=aa(n);if(i.before(n),n===s)return;n=o}}function wt(t,r,a){r===null?t.effect.first=a:r.next=a,a===null?t.effect.last=r:a.prev=r}function Fr(t,r,a=!1,n=!1,s=!1,i=!1){var o=t,l="";if(a){var d=t;De&&(o=$t(Lt(d)))}Q(()=>{var x=sa;if(l===(l=r()??"")){De&&Kt();return}if(a&&!De){x.nodes=null,d.innerHTML=l,l!==""&&Sr(Lt(d),d.lastChild);return}if(x.nodes!==null&&(ts(x.nodes.start,x.nodes.end),x.nodes=null),l!==""){if(De){_t.data;for(var w=Kt(),T=w;w!==null&&(w.nodeType!==Zn||w.data!=="");)T=w,w=aa(w);if(w===null)throw rs(),ns;Sr(_t,T),o=$t(w);return}var m=n?ia:s?as:void 0,A=oa(n?"svg":s?"math":"template",m);A.innerHTML=l;var F=n||s?A:A.content;if(Sr(Lt(F),F.lastChild),n||s)for(;Lt(F);)o.before(Lt(F));else o.before(F)}})}function Ue(t,r,a,n,s){var l;De&&Kt();var i=(l=r.$$slots)==null?void 0:l[a],o=!1;i===!0&&(i=r.children,o=!0),i===void 0||i(t,o?()=>n:n)}function Ls(t,r,a,n,s,i){let o=De;De&&Kt();var l=null;De&&_t.nodeType===ss&&(l=_t,Kt());var d=De?_t:t,x=new Rs(d,!1);Qn(()=>{const w=r()||null;var T=ia;if(w===null){x.ensure(null,null);return}return x.ensure(w,m=>{if(w){if(l=De?l:oa(w,T),Sr(l,l),n){De&&ks(w)&&l.append(document.createComment(""));var A=De?Lt(l):l.appendChild($r());De&&(A===null?zt(!1):$t(A)),n(l,A)}sa.nodes.end=l,m.before(l)}De&&$t(m)}),()=>{}},os),la(()=>{}),o&&(zt(!0),$t(d))}function Ts(t,r,a){Tr(()=>{var n=Rr(()=>r(t,a==null?void 0:a())||{});if(n!=null&&n.destroy)return()=>n.destroy()})}function Fs(t,r){var a=void 0,n;ca(()=>{a!==(a=r())&&(n&&(Er(n),n=null),a&&(n=cr(()=>{Tr(()=>a(t))})))})}function da(t){var r,a,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(r=0;r=0;){var l=o+i;(o===0||Nn.includes(n[o-1]))&&(l===n.length||Nn.includes(n[l]))?n=(o===0?"":n.substring(0,o))+n.substring(l+1):o=l}}return n===""?null:n}function Mn(t,r=!1){var a=r?" !important;":";",n="";for(var s of Object.keys(t)){var i=t[s];i!=null&&i!==""&&(n+=" "+s+": "+i+a)}return n}function Vr(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function Is(t,r){if(r){var a="",n,s;if(Array.isArray(r)?(n=r[0],s=r[1]):n=r,t){t=String(t).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var i=!1,o=0,l=!1,d=[];n&&d.push(...Object.keys(n).map(Vr)),s&&d.push(...Object.keys(s).map(Vr));var x=0,w=-1;const v=t.length;for(var T=0;T{Nr(t,t.__value)});r.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),la(()=>{r.disconnect()})}function Os(t,r,a=r){var n=new WeakSet,s=!0;ua(t,"change",i=>{var o=i?"[selected]":":checked",l;if(t.multiple)l=[].map.call(t.querySelectorAll(o),lr);else{var d=t.querySelector(o)??t.querySelector("option:not([disabled])");l=d&&lr(d)}a(l),t.__value=l,mt!==null&&n.add(mt)}),Tr(()=>{var i=r();if(t===document.activeElement){var o=mt;if(n.has(o))return}if(Nr(t,i,s),s&&i===void 0){var l=t.querySelector(":checked");l!==null&&(i=lr(l),a(i))}t.__value=i,s=!1}),fa(t)}function lr(t){return"__value"in t?t.__value:t.value}const ar=Symbol("class"),sr=Symbol("style"),va=Symbol("is custom element"),ga=Symbol("is html"),Hs=fr?"link":"LINK",js=fr?"input":"INPUT",Vs=fr?"option":"OPTION",Us=fr?"select":"SELECT",Bs=fr?"progress":"PROGRESS";function Qe(t){if(De){var r=!1,a=()=>{if(!r){if(r=!0,t.hasAttribute("value")){var n=t.value;we(t,"value",null),t.value=n}if(t.hasAttribute("checked")){var s=t.checked;we(t,"checked",null),t.checked=s}}};t.__on_r=a,na(a),vs()}}function dn(t,r){var a=fn(t);a.value===(a.value=r??void 0)||t.value===r&&(r!==0||t.nodeName!==Bs)||(t.value=r??"")}function qs(t,r){r?t.hasAttribute("selected")||t.setAttribute("selected",""):t.removeAttribute("selected")}function we(t,r,a,n){var s=fn(t);De&&(s[r]=t.getAttribute(r),r==="src"||r==="srcset"||r==="href"&&t.nodeName===Hs)||s[r]!==(s[r]=a)&&(r==="loading"&&(t[ps]=a),a==null?t.removeAttribute(r):typeof a!="string"&&ha(t).includes(r)?t[r]=a:t.setAttribute(r,a))}function Ks(t,r,a,n,s=!1,i=!1){if(De&&s&&t.nodeName===js){var o=t,l=o.type==="checkbox"?"defaultChecked":"defaultValue";l in a||Qe(o)}var d=fn(t),x=d[va],w=!d[ga];let T=De&&x;T&&zt(!1);var m=r||{},A=t.nodeName===Vs;for(var F in r)F in a||(a[F]=null);a.class?a.class=dt(a.class):a[ar]&&(a.class=null),a[sr]&&(a.style??(a.style=null));var v=ha(t);for(const _ in a){let L=a[_];if(A&&_==="value"&&L==null){t.value=t.__value="",m[_]=L;continue}if(_==="class"){var c=t.namespaceURI==="http://www.w3.org/1999/xhtml";Se(t,c,L,n,r==null?void 0:r[ar],a[ar]),m[_]=L,m[ar]=a[ar];continue}if(_==="style"){Je(t,L,r==null?void 0:r[sr],a[sr]),m[_]=L,m[sr]=a[sr];continue}var y=m[_];if(!(L===y&&!(L===void 0&&t.hasAttribute(_)))){m[_]=L;var R=_[0]+_[1];if(R!=="$$")if(R==="on"){const z={},D="$$"+_;let U=_.slice(2);var g=Ps(U);if(Cs(U)&&(U=U.slice(0,-7),z.capture=!0),!g&&y){if(L!=null)continue;t.removeEventListener(U,m[D],z),m[D]=null}if(g)ie(U,t,L),We([U]);else if(L!=null){let H=function(O){m[_].call(this,O)};m[D]=Ss(U,t,H,z)}}else if(_==="style")we(t,_,L);else if(_==="autofocus")ds(t,!!L);else if(!x&&(_==="__value"||_==="value"&&L!=null))t.value=t.__value=L;else if(_==="selected"&&A)qs(t,L);else{var b=_;w||(b=$s(b));var $=b==="defaultValue"||b==="defaultChecked";if(L==null&&!x&&!$)if(d[_]=null,b==="value"||b==="checked"){let z=t;const D=r===void 0;if(b==="value"){let U=z.defaultValue;z.removeAttribute(b),z.defaultValue=U,z.value=z.__value=D?U:null}else{let U=z.defaultChecked;z.removeAttribute(b),z.defaultChecked=U,z.checked=D?U:!1}}else t.removeAttribute(_);else $||v.includes(b)&&(x||typeof L!="string")?(t[b]=L,b in d&&(d[b]=fs)):typeof L!="function"&&we(t,b,L)}}}return T&&zt(!0),m}function An(t,r,a=[],n=[],s=[],i,o=!1,l=!1){cs(s,a,n,d=>{var x=void 0,w={},T=t.nodeName===Us,m=!1;if(ca(()=>{var F=r(...d.map(e)),v=Ks(t,x,F,i,o,l);m&&T&&"value"in F&&Nr(t,F.value);for(let y of Object.getOwnPropertySymbols(w))F[y]||Er(w[y]);for(let y of Object.getOwnPropertySymbols(F)){var c=F[y];y.description===us&&(!x||c!==x[y])&&(w[y]&&Er(w[y]),w[y]=cr(()=>Fs(t,()=>c))),v[y]=c}x=v}),T){var A=t;Tr(()=>{Nr(A,x.value,!0),fa(A)})}m=!0})}function fn(t){return t.__attributes??(t.__attributes={[va]:t.nodeName.includes("-"),[ga]:t.namespaceURI===gs})}var Ln=new Map;function ha(t){var r=t.getAttribute("is")||t.nodeName,a=Ln.get(r);if(a)return a;Ln.set(r,a=[]);for(var n,s=t,i=Element.prototype;i!==s;){n=ms(s);for(var o in n)n[o].set&&a.push(o);s=hs(s)}return a}function tt(t,r,a=r){var n=new WeakSet;ua(t,"input",async s=>{var i=s?t.defaultValue:t.value;if(i=Br(t)?qr(i):i,a(i),mt!==null&&n.add(mt),await Pt(),i!==(i=r())){var o=t.selectionStart,l=t.selectionEnd,d=t.value.length;if(t.value=i??"",l!==null){var x=t.value.length;o===l&&l===d&&x>d?(t.selectionStart=x,t.selectionEnd=x):(t.selectionStart=o,t.selectionEnd=Math.min(l,x))}}}),(De&&t.defaultValue!==t.value||Rr(r)==null&&t.value)&&(a(Br(t)?qr(t.value):t.value),mt!==null&&n.add(mt)),_s(()=>{var s=r();if(t===document.activeElement){var i=mt;if(n.has(i))return}Br(t)&&s===qr(t.value)||t.type==="date"&&!s&&!t.value||s!==t.value&&(t.value=s??"")})}function Br(t){var r=t.type;return r==="number"||r==="range"}function qr(t){return t===""?null:+t}let xt=I(oe({type:"none",props:{},resolve:null}));function Gs(){return e(xt)}function ot(t=void 0){const{resolve:r}=e(xt);f(xt,{type:"none",props:{},resolve:null},!0),r==null||r(t)}function Ws(t){return new Promise(r=>{f(xt,{type:"run",props:{cases:t},resolve:r},!0)})}function Xs(t){return new Promise(r=>{f(xt,{type:"restart",props:{cases:t},resolve:r},!0)})}function Ys(t){return new Promise(r=>{f(xt,{type:"clean",props:{cases:t},resolve:r},!0)})}function Ye(t,r="Alert"){return new Promise(a=>{f(xt,{type:"alert",props:{title:r,message:t},resolve:()=>a()},!0)})}function Tn(t,r="Confirm",a="OK",n="primary"){return new Promise(s=>{f(xt,{type:"confirm",props:{title:r,message:t,confirmLabel:a,confirmVariant:n},resolve:s},!0)})}function vn(t,r="",a="Input",n="",s=!1){return new Promise(i=>{f(xt,{type:"prompt",props:{title:a,message:t,value:r,placeholder:n,multiline:s},resolve:i},!0)})}var Qs=P('
');function Zt(t,r){function a(i){return document.body.appendChild(i),{destroy(){i.remove()}}}var n=Qs(),s=C(n);ft(s,()=>r.children),p(n),Ts(n,i=>a==null?void 0:a(i)),u(t,n)}var Zs=P('
'),Js=P('
');function vr(t,r){Ae(r,!0);const a=F=>{var v=Js(),c=C(v),y=C(c),R=C(y),g=C(R,!0);p(R);var b=E(R,2);{var $=D=>{var U=Zs(),H=C(U,!0);p(U),Q(()=>ee(H,r.subtitle)),u(D,U)};Y(b,D=>{r.subtitle&&D($)})}p(y);var _=E(y,2);ft(_,()=>r.children);var L=E(_,2),z=C(L);ft(z,()=>r.footer),p(L),p(c),p(v),Q(()=>{Se(c,1,`w-[min(${n()??""},96vw)] bg-white border border-border rounded-[10px] p-4.5`),we(c,"aria-labelledby",r.titleId),we(R,"id",r.titleId),ee(g,r.title)}),ie("keydown",v,o),ie("mousedown",v,d),ie("click",v,x),u(F,v)};let n=he(r,"maxWidth",3,"520px"),s=he(r,"portal",3,!1);function i(){r.onCancel?r.onCancel():ot(null)}function o(F){F.key==="Escape"?i():F.key==="Enter"&&r.onConfirm&&r.onConfirm()}let l=!1;function d(F){l=F.target.dataset.backdrop!==void 0}function x(F){const v=F.target.dataset.backdrop!==void 0;l&&v&&i(),l=!1}var w=_e(),T=B(w);{var m=F=>{Zt(F,{children:(v,c)=>{a(v)}})},A=F=>{a(F)};Y(T,F=>{s()?F(m):F(A,-1)})}u(t,w),Le()}We(["keydown","mousedown","click"]);var eo=P("");function $e(t,r){let a=he(r,"variant",3,"primary"),n=he(r,"size",3,"default"),s=he(r,"disabled",3,!1);const i={default:"h-[34px] rounded-md px-3.5 leading-none text-[13px] tracking-wide",sm:"h-[30px] rounded-md px-2.5 leading-none text-xs"},o={primary:"bg-edf-bleu-moyen text-white border-none hover:bg-[rgb(12,72,170)]",secondary:"bg-white text-ink border border-border hover:bg-edf-gris-clair",run:"bg-edf-vert-fonce text-white border-none hover:bg-[rgb(38,98,12)]",warning:"bg-edf-orange-moyen text-white border-none hover:bg-[rgb(230,118,20)]",danger:"bg-edf-orange-fonce text-white border-none hover:bg-[rgb(180,56,8)]"};var l=eo(),d=C(l);ft(d,()=>r.children),p(l),Q(()=>{Se(l,1,`inline-flex items-center justify-center gap-1.5 font-bold cursor-pointer transition-colors duration-150 disabled:opacity-40 disabled:pointer-events-none ${i[n()]??""} ${o[a()]??""}`),l.disabled=s()}),ie("click",l,function(...x){var w;(w=r.onclick)==null||w.apply(this,x)}),u(t,l)}We(["click"]);var to=P(" ",1),ro=P(''),no=P(''),ao=P('
'),so=P('

',1);function oo(t,r){Ae(r,!0);let a=he(r,"confirmLabel",3,"OK"),n=he(r,"confirmVariant",3,"primary"),s=he(r,"value",3,""),i=he(r,"placeholder",3,""),o=he(r,"multiline",3,!1);const l=s();let d=I(oe(l)),x=I(void 0),w=I(void 0);Ne(()=>{var A;r.mode==="prompt"&&e(x)?(e(x).focus(),"select"in e(x)&&e(x).select()):e(w)&&((A=e(w).querySelector("button"))==null||A.focus())});function T(){r.mode==="prompt"?ot(e(d)):r.mode==="confirm"?ot(!0):ot()}function m(){r.mode==="confirm"?ot(!1):r.mode==="prompt"?ot(null):ot()}{const A=v=>{var c=to(),y=B(c);{var R=$=>{$e($,{variant:"secondary",onclick:m,children:(_,L)=>{ke();var z=Be("Cancel");u(_,z)},$$slots:{default:!0}})};Y(y,$=>{r.mode!=="alert"&&$(R)})}var g=E(y,2),b=C(g);$e(b,{get variant(){return n()},onclick:T,children:($,_)=>{ke();var L=Be();Q(()=>ee(L,a())),u($,L)},$$slots:{default:!0}}),p(g),nt(g,$=>f(w,$),()=>e(w)),u(v,c)};let F=j(()=>o()?void 0:T);vr(t,{get title(){return r.title},titleId:"app-dialog-title",get onConfirm(){return e(F)},onCancel:m,footer:A,children:(v,c)=>{var y=so(),R=B(y),g=C(R,!0);p(R);var b=E(R,2);{var $=_=>{var L=ao(),z=C(L);{var D=H=>{var O=ro();bs(O),nt(O,V=>f(x,V),()=>e(x)),Q(()=>we(O,"placeholder",i())),tt(O,()=>e(d),V=>f(d,V)),u(H,O)},U=H=>{var O=no();Qe(O),nt(O,V=>f(x,V),()=>e(x)),Q(()=>we(O,"placeholder",i())),tt(O,()=>e(d),V=>f(d,V)),u(H,O)};Y(z,H=>{o()?H(D):H(U,-1)})}p(L),u(_,L)};Y(b,_=>{r.mode==="prompt"&&_($)})}Q(()=>ee(g,r.message)),u(v,y)},$$slots:{footer:!0,default:!0}})}Le()}var io=P('');function Me(t,r){var a=io(),n=C(a),s=E(n);ft(s,()=>r.children),p(a),Q(()=>ee(n,`${r.text??""} `)),u(t,a)}function Ct(t,r){const a=localStorage.getItem(t);if(a===null)return r;const n=Number(a);return Number.isFinite(n)?n:r}function St(t,r){Number.isFinite(r)&&localStorage.setItem(t,String(r))}function lo(t,r){return localStorage.getItem(t)??r}function co(){return{n:Ct("csauto_run_n",1),nt:Ct("csauto_run_nt",1),maxParallel:Ct("csauto_run_max_parallel",0)||null}}function uo(t){St("csauto_run_n",t.n),St("csauto_run_nt",t.nt),t.maxParallel&&St("csauto_run_max_parallel",t.maxParallel)}function fo(){return{n:Ct("csauto_restart_n",1),nt:Ct("csauto_restart_nt",1),maxParallel:Ct("csauto_restart_max_parallel",0)||null,mode:lo("csauto_restart_mode","iterations"),value:Ct("csauto_restart_value",100)}}function vo(t){St("csauto_restart_n",t.n),St("csauto_restart_nt",t.nt),t.maxParallel&&St("csauto_restart_max_parallel",t.maxParallel),localStorage.setItem("csauto_restart_mode",t.mode),St("csauto_restart_value",t.value)}function go(){return{keepLast:Ct("csauto_clean_keep_last",1)}}function ho(t){St("csauto_clean_keep_last",t.keepLast)}var po=P(" ",1),mo=P(''),_o=P(''),bo=P(''),xo=P('
');function yo(t,r){Ae(r,!0);const a=co(),n=a.maxParallel??(r.cases.length>1?r.cases.length:0);let s=I(oe(a.n)),i=I(oe(a.nt)),o=I(oe(n));async function l(){if(!Number.isFinite(e(s))||e(s)<=0){await Ye("MPI ranks must be an integer > 0.","Invalid value");return}if(!Number.isFinite(e(i))||e(i)<=0){await Ye("Threads must be an integer > 0.","Invalid value");return}if(e(o)&&(!Number.isFinite(e(o))||e(o)<=0)){await Ye("Max parallel must be empty or > 0.","Invalid value");return}const d={n:e(s),nt:e(i),maxParallel:e(o)||null};uo(d),ot(d)}{const d=T=>{var m=po(),A=B(m);$e(A,{variant:"secondary",onclick:()=>ot(null),children:(v,c)=>{ke();var y=Be("Cancel");u(v,y)},$$slots:{default:!0}});var F=E(A,2);$e(F,{variant:"run",onclick:l,children:(v,c)=>{ke();var y=Be("Run");u(v,y)},$$slots:{default:!0}}),u(T,m)};let x=j(()=>r.cases.length),w=j(()=>r.cases.length>1?"s":"");vr(t,{title:"Run Cases",titleId:"run-dialog-title",get subtitle(){return`${e(x)??""} case${e(w)??""} selected`},onConfirm:l,footer:d,children:(T,m)=>{var A=xo(),F=C(A);Me(F,{text:"MPI Ranks (n)",children:(y,R)=>{var g=mo();Qe(g),tt(g,()=>e(s),b=>f(s,b)),u(y,g)}});var v=E(F,2);Me(v,{text:"OMP Threads (nt)",children:(y,R)=>{var g=_o();Qe(g),tt(g,()=>e(i),b=>f(i,b)),u(y,g)}});var c=E(v,2);Me(c,{text:"Max Parallel",children:(y,R)=>{var g=bo();Qe(g),tt(g,()=>e(o),b=>f(o,b)),u(y,g)}}),p(A),u(T,A)},$$slots:{footer:!0,default:!0}})}Le()}var wo=P(" ",1),ko=P(''),Co=P(''),So=P(''),$o=P(""),Po=P(''),Eo=P('
',1);function Ro(t,r){Ae(r,!0);const a=fo(),n=a.maxParallel??(r.cases.length>1?r.cases.length:0);let s=I(oe(a.n)),i=I(oe(a.nt)),o=I(oe(n)),l=I(oe(a.mode)),d=I(oe(a.value)),x=j(()=>e(l)==="iterations"?"Additional iterations":"Additional physical time"),w=j(()=>e(l)==="iterations"?"1":"any"),T=j(()=>e(l)==="iterations"?"1":"0");async function m(){if(!Number.isFinite(e(s))||e(s)<=0){await Ye("MPI ranks must be an integer > 0.","Invalid value");return}if(!Number.isFinite(e(i))||e(i)<=0){await Ye("Threads must be an integer > 0.","Invalid value");return}if(e(o)&&(!Number.isFinite(e(o))||e(o)<=0)){await Ye("Max parallel must be empty or > 0.","Invalid value");return}if(!Number.isFinite(e(d))||e(d)<=0){await Ye("Value must be > 0.","Invalid value");return}if(e(l)==="iterations"&&!Number.isInteger(e(d))){await Ye("Iterations must be an integer.","Invalid value");return}const A={n:e(s),nt:e(i),maxParallel:e(o)||null,restartMode:e(l),restartValue:e(d)};vo({n:e(s),nt:e(i),maxParallel:e(o)||null,mode:e(l),value:e(d)}),ot(A)}{const A=c=>{var y=wo(),R=B(y);$e(R,{variant:"secondary",onclick:()=>ot(null),children:(b,$)=>{ke();var _=Be("Cancel");u(b,_)},$$slots:{default:!0}});var g=E(R,2);$e(g,{variant:"warning",onclick:m,children:(b,$)=>{ke();var _=Be("Restart");u(b,_)},$$slots:{default:!0}}),u(c,y)};let F=j(()=>r.cases.length),v=j(()=>r.cases.length>1?"s":"");vr(t,{title:"Restart Cases",titleId:"restart-dialog-title",get subtitle(){return`${e(F)??""} case${e(v)??""} selected`},onConfirm:m,footer:A,children:(c,y)=>{var R=Eo(),g=B(R),b=C(g);Me(b,{text:"MPI Ranks (n)",children:(U,H)=>{var O=ko();Qe(O),tt(O,()=>e(s),V=>f(s,V)),u(U,O)}});var $=E(b,2);Me($,{text:"OMP Threads (nt)",children:(U,H)=>{var O=Co();Qe(O),tt(O,()=>e(i),V=>f(i,V)),u(U,O)}});var _=E($,2);Me(_,{text:"Max Parallel",children:(U,H)=>{var O=So();Qe(O),tt(O,()=>e(o),V=>f(o,V)),u(U,O)}}),p(g);var L=E(g,2),z=C(L);Me(z,{text:"Stop criterion",children:(U,H)=>{var O=$o(),V=C(O);V.value=V.__value="iterations";var q=E(V);q.value=q.__value="physical_time",p(O),Os(O,()=>e(l),X=>f(l,X)),u(U,O)}});var D=E(z,2);Me(D,{get text(){return e(x)},children:(U,H)=>{var O=Po();Qe(O),Q(()=>{we(O,"min",e(T)),we(O,"step",e(w))}),tt(O,()=>e(d),V=>f(d,V)),u(U,O)}}),p(L),u(c,R)},$$slots:{footer:!0,default:!0}})}Le()}function Te(t,r){let a=he(r,"size",3,14);var n=_e(),s=B(n);ws(s,()=>r.icon,(i,o)=>{o(i,{get size(){return a()},class:"icon"})}),u(t,n)}/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const No={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const Mo=t=>{for(const r in t)if(r.startsWith("aria-")||r==="role"||r==="title")return!0;return!1};/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const Fn=(...t)=>t.filter((r,a,n)=>!!r&&r.trim()!==""&&n.indexOf(r)===a).join(" ").trim();var Ao=Ot("");function Ke(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]),n=Ve(a,["name","color","size","strokeWidth","absoluteStrokeWidth","iconNode"]);Ae(r,!1);let s=he(r,"name",8,void 0),i=he(r,"color",8,"currentColor"),o=he(r,"size",8,24),l=he(r,"strokeWidth",8,2),d=he(r,"absoluteStrokeWidth",8,!1),x=he(r,"iconNode",24,()=>[]);Es();var w=Ao();An(w,(A,F,v)=>({...No,...A,...n,width:o(),height:o(),stroke:i(),"stroke-width":F,class:v}),[()=>Mo(n)?void 0:{"aria-hidden":"true"},()=>(Vt(d()),Vt(l()),Vt(o()),Rr(()=>d()?Number(l())*24/Number(o()):l())),()=>(Vt(Fn),Vt(s()),Vt(a),Rr(()=>Fn("lucide-icon","lucide",s()?`lucide-${s()}`:"",a.class)))]);var T=C(w);Ze(T,1,x,un,(A,F)=>{var v=j(()=>xs(e(F),2));let c=()=>e(v)[0],y=()=>e(v)[1];var R=_e(),g=B(R);Ls(g,c,!0,(b,$)=>{An(b,()=>({...y()}))}),u(A,R)});var m=E(T);Ue(m,r,"default",{}),p(w),u(t,w),Le()}function Lo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M12 5v14"}],["path",{d:"m19 12-7 7-7-7"}]];Ke(t,qe({name:"arrow-down"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function To(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M8 3 4 7l4 4"}],["path",{d:"M4 7h16"}],["path",{d:"m16 21 4-4-4-4"}],["path",{d:"M20 17H4"}]];Ke(t,qe({name:"arrow-left-right"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Fo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"m5 12 7-7 7 7"}],["path",{d:"M12 19V5"}]];Ke(t,qe({name:"arrow-up"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function gn(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"m6 9 6 6 6-6"}]];Ke(t,qe({name:"chevron-down"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Do(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"m9 18 6-6-6-6"}]];Ke(t,qe({name:"chevron-right"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function zo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["circle",{cx:"12",cy:"12",r:"10"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1"}]];Ke(t,qe({name:"circle-stop"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Io(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m15 9-6 6"}],["path",{d:"m9 9 6 6"}]];Ke(t,qe({name:"circle-x"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function gr(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]];Ke(t,qe({name:"download"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Oo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97"}]];Ke(t,qe({name:"droplets"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Ho(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["circle",{cx:"12",cy:"12",r:"1"}],["circle",{cx:"19",cy:"12",r:"1"}],["circle",{cx:"5",cy:"12",r:"1"}]];Ke(t,qe({name:"ellipsis"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function jo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M15 3h6v6"}],["path",{d:"M10 14 21 3"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}]];Ke(t,qe({name:"external-link"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Vo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z"}],["path",{d:"M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z"}]];Ke(t,qe({name:"fast-forward"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Uo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1"}]];Ke(t,qe({name:"pause"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Bo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M13 21h8"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}]];Ke(t,qe({name:"pen-line"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function qo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}],["path",{d:"m15 5 4 4"}]];Ke(t,qe({name:"pencil"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function pa(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"}]];Ke(t,qe({name:"play"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Ko(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];Ke(t,qe({name:"plus"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Jt(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}],["path",{d:"M8 16H3v5"}]];Ke(t,qe({name:"refresh-cw"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Go(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}]];Ke(t,qe({name:"rotate-ccw"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Wo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7"}]];Ke(t,qe({name:"save"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Xo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["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"}],["circle",{cx:"12",cy:"12",r:"3"}]];Ke(t,qe({name:"settings"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Yo(t,r){const a=Ve(r,["children","$$slots","$$events","$$legacy"]);/** - * @license lucide-svelte v1.0.1 - ISC - * - * ISC License - * - * Copyright (c) 2026 Lucide Icons and Contributors - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * --- - * - * The following Lucide icons are derived from the Feather project: - * - * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out - * - * The MIT License (MIT) (for the icons listed above) - * - * Copyright (c) 2013-present Cole Bemis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */const n=[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]];Ke(t,qe({name:"trash-2"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=_e(),l=B(o);Ue(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}var Qo=P('
  • '),Zo=P('
      '),Jo=P('
      ',1);function lt(t,r){Ae(r,!0);let a=he(r,"value",3,""),n=he(r,"placeholder",3,"Select..."),s=he(r,"class",3,""),i=he(r,"buttonClass",3,""),o=I(!1),l=I(void 0),d=I(void 0),x=I(""),w=j(()=>{var D;return((D=r.options.find(U=>U.value===a()))==null?void 0:D.label)??n()});function T(D){var U;f(o,!1),(U=r.onchange)==null||U.call(r,D)}function m(){if(!e(l)||!e(d))return;const D=e(l).getBoundingClientRect(),U=e(d).offsetHeight,H=4,O=window.innerHeight-D.bottom-H,q=OO?D.top-H-U:D.bottom+H,X=Math.min(D.left,window.innerWidth-D.width);f(x,`position:fixed; top:${q}px; left:${X}px; width:${D.width}px; z-index:9999;`)}async function A(){f(o,!e(o)),e(o)&&(await Pt(),m())}function F(D){D.key==="Escape"&&f(o,!1)}function v(D){e(o)&&e(l)&&!e(l).contains(D.target)&&e(d)&&!e(d).contains(D.target)&&f(o,!1)}var c=Jo();rt("mousedown",it,v),rt("keydown",it,F),rt("scroll",it,()=>{e(o)&&f(o,!1)});var y=B(c),R=C(y),g=C(R),b=C(g,!0);p(g);var $=E(g,2),_=C($);Te(_,{get icon(){return gn},size:14}),p($),p(R),nt(R,D=>f(l,D),()=>e(l)),p(y);var L=E(y,2);{var z=D=>{Zt(D,{children:(U,H)=>{var O=Zo();Ze(O,21,()=>r.options,V=>V.value,(V,q)=>{var X=Qo();we(X,"tabindex",0);var ae=C(X,!0);p(X),Q(()=>{we(X,"aria-selected",e(q).value===a()),Se(X,1,`px-2.5 py-1.5 text-[13px] cursor-pointer transition-colors duration-100 - ${e(q).value===a()?"text-edf-bleu-fonce font-bold bg-[rgba(16,87,200,0.06)]":"text-ink hover:bg-edf-gris-clair"}`),ee(ae,e(q).label)}),ie("mousedown",X,N=>{N.stopPropagation(),T(e(q).value)}),u(V,X)}),p(O),nt(O,V=>f(d,V),()=>e(d)),Q(()=>Je(O,e(x))),u(U,O)}})};Y(L,D=>{e(o)&&D(z)})}Q(()=>{Se(y,1,`relative inline-flex ${s()??""}`),Se(R,1,dt(i()||"flex items-center justify-between gap-1.5 w-full h-[30px] cursor-pointer bg-white border border-border rounded-md text-[13px] text-ink font-normal pl-2.5 pr-2 transition-colors duration-150 hover:bg-edf-gris-clair focus:outline-none focus:border-edf-bleu-moyen")),we(R,"aria-expanded",e(o)),ee(b,e(w)),Se($,1,`text-muted shrink-0 transition-transform duration-150 ${e(o)?"rotate-180":""}`)}),ie("mousedown",R,D=>{D.stopPropagation(),A()}),u(t,c),Le()}We(["mousedown"]);var ei=Ot(''),ti=P('
      '),ri=P('
      '),ni=P('
      ',1);function Gt(t,r){Ae(r,!0);let a=he(r,"selected",19,()=>[]),n=he(r,"placeholder",3,"Select..."),s=he(r,"class",3,""),i=I(!1),o=I(void 0),l=I(void 0),d=I(""),x=j(()=>new Set(a())),w=j(()=>a().length===0?n():a().length===r.options.length?`All (${r.options.length})`:a().length<=2?a().map(H=>{var O;return((O=r.options.find(V=>V.value===H))==null?void 0:O.label)??H}).join(", "):`${a().length} selected`);function T(H){var V;const O=new Set(e(x));O.has(H)?O.delete(H):O.add(H),(V=r.onchange)==null||V.call(r,[...O])}function m(){var H;(H=r.onchange)==null||H.call(r,r.options.map(O=>O.value))}function A(){var H;(H=r.onchange)==null||H.call(r,[])}function F(){if(!e(o)||!e(l))return;const H=e(o).getBoundingClientRect(),O=e(l).offsetHeight,V=4,q=window.innerHeight-H.bottom-V,ae=qq?H.top-V-O:H.bottom+V,N=Math.min(H.left,window.innerWidth-H.width);f(d,`position:fixed; top:${ae}px; left:${N}px; min-width:${H.width}px; z-index:9999;`)}async function v(){f(i,!e(i)),e(i)&&(await Pt(),F())}function c(H){e(i)&&e(o)&&!e(o).contains(H.target)&&e(l)&&!e(l).contains(H.target)&&f(i,!1)}function y(H){H.key==="Escape"&&f(i,!1)}var R=ni();rt("mousedown",it,c),rt("keydown",it,y),rt("scroll",it,()=>{e(i)&&f(i,!1)});var g=B(R),b=C(g),$=C(b),_=C($,!0);p($);var L=E($,2),z=C(L);Te(z,{get icon(){return gn},size:14}),p(L),p(b),nt(b,H=>f(o,H),()=>e(o)),p(g);var D=E(g,2);{var U=H=>{Zt(H,{children:(O,V)=>{var q=ri(),X=C(q),ae=C(X),N=E(ae,2);p(X);var M=E(X,2);Ze(M,17,()=>r.options,h=>h.value,(h,k)=>{var S=ti(),Z=C(S),re=C(Z);{var ge=se=>{var ue=ei();u(se,ue)},le=j(()=>e(x).has(e(k).value));Y(re,se=>{e(le)&&se(ge)})}p(Z);var K=E(Z,2),ne=C(K,!0);p(K),p(S),Q(se=>{Se(Z,1,`inline-flex items-center justify-center shrink-0 w-[14px] h-[14px] rounded border-2 transition-colors duration-100 - ${se??""}`),ee(ne,e(k).label)},[()=>e(x).has(e(k).value)?"bg-edf-bleu-moyen border-edf-bleu-moyen text-white":"bg-white border-edf-gris-moyen"]),ie("mousedown",S,se=>{se.stopPropagation(),T(e(k).value)}),u(h,S)}),p(q),nt(q,h=>f(l,h),()=>e(l)),Q(()=>Je(q,e(d))),ie("mousedown",ae,h=>{h.stopPropagation(),m()}),ie("mousedown",N,h=>{h.stopPropagation(),A()}),u(O,q)}})};Y(D,H=>{e(i)&&H(U)})}Q(()=>{Se(g,1,`relative inline-flex ${s()??""}`),we(b,"aria-expanded",e(i)),ee(_,e(w)),Se(L,1,`text-muted shrink-0 transition-transform duration-150 ${e(i)?"rotate-180":""}`)}),ie("mousedown",b,H=>{H.stopPropagation(),v()}),u(t,R),Le()}We(["mousedown"]);const Yr="csauto_token";let ma=I(oe(localStorage.getItem(Yr)??""));function _a(){return e(ma)}function ba(t){f(ma,t,!0),t?localStorage.setItem(Yr,t):localStorage.removeItem(Yr)}let xr=null;async function hn(t,r={}){const a=new Headers(r.headers),n=_a();n&&a.set("X-CSAUTO-TOKEN",n);const s=await fetch(t,{...r,headers:a});if(s.status===401){xr||(xr=vn("API token required:",n,"Authentication"));const i=await xr;return xr=null,i===null?s:(ba(i),a.set("X-CSAUTO-TOKEN",i),fetch(t,{...r,headers:a}))}return s}async function ct(t){const r=await hn(t);if(!r.ok)throw new Error(`GET ${t} failed: ${r.status}`);return r.json()}async function Dr(t){const r=await hn(t);if(!r.ok)throw new Error(`GET ${t} failed: ${r.status}`);return r.text()}async function Rt(t,r){const a=await hn(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!a.ok){const n=await a.text().catch(()=>a.statusText);throw new Error(`POST ${t} failed: ${a.status} — ${n}`)}return a.json()}function zr(t){return t.map(r=>`case=${encodeURIComponent(r)}`).join("&")}function ai(t=!1){return ct(`/api/status${t?"?log=1":""}`)}function Dn(t){return ct(`/api/perf?${zr(t)}`)}function si(){return ct("/api/app_config")}function oi(t){return ct(`/api/residual_columns?${zr(t)}`).then(r=>r.columns??[])}function ii(t,r,a={}){const n=new URLSearchParams;return t.forEach(s=>n.append("case",s)),n.set("columns",r.join(",")),a.width&&n.set("width",String(a.width)),a.height&&n.set("height",String(a.height)),a.xMin!==void 0&&n.set("x_min",String(a.xMin)),a.includeHistory&&n.set("include_history","true"),Dr(`/api/residuals_svg?${n}`)}function xa(t){return ct(`/api/restart_origin?${zr(t)}`)}function li(t){var a;const r=new URLSearchParams;return t.cases.forEach(n=>r.append("case",n)),(a=t.files)!=null&&a.length&&r.set("files",t.files.join(",")),t.maxHits&&r.set("max_hits",String(t.maxHits)),t.context!==void 0&&r.set("context",String(t.context)),t.sev&&r.set("sev",t.sev),t.q&&r.set("q",t.q),ct(`/api/recent_errors?${r}`)}function ci(t,r,a){const n=new URLSearchParams({case:t,file:r,n:String(a)});return Dr(`/api/tail?${n}`)}function ui(t){return ct(`/api/resu_files?case=${encodeURIComponent(t)}`).then(r=>r.files??[])}function di(t){return ct(`/api/resu_dirs?${zr(t)}`).then(r=>r.dirs??[])}function Qr(t,r){const a=new URLSearchParams({scope:r});return t.forEach(n=>a.append("case",n)),ct(`/api/probes?${a}`).then(n=>n.files??[])}function fi(t,r){const a=new URLSearchParams;return t.forEach(n=>a.append("case",n)),r.forEach(n=>a.append("probe",n)),ct(`/api/probe_columns?${a}`).then(n=>n.columns??[])}function vi(t,r,a){const n=new URLSearchParams({case:t,probe:r});return a.forEach(s=>n.append("column",s)),ct(`/api/probe_position?${n}`)}function gi(t){const r=new URLSearchParams;return t.cases.forEach(a=>r.append("case",a)),t.probes.forEach(a=>r.append("probe",a)),r.set("columns",t.columns.join(",")),t.axis&&r.set("axis",t.axis),t.xMin!==void 0&&r.set("x_min",String(t.xMin)),t.timeMin!==void 0&&r.set("time_min",String(t.timeMin)),r.set("include_history","true"),t.width&&r.set("width",String(t.width)),t.height&&r.set("height",String(t.height)),Dr(`/api/probe_svg?${r}`)}function hi(t){const r=new URLSearchParams;return t.cases.forEach(a=>r.append("case",a)),t.base&&r.set("base",t.base),t.kind&&r.set("kind",t.kind),t.filter&&r.set("filter",t.filter),Dr(`/api/compare_runs?${r}`)}function zn(t){return Rt("/api/run_case",{cases:t.cases,n:t.n,nt:t.nt,max_parallel:t.maxParallel??void 0,restart:t.restart??!1,restart_mode:t.restartMode??"",restart_value:t.restartValue??void 0}).then(()=>{})}function pi(t){return Rt("/api/kill_case",{cases:t}).then(()=>{})}function yr(t){return Rt("/api/control_case",{cases:t.cases,action:t.action,value:t.value??void 0}).then(()=>{})}function mi(t){return Rt("/api/cleanup_cases",{cases:t.cases,keep_last:t.keepLast??1,prune_resu:t.pruneResu??!0,keep_resu:t.keepResu??[],delete_resu:t.deleteResu??[],max_log_mb:t.maxLogMb??50,clear_cid:!0,clear_pyc:!1})}function _i(t,r){return Rt("/api/case_note",{case:t,note:r}).then(()=>{})}function bi(t,r){return Rt("/api/case_convergence",{case:t,convergence:r}).then(()=>{})}function xi(t){return Rt("/api/open_gui",{case:t}).then(()=>{})}function yi(){return ct("/api/settings/telemetry")}function wi(t){return Rt("/api/settings/telemetry",{enabled:t})}var ki=P(" ",1),Ci=P(''),Si=P('Loading...'),$i=P('No folders found'),Pi=P('
      '),Ei=P('
      ',1);function Ri(t,r){Ae(r,!0);const a=go();let n=I("keep_latest"),s=I(oe(a.keepLast)),i=I(oe([])),o=I(oe([])),l=I(!0),d=j(()=>e(n)==="keep_folder"||e(n)==="delete_folder");const x=[{value:"keep_latest",label:"Keep latest N"},{value:"delete_all",label:"Delete all RESU"},{value:"keep_folder",label:"Keep specific folders"},{value:"delete_folder",label:"Delete specific folders"}];let w=j(()=>e(i).map(m=>({value:m,label:m})));Yn(async()=>{try{f(i,await di(r.cases),!0)}catch{f(i,[],!0)}f(l,!1)});async function T(){if(e(d)&&e(o).length===0){await Ye("Please select at least one RESU folder.","Missing selection");return}const m={action:e(n)};e(n)==="keep_latest"?(m.keepLast=e(s),ho({keepLast:e(s)})):e(n)==="delete_all"?m.keepLast=0:e(n)==="keep_folder"?m.keepResu=e(o):e(n)==="delete_folder"&&(m.deleteResu=e(o)),ot(m)}{const m=v=>{var c=ki(),y=B(c);$e(y,{variant:"secondary",onclick:()=>ot(null),children:(g,b)=>{ke();var $=Be("Cancel");u(g,$)},$$slots:{default:!0}});var R=E(y,2);$e(R,{variant:"primary",onclick:T,children:(g,b)=>{ke();var $=Be("Clean");u(g,$)},$$slots:{default:!0}}),u(v,c)};let A=j(()=>r.cases.length),F=j(()=>r.cases.length>1?"s":"");vr(t,{title:"Cleanup Cases",titleId:"clean-dialog-title",get subtitle(){return`${e(A)??""} case${e(F)??""} selected`},footer:m,children:(v,c)=>{var y=Ei(),R=B(y),g=C(R);Me(g,{text:"Action",children:(z,D)=>{lt(z,{class:"w-[200px]",get options(){return x},get value(){return e(n)},onchange:U=>f(n,U,!0)})}});var b=E(g,2);{var $=z=>{Me(z,{text:"Keep last",children:(D,U)=>{var H=Ci();Qe(H),tt(H,()=>e(s),O=>f(s,O)),u(D,H)}})};Y(b,z=>{e(n)==="keep_latest"&&z($)})}p(R);var _=E(R,2);{var L=z=>{var D=Pi(),U=C(D);Me(U,{text:"RESU folders",children:(H,O)=>{var V=_e(),q=B(V);{var X=M=>{var h=Si();u(M,h)},ae=M=>{var h=$i();u(M,h)},N=M=>{Gt(M,{class:"w-full",get options(){return e(w)},get selected(){return e(o)},onchange:h=>f(o,h,!0),placeholder:"Select folders..."})};Y(q,M=>{e(l)?M(X):e(i).length===0?M(ae,1):M(N,-1)})}u(H,V)}}),p(D),u(z,D)};Y(_,z=>{e(d)&&z(L)})}u(v,y)},$$slots:{footer:!0,default:!0}})}Le()}function Ni(t,r){Ae(r,!0);let a=j(Gs);var n=_e(),s=B(n);{var i=x=>{yo(x,{get cases(){return e(a).props.cases}})},o=x=>{Ro(x,{get cases(){return e(a).props.cases}})},l=x=>{Ri(x,{get cases(){return e(a).props.cases}})},d=x=>{oo(x,{get mode(){return e(a).type},get title(){return e(a).props.title},get message(){return e(a).props.message},get confirmLabel(){return e(a).props.confirmLabel},get confirmVariant(){return e(a).props.confirmVariant},get value(){return e(a).props.value},get placeholder(){return e(a).props.placeholder},get multiline(){return e(a).props.multiline}})};Y(s,x=>{e(a).type==="run"?x(i):e(a).type==="restart"?x(o,1):e(a).type==="clean"?x(l,2):(e(a).type==="alert"||e(a).type==="confirm"||e(a).type==="prompt")&&x(d,3)})}u(t,n),Le()}let ur=I(oe([])),Mi=0;function Ai(){return e(ur)}function wr(t,r="success",a=3500){const n=++Mi;f(ur,[...e(ur),{id:n,message:t,variant:r}],!0),setTimeout(()=>ya(n),a)}function ya(t){f(ur,e(ur).filter(r=>r.id!==t),!0)}var Li=P('
      '),Ti=P('
      ');function Fi(t,r){Ae(r,!0);let a=j(Ai);Zt(t,{children:(n,s)=>{var i=Ti();Ze(i,21,()=>e(a),o=>o.id,(o,l)=>{var d=Li(),x=C(d,!0);p(d),Q(()=>{Se(d,1,`pointer-events-auto max-w-[320px] px-4 py-2.5 rounded-md shadow-lg text-sm font-semibold text-white cursor-pointer ${e(l).variant==="success"?"bg-edf-vert-fonce":"bg-edf-orange-fonce"}`),ee(x,e(l).message)}),ie("click",d,()=>ya(e(l).id)),u(o,d)}),p(i),u(n,i)}}),Le()}We(["click"]);var Di=Ot(''),zi=Ot(''),Ii=P(''),Oi=P(" ",1),Hi=P(" ",1),ji=P('');function It(t,r){Ae(r,!0);const a=v=>{var c=Ii(),y=C(c);{var R=b=>{var $=Di();Q(()=>Je($,`width: ${o()-4}px; height: ${o()-4}px;`)),u(b,$)},g=b=>{var $=zi();Q(()=>Je($,`width: ${o()-4}px; height: ${o()-4}px;`)),u(b,$)};Y(y,b=>{n()&&!s()?b(R):s()&&b(g,1)})}p(c),Q(()=>{Se(c,1,`inline-flex items-center justify-center rounded border-2 cursor-pointer transition-colors duration-100 shrink-0 - ${i()?"opacity-40 cursor-not-allowed":""} - ${n()||s()?"bg-edf-bleu-moyen border-edf-bleu-moyen text-white":"bg-white border-edf-gris-moyen hover:border-edf-bleu-clair"}`),Je(c,`width: ${o()??""}px; height: ${o()??""}px;`),we(c,"aria-checked",s()?"mixed":n()),we(c,"aria-disabled",i()),we(c,"tabindex",i()?-1:0)}),ie("click",c,x),ie("keydown",c,w),u(v,c)};let n=he(r,"checked",3,!1),s=he(r,"indeterminate",3,!1),i=he(r,"disabled",3,!1),o=he(r,"size",3,16),l=he(r,"label",3,""),d=he(r,"labelFirst",3,!1);function x(v){var y;if(v.stopPropagation(),i())return;const c=s()?!0:!n();(y=r.onchange)==null||y.call(r,c)}function w(v){(v.key===" "||v.key==="Enter")&&(v.preventDefault(),v.stopPropagation(),x(v))}var T=_e(),m=B(T);{var A=v=>{var c=ji(),y=C(c);{var R=b=>{var $=Oi(),_=B($),L=C(_,!0);p(_);var z=E(_);a(z),Q(()=>ee(L,l())),u(b,$)},g=b=>{var $=Hi(),_=B($);a(_);var L=E(_),z=C(L,!0);p(L),Q(()=>ee(z,l())),u(b,$)};Y(y,b=>{d()?b(R):b(g,-1)})}p(c),ie("click",c,x),ie("keydown",c,w),u(v,c)},F=v=>{a(v)};Y(m,v=>{l()?v(A):v(F,-1)})}u(t,T),Le()}We(["click","keydown"]);function pn(t,r){try{const a=localStorage.getItem(t);return a===null?r:JSON.parse(a)}catch{return r}}function Ir(t,r){localStorage.setItem(t,JSON.stringify(r))}const Zr=new Map;function hr(t,r,a){vt(t),Zr.set(t,setInterval(r,a))}function vt(t){const r=Zr.get(t);r!==void 0&&(clearInterval(r),Zr.delete(t))}const Tt={status:1e3,tail:1e3,plot:3e3,probe:3e3,errors:5e3},Vi=["status","plot","probe","tail","errors"],Kr={status:{label:"Status table",min:500},plot:{label:"Residual plots",min:1e3},probe:{label:"Probe plots",min:1e3},tail:{label:"Log tail",min:500},errors:{label:"Recent errors",min:2e3}},or=pn("csauto_refresh_rates",{});let bt=I(oe({status:or.status??Tt.status,tail:or.tail??Tt.tail,plot:or.plot??Tt.plot,probe:or.probe??Tt.probe,errors:or.errors??Tt.errors}));function Ui(){return e(bt)}function Bi(t,r){f(bt,{...e(bt),[t]:r},!0),Ir("csauto_refresh_rates",e(bt))}function qi(){return e(bt).status}function In(){return e(bt).tail}function On(){return e(bt).plot}function Ki(){return e(bt).probe}function Hn(){return e(bt).errors}const Jr=new Set;function pr(t){return Jr.add(t),()=>Jr.delete(t)}function Gi(){Jr.forEach(t=>t())}const en=pn("csauto_autorefresh_enabled",{});function er(t){return en[t]??!0}function tr(t,r){en[t]=r,Ir("csauto_autorefresh_enabled",en)}var Wi=P(" ",1),Xi=P('
      ms
      '),Yi=P('
      Telemetry
      '),Qi=P('
      API token
      Auto-refresh intervals
      ',1);function Zi(t,r){Ae(r,!0);let a=I(oe(_a())),n=I(oe({...Ui()})),s=I(!0),i=I(!1);Ne(()=>{yi().then(x=>{f(s,x.enabled,!0),f(i,!0)}).catch(()=>{f(i,!1)})});function o(x){const{min:w}=Kr[x];let T=e(n)[x];(typeof T!="number"||isNaN(T))&&(T=Tt[x]),f(n,{...e(n),[x]:Math.max(w,Math.round(T))},!0)}function l(x,w){const T=w.target,m=T.value.replace(/[^0-9]/g,""),A=parseInt(m,10);isNaN(A)?m===""&&f(n,{...e(n),[x]:Kr[x].min},!0):f(n,{...e(n),[x]:A},!0),T.value=String(e(n)[x])}function d(){ba(e(a));for(const x of Object.keys(e(n)))o(x),Bi(x,e(n)[x]);e(i)&&wi(e(s)).catch(()=>{}),r.onClose()}vr(t,{title:"Settings",titleId:"settings-dialog-title",get onCancel(){return r.onClose},onConfirm:d,maxWidth:"400px",portal:!0,footer:w=>{var T=Wi(),m=B(T);$e(m,{variant:"secondary",get onclick(){return r.onClose},children:(F,v)=>{ke();var c=Be("Cancel");u(F,c)},$$slots:{default:!0}});var A=E(m,2);$e(A,{variant:"primary",onclick:d,children:(F,v)=>{ke();var c=Be("Save");u(F,c)},$$slots:{default:!0}}),u(w,T)},children:(w,T)=>{var m=Qi(),A=B(m),F=E(C(A),2);Qe(F),p(A);var v=E(A,2),c=C(v),y=E(C(c),2);p(c);var R=E(c,2);Ze(R,20,()=>Vi,$=>$,($,_)=>{const L=j(()=>Kr[_]);var z=Xi(),D=C(z),U=C(D),H=C(U,!0);p(U);var O=E(U,2),V=C(O);p(O),p(D);var q=E(D,2),X=C(q);Qe(X),ke(2),p(q),p(z),Q(()=>{ee(H,e(L).label),ee(V,`min ${e(L).min??""}ms`),dn(X,e(n)[_])}),ie("input",X,ae=>l(_,ae)),rt("blur",X,()=>o(_)),u($,z)}),p(R),p(v);var g=E(v,2);{var b=$=>{var _=Yi(),L=E(C(_),2);It(L,{get checked(){return e(s)},onchange:z=>f(s,z,!0),label:"Send anonymous usage statistics"}),p(_),u($,_)};Y(g,$=>{e(i)&&$(b)})}tt(F,()=>e(a),$=>f(a,$)),ie("click",y,()=>f(n,{...Tt},!0)),u(w,m)},$$slots:{footer:!0,default:!0}}),Le()}We(["click","input"]);const Ji=""+new URL("../assets/code-saturne.BHojVttu.svg",import.meta.url).href,el="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='Calque_1'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%20height='400px'%20viewBox='0%200%20397.89%2095.85'%3e%3c!--%20Generator:%20Adobe%20Illustrator%2029.8.1,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%202.1.1%20Build%202)%20--%3e%3cdefs%3e%3cstyle%3e%20.st0%20{%20fill:%20%23ff861d;%20}%20.st1%20{%20fill:%20%23ffb210;%20}%20.st2%20{%20fill:%20%231057c8;%20}%20.st3%20{%20fill:%20%23d6430a;%20}%20%3c/style%3e%3c/defs%3e%3cpath%20class='st2'%20d='M26.25,61.73c-12.02,0-20.11-8.16-20.11-21.37s8.01-21.37,20.33-21.37c8.83,0,15.06,3.78,17.36,11.28l-5.64,2.52c-1.48-5.94-4.97-8.69-11.87-8.69-8.46,0-14.25,6.01-14.25,16.25s5.93,16.25,13.95,16.25,11.73-2.82,12.84-8.61l5.71,1.93c-2,7.79-9.13,11.8-18.33,11.8'/%3e%3cpath%20class='st2'%20d='M89.96,40.36c0,13.21-7.87,21.37-20.48,21.37s-20.48-8.16-20.48-21.37,7.86-21.37,20.48-21.37,20.48,8.16,20.48,21.37M54.94,40.36c0,10.24,5.64,16.25,14.54,16.25s14.54-6.01,14.54-16.25-5.64-16.25-14.54-16.25-14.54,6.01-14.54,16.25'/%3e%3cpath%20class='st2'%20d='M134.3,40.29c0,13.43-8.01,20.85-21.81,20.85h-14.84V19.58h14.84c13.8,0,21.81,7.42,21.81,20.7M128.36,40.29c0-9.94-5.57-15.58-15.44-15.58h-9.35v31.32h9.35c9.87,0,15.44-5.71,15.44-15.73'/%3e%3cpolygon%20class='st2'%20points='174.11%2056.02%20174.11%2061.14%20141.98%2061.14%20141.98%2019.58%20173.14%2019.58%20173.14%2024.7%20147.91%2024.7%20147.91%2037.54%20167.65%2037.54%20167.65%2042.66%20147.91%2042.66%20147.91%2056.02%20174.11%2056.02'/%3e%3cpath%20class='st2'%20d='M213.81,22.13c4.16-1.92,9.75-3.11,14.3-3.11,12.55,0,17.74,5.19,17.74,17.34v5.27c0,4.16.08,7.28.16,10.31.08,3.12.24,5.99.48,9.19h-9.43c-.4-2.16-.4-4.88-.48-6.15h-.16c-2.48,4.56-7.83,7.11-12.71,7.11-7.28,0-14.39-4.4-14.39-12.23,0-6.15,2.96-9.75,7.03-11.75,4.08-2,9.35-2.4,13.83-2.4h5.91c0-6.63-2.96-8.87-9.27-8.87-4.56,0-9.11,1.76-12.71,4.48l-.32-9.19ZM226.36,54.26c3.27,0,5.83-1.44,7.51-3.68,1.76-2.32,2.24-5.27,2.24-8.47h-4.63c-4.8,0-11.91.8-11.91,7.11,0,3.52,2.96,5.04,6.79,5.04'/%3e%3cpath%20class='st2'%20d='M280.98,28.61c-3.28-1.12-5.67-1.76-9.59-1.76-2.88,0-6.31,1.04-6.31,4.56,0,6.56,18.62,2.4,18.62,17.27,0,9.59-8.55,13.43-17.27,13.43-4.08,0-8.23-.72-12.15-1.76l.64-8.79c3.36,1.68,6.87,2.72,10.55,2.72,2.72,0,7.03-1.04,7.03-5.04,0-8.07-18.62-2.56-18.62-17.42,0-8.87,7.75-12.79,16.14-12.79,5.03,0,8.31.8,11.67,1.52l-.72,8.07Z'/%3e%3cpath%20class='st2'%20d='M295.25,27.81h-7.91v-7.83h7.91v-8.23l10.71-3.44v11.67h9.51v7.83h-9.51v19.18c0,3.52.96,6.79,5.04,6.79,1.92,0,3.76-.4,4.88-1.12l.32,8.47c-2.24.64-4.72.96-7.91.96-8.39,0-13.03-5.2-13.03-13.35v-20.94Z'/%3e%3cpath%20class='st2'%20d='M355.22,58.82c-3.92,2.16-8.39,3.28-14.15,3.28-13.59,0-21.5-7.83-21.5-21.34,0-11.91,6.31-21.74,19.1-21.74,15.27,0,19.58,10.47,19.58,24.85h-28.45c.48,6.63,5.11,10.39,11.75,10.39,5.2,0,9.67-1.92,13.67-4.15v8.71ZM348.03,36.52c-.32-5.19-2.72-9.67-8.71-9.67s-9.03,4.16-9.51,9.67h18.22Z'/%3e%3cpath%20class='st2'%20d='M366.57,19.98h9.51v9.35h.16c.48-3.84,4.87-10.31,11.27-10.31,1.04,0,2.16,0,3.27.32v10.79c-.96-.56-2.88-.88-4.79-.88-8.71,0-8.71,10.87-8.71,16.78v15.11h-10.71V19.98Z'/%3e%3cpath%20class='st0'%20d='M229.73,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st0'%20d='M203.17,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st1'%20d='M296.14,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st1'%20d='M378.47,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st1'%20d='M269.57,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st3'%20d='M107.55,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3crect%20class='st0'%20x='134.12'%20y='75.59'%20width='42.5'%20height='10.62'/%3e%3crect%20class='st1'%20x='309.42'%20y='75.59'%20width='42.5'%20height='10.62'/%3e%3c/svg%3e";let wa=I(null);function tl(t){f(wa,t,!0)}function Ft(){return e(wa)}var rl=P('CODE_SATURNE'),nl=P('CODE_ASTER'),al=P(' '),sl=P('
      ',1);function ol(t,r){Ae(r,!0);let a=j(()=>r.shownCases!==r.totalCases),n=I(!1);var s=sl(),i=B(s),o=C(i),l=C(o);{var d=k=>{var S=rl();Q(()=>we(S,"src",Ji)),u(k,S)},x=j(()=>{var k;return!Ft()||((k=Ft())==null?void 0:k.solver)==="code_saturne"}),w=k=>{var S=nl();Q(()=>we(S,"src",el)),u(k,S)},T=j(()=>{var k;return((k=Ft())==null?void 0:k.solver)==="code_aster"}),m=k=>{var S=al(),Z=C(S,!0);p(S),Q(re=>ee(Z,re),[()=>{var re;return(re=Ft())==null?void 0:re.solver}]),u(k,S)};Y(l,k=>{e(x)?k(d):e(T)?k(w,1):k(m,-1)})}p(o);var A=E(o,2),F=C(A),v=C(F),c=C(v);{var y=k=>{var S=Be();Q(()=>ee(S,`${r.shownCases??""}/`)),u(k,S)};Y(c,k=>{e(a)&&k(y)})}var R=E(c,1,!0);p(v);var g=E(v,2),b=C(g,!0);p(g),p(F);var $=E(F,2),_=C($),L=C(_);{var z=k=>{var S=Be();Q(()=>ee(S,`${r.shownRunning??""}/`)),u(k,S)};Y(L,k=>{e(a)&&k(z)})}var D=E(L,1,!0);p(_),ke(2),p($);var U=E($,2),H=C(U),O=C(H);{var V=k=>{var S=Be();Q(()=>ee(S,`${r.shownConverged??""}/`)),u(k,S)};Y(O,k=>{e(a)&&k(V)})}var q=E(O,1,!0);p(H),ke(2),p(U),p(A);var X=E(A,2),ae=C(X),N=C(ae);Te(N,{get icon(){return Xo},size:18}),p(ae),p(X),p(i);var M=E(i,2);{var h=k=>{Zi(k,{onClose:()=>f(n,!1)})};Y(M,k=>{e(n)&&k(h)})}Q(()=>{ee(R,r.totalCases),ee(b,r.totalCases===1?"case":"cases"),ee(D,r.totalRunning),ee(q,r.totalConverged)}),ie("click",ae,()=>f(n,!0)),u(t,s),Le()}We(["click"]);const il=""+new URL("../assets/simvia-logo.kLDq7Uoj.svg",import.meta.url).href;var ll=P('
      '),cl=P('

      '),ul=P("
      "),dl=P('
      '),fl=P('
      '),vl=P('
      ');function Ht(t,r){let a=he(r,"eyebrow",3,""),n=he(r,"title",3,""),s=he(r,"wide",3,!1);var i=vl(),o=E(C(i),2);{var l=x=>{var w=fl(),T=C(w);{var m=c=>{var y=_e(),R=B(y);ft(R,()=>r.titleSlot),u(c,y)},A=c=>{var y=ul(),R=C(y);{var g=_=>{var L=ll(),z=C(L,!0);p(L),Q(()=>ee(z,a())),u(_,L)};Y(R,_=>{a()&&_(g)})}var b=E(R,2);{var $=_=>{var L=cl(),z=C(L,!0);p(L),Q(()=>ee(z,n())),u(_,L)};Y(b,_=>{n()&&_($)})}p(y),u(c,y)};Y(T,c=>{r.titleSlot?c(m):c(A,-1)})}var F=E(T,2);{var v=c=>{var y=dl(),R=C(y);ft(R,()=>r.actions),p(y),u(c,y)};Y(F,c=>{r.actions&&c(v)})}p(w),u(x,w)};Y(o,x=>{(a()||n()||r.titleSlot||r.actions)&&x(l)})}var d=E(o,2);ft(d,()=>r.children),p(i),Q(()=>{Se(i,1,`${s()?"col-span-12":"col-span-6"} bg-card border border-border rounded-[10px] p-[16px_18px_18px] relative overflow-clip animate-rise`),we(i,"id",r.id)}),u(t,i)}function rr(t,r){Ae(r,!0);let a=he(r,"checked",15,!0);Ne(()=>{a()?hr(r.name,r.onRefresh,r.intervalMs):vt(r.name)}),dr(()=>vt(r.name)),It(t,{get checked(){return a()},onchange:n=>a(n),size:14,label:"Auto-refresh",labelFirst:!0}),Le()}var gl=P(" ",1),hl=P('
    • '),pl=P(''),ml=P(' ',1);function _l(t,r){Ae(r,!0);let a=he(r,"label",3,"More"),n=I(!1),s=I(void 0),i=I(void 0),o=I("");function l(){if(!e(s)||!e(i))return;const c=e(s).getBoundingClientRect(),y=e(i).offsetHeight,R=4,g=window.innerHeight-c.bottom-R,$=gg?c.top-R-y:c.bottom+R,_=Math.min(c.left,window.innerWidth-180);f(o,`position:fixed; top:${$}px; left:${_}px; min-width:170px; z-index:9999;`)}async function d(){f(n,!e(n)),e(n)&&(await Pt(),l())}function x(c){c.disabled||(f(n,!1),c.onClick())}function w(c){e(n)&&e(s)&&!e(s).contains(c.target)&&e(i)&&!e(i).contains(c.target)&&f(n,!1)}var T=ml();rt("mousedown",it,w),rt("keydown",it,c=>{c.key==="Escape"&&f(n,!1)}),rt("scroll",it,()=>{e(n)&&f(n,!1)});var m=B(T),A=C(m);$e(A,{variant:"secondary",size:"sm",onclick:d,children:(c,y)=>{var R=gl(),g=B(R);Te(g,{get icon(){return Ho}});var b=E(g);Q(()=>ee(b,` ${a()??""}`)),u(c,R)},$$slots:{default:!0}}),p(m),nt(m,c=>f(s,c),()=>e(s));var F=E(m,2);{var v=c=>{Zt(c,{children:(y,R)=>{var g=pl();Ze(g,21,()=>r.items,b=>b.label,(b,$)=>{var _=hl(),L=C(_),z=C(L);Te(z,{get icon(){return e($).icon},size:14});var D=E(z);p(L),p(_),Q(()=>{L.disabled=e($).disabled,we(L,"aria-disabled",e($).disabled),Se(L,1,`w-full flex items-center gap-2 text-left py-[7px] px-[10px] bg-transparent border border-transparent rounded-md text-[12.5px] text-ink transition-[background] duration-[120ms] ease-in-out disabled:opacity-40 disabled:pointer-events-none ${e($).disabled?"":"cursor-pointer hover:bg-edf-gris-clair hover:border-border"}`),ee(D,` ${e($).label??""}`)}),ie("mousedown",L,U=>{U.stopPropagation(),x(e($))}),u(b,_)}),p(g),nt(g,b=>f(i,b),()=>e(i)),Q(()=>Je(g,e(o))),u(y,g)}})};Y(F,c=>{e(n)&&c(v)})}u(t,T),Le()}We(["mousedown"]);const Dt=[{key:"note",label:"Note"},{key:"nprocs",label:"MPI Ranks"},{key:"nt",label:"Thread Count"},{key:"last_iter",label:"Last Iter"},{key:"duration",label:"Duration"},{key:"last_mod",label:"Last Modified"},{key:"resu_size_mb",label:"RESU Size (MB)"}];let Wt=I(oe([])),Mr=I(oe([])),pt=I(oe(new Set)),mr=I(""),mn=I(""),Et=I(oe([])),st=I(oe([])),Xt=I(""),ka=I(!0),bl=I(!0),qt=I(oe(pn("csauto_status_views",{}))),_n=I(oe(localStorage.getItem("csauto_status_view_selected")??""));function bn(){return e(Wt)}function xn(){return e(Mr)}function Ut(){return e(pt)}function jn(){return e(mr)}function tn(){return e(mn)}function xl(){return e(Et)}function yl(){return e(Et).filter(t=>e(Mr).includes(t))}function wl(){return e(Et).filter(t=>Dt.some(r=>r.key===t))}function kl(){return e(st)}function Cl(){return e(Xt)}function Sl(){return e(ka)}function Vn(){return e(qt)}function $l(){return e(_n)}function Pl(t){f(Wt,t,!0)}function El(t){const r=e(Mr).length===0&&t.length>0;f(Mr,t,!0),r&&e(Et).length===0&&f(Et,[...t,...Dt.map(a=>a.key)],!0)}function Rl(t){f(mr,t,!0)}function Un(t){f(Et,t,!0)}function Nl(t){f(Xt,t,!0)}function Ml(t){f(ka,t,!0)}function Al(t){f(bl,t,!0)}function yn(t){f(_n,t,!0),localStorage.setItem("csauto_status_view_selected",t)}function rn(t){const r=new Set(e(pt));r.has(t)?r.delete(t):r.add(t),f(pt,r,!0),f(mr,t,!0),f(mn,t,!0)}function Ca(t){f(pt,new Set([t]),!0),f(mr,t,!0),f(mn,t,!0)}function nn(t,r,a){const n=a.indexOf(t),s=a.indexOf(r);if(n<0||s<0)return;const[i,o]=n{const a=Ll(r);return t.every(n=>a.includes(n))})}function Tl(t){if(t==null||t==="")return"";const r=Number(t);return Number.isFinite(r)?r:String(t).toLowerCase()}function Kn(t,r){var n;if(r==="case_id")return t.case_id;if(r==="status")return t.status??"";if(r==="note")return t.note??"";if(r==="nprocs")return t.nprocs??0;if(r==="nt")return t.nt??0;if(r==="last_iter")return t.last_iter??0;if(r==="duration")return t.duration_s??0;if(r==="last_mod")return t.last_mod??"";if(r==="resu_size_mb")return t.resu_size_mb??0;const a=(n=t.doe)==null?void 0:n[r];return a!==void 0?Tl(a):""}function Fl(t,r){return t===""&&r===""?0:t===""?1:r===""?-1:typeof t=="number"&&typeof r=="number"?t-r:String(t).localeCompare(String(r))}function $a(){const t=Sa();return e(st).length===0?t:[...t].sort((r,a)=>{for(const n of e(st)){const s=Kn(r,n.key),i=Kn(a,n.key),o=Fl(s,i);if(o!==0)return n.dir==="asc"?o:-o}return 0})}function Pr(){return $a().map(t=>t.case_id)}function Dl(t,r){const a=e(st).findIndex(n=>n.key===t);if(r)if(a>=0){const n=[...e(st)];n[a]={key:t,dir:n[a].dir==="asc"?"desc":"asc"},f(st,n,!0)}else f(st,[...e(st),{key:t,dir:"asc"}],!0);else a>=0&&e(st).length===1?f(st,[{key:t,dir:e(st)[0].dir==="asc"?"desc":"asc"}],!0):f(st,[{key:t,dir:"asc"}],!0)}function zl(){return{visibleColumns:[...e(Et)],search:e(Xt),sorts:e(st).map(t=>({...t}))}}function Il(t){f(Et,[...t.visibleColumns],!0),f(Xt,t.search,!0),f(st,t.sorts.map(r=>({...r})),!0)}function Ol(t){f(qt,{...e(qt),[t]:zl()},!0),Ir("csauto_status_views",e(qt)),yn(t)}function Hl(t){const r={...e(qt)};delete r[t],f(qt,r,!0),Ir("csauto_status_views",r),e(_n)===t&&yn("")}function kr(){const t=new Set;for(const r of e(Wt))e(pt).has(r.case_id)&&t.add((r.status??"").toUpperCase());return t}function Gn(){for(const t of e(Wt))if(e(pt).has(t.case_id)&&t.resu_size_mb!=null&&t.resu_size_mb>0)return!0;return!1}function jl(t,r){const a=r.length,n=t.length,s=r.filter(d=>d.status==="RUNNING").length,i=t.filter(d=>d.status==="RUNNING").length,o=r.filter(d=>d.convergence==="converged").length,l=t.filter(d=>d.convergence==="converged").length;return{totalCases:a,shownCases:n,totalRunning:s,shownRunning:i,totalConverged:o,shownConverged:l}}var Vl=P('
      DOE columns
      '),Ul=P('
      ');function Bl(t,r){Ae(r,!0);let a=he(r,"initialName",3,""),n=j(xn),s=I(oe(a())),i=I(oe(new Set(r.initialColumns??[...e(n),...Dt.map(V=>V.key)])));function o(V){const q=new Set(e(i));q.has(V)?q.delete(V):q.add(V),f(i,q,!0)}function l(V,q){const X=new Set(e(i));V.forEach(ae=>q?X.add(ae):X.delete(ae)),f(i,X,!0)}function d(){const V=e(s).trim();V&&r.onSave(V,[...e(i)])}function x(V){V.key==="Escape"&&r.onCancel()}function w(V){V.target.dataset.backdrop!==void 0&&r.onCancel()}let T=I(void 0);Ne(()=>{var V,q;(V=e(T))==null||V.focus(),(q=e(T))==null||q.select()});var m=Ul(),A=C(m),F=C(A),v=C(F,!0);p(F);var c=E(F,2),y=E(C(c),2);Qe(y),nt(y,V=>f(T,V),()=>e(T)),p(c);var R=E(c,2);{var g=V=>{var q=Vl(),X=C(q),ae=E(C(X),2),N=C(ae),M=E(N,2);p(ae),p(X);var h=E(X,2);Ze(h,20,()=>e(n),k=>k,(k,S)=>{{let Z=j(()=>e(i).has(S));It(k,{get checked(){return e(Z)},onchange:()=>o(S),size:14,get label(){return S}})}}),p(h),p(q),ie("click",N,()=>l(e(n),!0)),ie("click",M,()=>l(e(n),!1)),u(V,q)};Y(R,V=>{e(n).length>0&&V(g)})}var b=E(R,2),$=C(b),_=E(C($),2),L=C(_),z=E(L,2);p(_),p($);var D=E($,2);Ze(D,21,()=>Dt,V=>V.key,(V,q)=>{{let X=j(()=>e(i).has(e(q).key));It(V,{get checked(){return e(X)},onchange:()=>o(e(q).key),size:14,get label(){return e(q).label}})}}),p(D),p(b);var U=E(b,2),H=C(U);$e(H,{variant:"secondary",get onclick(){return r.onCancel},children:(V,q)=>{ke();var X=Be("Cancel");u(V,X)},$$slots:{default:!0}});var O=E(H,2);{let V=j(()=>!e(s).trim());$e(O,{variant:"primary",onclick:d,get disabled(){return e(V)},children:(q,X)=>{ke();var ae=Be("Save");u(q,ae)},$$slots:{default:!0}})}p(U),p(A),p(m),Q(()=>ee(v,r.mode==="create"?"New view":"Edit view")),ie("keydown",m,x),ie("click",m,w),tt(y,()=>e(s),V=>f(s,V)),ie("click",L,()=>l(Dt.map(V=>V.key),!0)),ie("click",z,()=>l(Dt.map(V=>V.key),!1)),u(t,m),Le()}We(["keydown","click"]);var ql=P('
      ',1);function Kl(t,r){Ae(r,!0);let a=j(()=>Object.keys(Vn())),n=I(oe($l())),s=I(!1),i=I("create"),o=j(()=>[{value:"",label:"All columns"},...e(a).map($=>({value:$,label:$}))]);function l($){if(f(n,$,!0),yn($),$==="")Un([...xn(),...Dt.map(_=>_.key)]);else{const _=Vn();_[$]&&Il(_[$])}}function d(){f(i,"edit"),f(s,!0)}function x(){f(i,"create"),f(s,!0)}function w($,_){Un(_),e(i)==="edit"&&e(n)&&$!==e(n)&&Hl(e(n)),Ol($),f(n,$,!0),f(s,!1)}function T(){f(s,!1)}var m=ql(),A=B(m),F=C(A);lt(F,{class:"w-[140px]",get options(){return e(o)},get value(){return e(n)},onchange:l});var v=E(F,2),c=C(v);Te(c,{get icon(){return qo},size:14}),p(v);var y=E(v,2),R=C(y);Te(R,{get icon(){return Ko},size:14}),p(y),p(A);var g=E(A,2);{var b=$=>{Zt($,{children:(_,L)=>{{let z=j(()=>e(i)==="edit"?e(n):""),D=j(xl);Bl(_,{get mode(){return e(i)},get initialName(){return e(z)},get initialColumns(){return e(D)},onSave:w,onCancel:T})}}})};Y(g,$=>{e(s)&&$(b)})}ie("click",v,d),ie("click",y,x),u(t,m),Le()}We(["click"]);var Gl=P('
      '),Wl=P(""),Xl=P(' '),Yl=P(' '),Ql=P('
      '),Zl=P(" "),Jl=P(''),ec=P(''),tc=P(" Open GUI",1),rc=P(""),nc=P(" "),ac=P(""),sc=P('
      ');function oc(t,r){Ae(r,!0);let a=j(()=>r.rows.length>0&&r.rows.every(N=>e(x).has(N.case_id))),n=j(()=>r.rows.some(N=>e(x).has(N.case_id))),s=j(()=>e(n)&&!e(a)),i=j(yl),o=j(()=>new Set(wl())),l=j(kl),d=j(Sl),x=j(Ut),w=j(()=>{const N=[{key:"_select",label:"",kind:"meta",sticky:"left"},{key:"case_id",label:"Case",kind:"meta",sticky:"left"},{key:"status",label:"Status",kind:"meta",sticky:"left"},...e(o).has("note")?[{key:"note",label:"Note",kind:"meta"}]:[]],M=e(i).map(Z=>({key:Z,label:Z,kind:"doe"})),k=[{key:"nprocs",label:"MPI Ranks",kind:"calc"},{key:"nt",label:"Thread Count",kind:"calc"},{key:"last_iter",label:"Last Iter",kind:"calc"},{key:"duration",label:"Duration",kind:"calc"},{key:"last_mod",label:"Last Modified",kind:"calc"},{key:"resu_size_mb",label:"RESU Size (MB)",kind:"calc"}].filter(Z=>e(o).has(Z.key)),S=[{key:"_actions",label:"",kind:"meta",sticky:"right"}];return[...N,...M,...k,...S]});function T(N){const M=e(l).findIndex(k=>k.key===N);if(M<0)return"";const h=e(l)[M].dir==="asc"?"▲":"▼";return e(l).length>1?`${h}${M+1}`:h}function m(N,M){N!=="_actions"&&Dl(N,M.ctrlKey||M.metaKey)}function A(N,M){M.shiftKey?nn(tn()||N,N,Pr()):M.ctrlKey||M.metaKey?rn(N):Ca(N)}function F(N,M){var k;const h=((k=N.status)==null?void 0:k.toUpperCase())??"";h!=="DONE"&&h!=="FAILED"||(M.preventDefault(),r.onContextMenu(N.case_id,M.clientX,M.clientY,N.convergence??""))}async function v(N){const M=N.note??"",h=await vn("Case note:",M,`Note — ${N.case_id}`,"",!0);if(h!==null)try{await _i(N.case_id,h)}catch(k){await Ye(`Failed to set note: ${k instanceof Error?k.message:k}`,"Error")}}async function c(N){try{await xi(N)}catch(M){await Ye(`Failed to open GUI: ${M instanceof Error?M.message:M}`,"Error")}}function y(N,M){const h=(N==null?void 0:N.toUpperCase())??"";return(h==="DONE"||h==="FAILED")&&M==="converged"?"CONVERGED":(h==="DONE"||h==="FAILED")&&M==="not_converged"?"NOT CONVERGED":h}function R(N,M){const h=(N==null?void 0:N.toUpperCase())??"";return(h==="DONE"||h==="FAILED")&&M==="converged"?"status-converged":(h==="DONE"||h==="FAILED")&&M==="not_converged"?"status-not-converged":h==="RUNNING"?"status-running":h==="DONE"?"status-done":h==="FAILED"?"status-failed":h==="PREPARED"?"status-prepared":"status-unknown"}function g(N){return e(x).has(N.case_id)?"row-selected":""}function b(N,M){var h;return M.key==="case_id"?N.case_id:M.key==="nprocs"?N.nprocs!=null?String(N.nprocs):"":M.key==="nt"?N.nt!=null?String(N.nt):"":M.key==="last_iter"?N.last_iter!=null?String(N.last_iter):"":M.key==="duration"?N.duration??"":M.key==="last_mod"?$(N.last_mod):M.key==="resu_size_mb"?N.resu_size_mb!=null?String(N.resu_size_mb):"":M.kind==="doe"?((h=N.doe)==null?void 0:h[M.key])!=null&&String(N.doe[M.key])!==""?String(N.doe[M.key]):"—":""}function $(N){if(!N)return"";try{const M=new Date(N),h=new Date,k=M.toDateString()===h.toDateString(),S=new Date(h);S.setDate(S.getDate()-1);const Z=M.toDateString()===S.toDateString(),re=M.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return k?`Today ${re}`:Z?`Yesterday ${re}`:M.toLocaleDateString([],{month:"short",day:"numeric"})+` ${re}`}catch{return N}}let _=I(oe({})),L=I(void 0);Ne(()=>{e(d),e(w),r.rows,!(!e(L)||!e(d))&&Pt().then(()=>{if(!e(L))return;const N=Array.from(e(L).querySelectorAll("thead th.sticky-left")),M={};let h=0;N.forEach(k=>{const S=k.dataset.colKey??"";M[S]=h,h+=k.getBoundingClientRect().width}),f(_,M,!0)})});function z(N,M,h){const k=h&&N.key!=="_select"&&N.key!=="_actions"?["status-sortable"]:[];if(!h&&N.key==="case_id"&&k.push("case-id"),N.kind==="doe"&&k.push("status-col-doe"),!h&&N.key==="note"&&k.push("max-w-[140px] whitespace-nowrap overflow-hidden text-ellipsis cursor-pointer hover:underline hover:decoration-dotted hover:underline-offset-2"),e(d)&&N.sticky==="left"&&k.push("sticky-left"),e(d)&&N.sticky==="right"&&k.push("sticky-right"),e(d)&&N.sticky==="left"){const S=e(w)[M+1];(!S||S.sticky!=="left")&&k.push("sticky-divider")}if(e(d)&&N.sticky==="right"){const S=e(w)[M-1];(!S||S.sticky!=="right")&&k.push("sticky-divider")}return k.join(" ")}function D(N,M){return z(N,M,!0)}function U(N,M){return z(N,M,!1)}function H(N){return!e(d)||!N.sticky?"":N.sticky==="right"?"position:sticky;right:0;":N.sticky==="left"&&N.key in e(_)?`position:sticky;left:${e(_)[N.key]}px;`:""}var O=sc(),V=C(O),q=C(V),X=C(q);Ze(X,23,()=>e(w),N=>N.key,(N,M,h)=>{var k=_e(),S=B(k);{var Z=le=>{var K=Gl(),ne=C(K),se=C(ne);It(se,{get checked(){return e(a)},get indeterminate(){return e(s)},get onchange(){return r.onToggleAll},size:14}),p(ne),p(K),Q((ue,de)=>{Se(K,1,`${ue??""} !px-2.5 !py-0 w-9`),we(K,"data-col-key",e(M).key),Je(K,de)},[()=>D(e(M),e(h)),()=>H(e(M))]),u(le,K)},re=le=>{var K=Wl();Q((ne,se)=>{Se(K,1,ne),we(K,"data-col-key",e(M).key),Je(K,se)},[()=>dt(D(e(M),e(h))),()=>H(e(M))]),u(le,K)},ge=le=>{var K=Yl(),ne=C(K),se=E(ne);{var ue=J=>{var be=Xl(),fe=C(be,!0);p(be),Q(Pe=>ee(fe,Pe),[()=>T(e(M).key)]),u(J,be)},de=j(()=>T(e(M).key));Y(se,J=>{e(de)&&J(ue)})}p(K),Q((J,be)=>{Se(K,1,J),we(K,"data-col-key",e(M).key),Je(K,be),ee(ne,`${e(M).label??""} `)},[()=>dt(D(e(M),e(h))),()=>H(e(M))]),ie("click",K,J=>m(e(M).key,J)),ie("keydown",K,J=>{(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),m(e(M).key,J))}),u(le,K)};Y(S,le=>{e(M).key==="_select"?le(Z):e(M).key==="_actions"?le(re,1):le(ge,-1)})}u(N,k)}),p(X),p(q);var ae=E(q);Ze(ae,21,()=>r.rows,N=>N.case_id,(N,M)=>{var h=ac();Ze(h,23,()=>e(w),k=>k.key,(k,S,Z)=>{var re=_e(),ge=B(re);{var le=de=>{var J=Ql(),be=C(J),fe=C(be);{let Pe=j(()=>e(x).has(e(M).case_id));It(fe,{get checked(){return e(Pe)},onchange:()=>r.onToggleRow(e(M).case_id),size:14})}p(be),p(J),Q((Pe,ve)=>{Se(J,1,`${Pe??""} !px-2.5 !py-0 w-9`),we(J,"data-col-key",e(S).key),Je(J,ve)},[()=>U(e(S),e(Z)),()=>H(e(S))]),u(de,J)},K=de=>{var J=Zl(),be=C(J),fe=C(be,!0);p(be),p(J),Q((Pe,ve,ze,pe)=>{Se(J,1,Pe),we(J,"data-col-key",e(S).key),Je(J,ve),Se(be,1,`status-pill ${ze??""}`),ee(fe,pe)},[()=>dt(U(e(S),e(Z))),()=>H(e(S)),()=>R(e(M).status,e(M).convergence),()=>y(e(M).status,e(M).convergence)]),u(de,J)},ne=de=>{var J=ec(),be=C(J);{var fe=ve=>{var ze=Be();Q(()=>ee(ze,e(M).note)),u(ve,ze)},Pe=ve=>{var ze=Jl(),pe=C(ze);Te(pe,{get icon(){return Bo},size:12}),p(ze),u(ve,ze)};Y(be,ve=>{e(M).note?ve(fe):ve(Pe,-1)})}p(J),Q((ve,ze)=>{Se(J,1,ve),we(J,"data-col-key",e(S).key),Je(J,ze),we(J,"title",e(M).note||"Add note")},[()=>dt(U(e(S),e(Z))),()=>H(e(S))]),ie("click",J,ve=>{ve.stopPropagation(),v(e(M))}),ie("keydown",J,ve=>{(ve.key==="Enter"||ve.key===" ")&&(ve.preventDefault(),ve.stopPropagation(),v(e(M)))}),u(de,J)},se=de=>{var J=rc(),be=C(J);$e(be,{variant:"primary",size:"sm",onclick:fe=>{fe.stopPropagation(),c(e(M).case_id)},children:(fe,Pe)=>{var ve=tc(),ze=B(ve);Te(ze,{get icon(){return jo},size:12}),ke(),u(fe,ve)},$$slots:{default:!0}}),p(J),Q((fe,Pe)=>{Se(J,1,fe),we(J,"data-col-key",e(S).key),Je(J,Pe)},[()=>dt(U(e(S),e(Z))),()=>H(e(S))]),u(de,J)},ue=de=>{var J=nc(),be=C(J,!0);p(J),Q((fe,Pe,ve)=>{Se(J,1,fe),we(J,"data-col-key",e(S).key),Je(J,Pe),ee(be,ve)},[()=>dt(U(e(S),e(Z))),()=>H(e(S)),()=>b(e(M),e(S))]),u(de,J)};Y(ge,de=>{e(S).key==="_select"?de(le):e(S).key==="status"?de(K,1):e(S).key==="note"?de(ne,2):e(S).key==="_actions"?de(se,3):de(ue,-1)})}u(k,re)}),p(h),Q(k=>Se(h,1,k),[()=>dt(g(e(M)))]),ie("click",h,k=>A(e(M).case_id,k)),ie("contextmenu",h,k=>F(e(M),k)),u(N,h)}),p(ae),p(V),nt(V,N=>f(L,N),()=>e(L)),p(O),Q(()=>Se(O,1,`table-wrap ${e(d)?"sticky-enabled":""}`)),u(t,O),Le()}We(["click","keydown","contextmenu"]);var ic=P('
      ');function lc(t,r){Ae(r,!0);let a=j(()=>{const m=Math.min(r.x,window.innerWidth-180),A=Math.min(r.y,window.innerHeight-120);return`left: ${m}px; top: ${A}px;`});async function n(m){try{for(const A of r.cases)await bi(A,m)}catch(A){console.error("Failed to set convergence:",A)}r.onClose()}const s=r.cases.length>1?` (${r.cases.length})`:"";var i=ic();rt("keydown",it,m=>{m.key==="Escape"&&r.onClose()});var o=C(i),l=C(o);p(o);var d=E(o,2),x=C(d);p(d);var w=E(d,2),T=C(w);p(w),p(i),Q(()=>{Je(i,e(a)),Se(o,1,`w-full text-left py-[7px] px-[10px] bg-transparent border border-transparent rounded-md text-[12.5px] cursor-pointer transition-[background] duration-[120ms] ease-in-out hover:bg-edf-gris-clair hover:border-border ${r.currentValue==="converged"?"is-active":""}`),ee(l,`Mark Converged${s}`),Se(d,1,`w-full text-left py-[7px] px-[10px] bg-transparent border border-transparent rounded-md text-[12.5px] cursor-pointer transition-[background] duration-[120ms] ease-in-out hover:bg-edf-gris-clair hover:border-border ${r.currentValue==="not_converged"?"is-active":""}`),ee(x,`Mark Not Converged${s}`),Se(w,1,`w-full text-left py-[7px] px-[10px] bg-transparent border border-transparent rounded-md text-[12.5px] cursor-pointer transition-[background] duration-[120ms] ease-in-out hover:bg-edf-gris-clair hover:border-border ${r.currentValue===""?"is-active":""}`),ee(T,`Clear Mark${s}`)}),ie("click",o,()=>n("converged")),ie("click",d,()=>n("not_converged")),ie("click",w,()=>n("")),u(t,i),Le()}We(["click"]);var cc=P(" Refresh",1),uc=P(" ",1),dc=P(" Run",1),fc=P(" Restart",1),vc=P(" Stop",1),gc=P(" Kill",1),hc=P(" Clean",1),pc=P('
      ',1),mc=P('
      ',1);function _c(t,r){Ae(r,!0);function a(){return[...Ut()]}async function n(){const h=a();if(!h.length)return;const k=await Ws(h);if(k)try{await zn({cases:h,n:k.n,nt:k.nt,maxParallel:k.maxParallel}),r.onRefresh()}catch(S){await Ye(`Run failed: ${S instanceof Error?S.message:S}`,"Error")}}async function s(){const h=a();if(!h.length)return;const k=await Xs(h);if(k)try{await zn({cases:h,n:k.n,nt:k.nt,maxParallel:k.maxParallel,restart:!0,restartMode:k.restartMode,restartValue:k.restartValue}),r.onRefresh()}catch(S){await Ye(`Restart failed: ${S instanceof Error?S.message:S}`,"Error")}}async function i(){const h=a();if(!(!h.length||!await Tn(`Kill ${h.length} case${h.length>1?"s":""}?`,"Confirm Kill","Kill","danger")))try{await pi(h),r.onRefresh()}catch(S){await Ye(`Kill failed: ${S instanceof Error?S.message:S}`,"Error")}}async function o(){const h=a();if(!(!h.length||!await Tn(`Stop ${h.length} case${h.length>1?"s":""} gracefully (checkpoint + exit)?`,"Confirm Stop","Stop","danger")))try{await yr({cases:h,action:"stop"}),r.onRefresh(),wr(`Stop requested for ${h.length} case${h.length>1?"s":""} — will checkpoint and exit`)}catch(S){await Ye(`Stop failed: ${S instanceof Error?S.message:S}`,"Error")}}async function l(){const h=a();if(h.length)try{await yr({cases:h,action:"checkpoint"}),r.onRefresh(),wr(`Checkpoint requested for ${h.length} case${h.length>1?"s":""}`)}catch(k){await Ye(`Checkpoint failed: ${k instanceof Error?k.message:k}`,"Error")}}async function d(){const h=a();if(!h.length)return;const k=await vn("Extend by how many additional time steps?","500","Extend Run");if(k===null)return;const S=parseInt(k,10);if(!Number.isFinite(S)||S<=0){await Ye("Enter a positive integer number of time steps.","Error");return}try{await yr({cases:h,action:"extend",value:S}),r.onRefresh(),wr(`Extended ${h.length} case${h.length>1?"s":""} by ${S} time steps`)}catch(Z){await Ye(`Extend failed: ${Z instanceof Error?Z.message:Z}`,"Error")}}async function x(){const h=a();if(h.length)try{await yr({cases:h,action:"flush"}),wr(`Flush requested for ${h.length} case${h.length>1?"s":""}`)}catch(k){await Ye(`Flush failed: ${k instanceof Error?k.message:k}`,"Error")}}async function w(){const h=a();if(!h.length)return;const k=await Ys(h);if(k)try{await mi({cases:h,keepLast:k.keepLast,keepResu:k.keepResu,deleteResu:k.deleteResu,pruneResu:!0}),r.onRefresh(),Gi()}catch(S){await Ye(`Cleanup failed: ${S instanceof Error?S.message:S}`,"Error")}}function T(){const h=Pr();h.length>0&&h.every(S=>Ut().has(S))?qn():Bn(h)}function m(h){rn(h)}let A=I(oe(er("status")));Ne(()=>{tr("status",e(A))}),Ml(!0);let F=j(()=>{const h=kr();return h.size>0&&[...h].some(k=>k==="PREPARED"||k==="DONE"||k==="FAILED")}),v=j(()=>{const h=kr();return h.size>0&&[...h].some(k=>k==="DONE"||k==="FAILED")&&Gn()}),c=j(()=>{const h=kr();return h.size>0&&h.has("RUNNING")}),y=j(()=>{const h=kr();return h.size>0&&h.has("RUNNING")}),R=j(Gn),g=I(oe(Cl())),b=null;function $(){b&&clearTimeout(b),b=setTimeout(()=>{Nl(e(g))},200)}Ne(()=>Al(e(A)));let _=I(!1),L=I(0),z=I(0),D=I(oe([])),U=I("");function H(h,k,S,Z){f(D,Ut().has(h)?[...Ut()]:[h],!0),f(U,Z,!0),f(L,k,!0),f(z,S,!0),f(_,!0)}function O(){f(_,!1)}function V(h){const k=Pr();if(k.length){if(h.key==="Escape"){qn(),O();return}if((h.ctrlKey||h.metaKey)&&h.key==="a"){h.preventDefault(),Bn(k);return}if(h.key==="ArrowDown"||h.key==="ArrowUp"){h.preventDefault();const S=h.key==="ArrowDown"?1:-1,Z=jn(),re=k.indexOf(Z),ge=Math.max(0,Math.min(k.length-1,re+S)),le=k[ge];h.shiftKey?nn(tn()||k[0],le,k):Ca(le),Rl(le);return}if(h.key===" "){h.preventDefault();const S=jn();S&&(h.shiftKey?nn(tn()||S,S,Pr()):rn(S))}}}var q=mc();rt("click",it,O),rt("scroll",it,O);var X=B(q),ae=C(X);Ht(ae,{eyebrow:"Overview",title:"Status",wide:!0,id:"status-card-shell",actions:k=>{var S=uc(),Z=B(S);{let le=j(qi);rr(Z,{name:"status",get intervalMs(){return e(le)},get onRefresh(){return r.onRefresh},get checked(){return e(A)},set checked(K){f(A,K,!0)}})}var re=E(Z,2);{var ge=le=>{$e(le,{variant:"primary",onclick:()=>r.onRefresh(),children:(K,ne)=>{var se=cc(),ue=B(se);Te(ue,{get icon(){return Jt}}),ke(),u(K,se)},$$slots:{default:!0}})};Y(re,le=>{e(A)||le(ge)})}u(k,S)},children:(k,S)=>{var Z=pc(),re=B(Z),ge=C(re),le=C(ge);Qe(le);var K=E(le,2);Kl(K,{}),p(ge);var ne=E(ge,2),se=C(ne),ue=C(se);p(se);var de=E(se,2);{let pe=j(()=>!e(F));$e(de,{variant:"run",size:"sm",onclick:n,get disabled(){return e(pe)},children:(Oe,He)=>{var Fe=dc(),ye=B(Fe);Te(ye,{get icon(){return pa}}),ke(),u(Oe,Fe)},$$slots:{default:!0}})}var J=E(de,2);{let pe=j(()=>!e(v));$e(J,{variant:"warning",size:"sm",onclick:s,get disabled(){return e(pe)},children:(Oe,He)=>{var Fe=fc(),ye=B(Fe);Te(ye,{get icon(){return Go}}),ke(),u(Oe,Fe)},$$slots:{default:!0}})}var be=E(J,2);{let pe=j(()=>!e(y));$e(be,{variant:"warning",size:"sm",onclick:o,get disabled(){return e(pe)},children:(Oe,He)=>{var Fe=vc(),ye=B(Fe);Te(ye,{get icon(){return zo}}),ke(),u(Oe,Fe)},$$slots:{default:!0}})}var fe=E(be,2);{let pe=j(()=>[{label:"Extend",icon:Vo,onClick:d,disabled:!e(y)},{label:"Checkpoint",icon:Wo,onClick:l,disabled:!e(y)},{label:"Flush",icon:Oo,onClick:x,disabled:!e(y)}]);_l(fe,{get items(){return e(pe)}})}var Pe=E(fe,2);{let pe=j(()=>!e(c));$e(Pe,{variant:"danger",size:"sm",onclick:i,get disabled(){return e(pe)},children:(Oe,He)=>{var Fe=gc(),ye=B(Fe);Te(ye,{get icon(){return Io}}),ke(),u(Oe,Fe)},$$slots:{default:!0}})}var ve=E(Pe,2);{let pe=j(()=>!e(R));$e(ve,{variant:"secondary",size:"sm",onclick:w,get disabled(){return e(pe)},children:(Oe,He)=>{var Fe=hc(),ye=B(Fe);Te(ye,{get icon(){return Yo}}),ke(),u(Oe,Fe)},$$slots:{default:!0}})}p(ne),p(re);var ze=E(re,2);{let pe=j($a);oc(ze,{get rows(){return e(pe)},onContextMenu:H,onToggleAll:T,onToggleRow:m})}Q(pe=>ee(ue,`${pe??""} selected`),[()=>Ut().size]),ie("input",le,$),tt(le,()=>e(g),pe=>f(g,pe)),u(k,Z)},$$slots:{actions:!0,default:!0}}),p(X);var N=E(X,2);{var M=h=>{lc(h,{get cases(){return e(D)},get x(){return e(L)},get y(){return e(z)},get currentValue(){return e(U)},onClose:O})};Y(N,h=>{e(_)&&h(M)})}ie("keydown",X,V),u(t,q),Le()}We(["keydown","input"]);var bc=P('
      ');function Yt(t,r){var a=bc(),n=C(a);ft(n,()=>r.children),p(a),u(t,a)}function wn(t){return t.map(r=>({value:r,label:r}))}var xc=P(''),yc=P(" ",1);function kn(t,r){Ae(r,!0);let a=he(r,"columnLabel",3,"Columns"),n=he(r,"xMinLabel",3,"Iter min"),s=j(()=>wn(r.allCases)),i=j(()=>r.columns.map(d=>({value:d,label:d}))),o=[{value:"zero",label:"Zero"},{value:"restart",label:"Restart start"},{value:"custom",label:"Custom"}];function l(d){r.onXMinChange(Number(d.target.value)||0)}Yt(t,{children:(d,x)=>{var w=yc(),T=B(w);Me(T,{text:"Cases",children:(b,$)=>{Gt(b,{class:"w-[160px]",get options(){return e(s)},get selected(){return r.selectedCases},get onchange(){return r.onCasesChange},placeholder:"Select cases..."})}});var m=E(T,2);{var A=b=>{var $=_e(),_=B($);ft(_,()=>r.middleSlot),u(b,$)};Y(m,b=>{r.middleSlot&&b(A)})}var F=E(m,2);Me(F,{get text(){return a()},children:(b,$)=>{Gt(b,{class:"w-[160px]",get options(){return e(i)},get selected(){return r.selectedColumns},get onchange(){return r.onColumnsChange},placeholder:"Select..."})}});var v=E(F,2);Me(v,{text:"Start from",children:(b,$)=>{lt(b,{class:"w-[140px]",get options(){return o},get value(){return r.startFrom},onchange:_=>r.onStartFromChange(_)})}});var c=E(v,2);{var y=b=>{Me(b,{get text(){return n()},children:($,_)=>{var L=xc();Qe(L),Q(()=>dn(L,r.xMin)),ie("input",L,l),u($,L)}})};Y(c,b=>{r.startFrom==="custom"&&b(y)})}var R=E(c,2);{var g=b=>{var $=_e(),_=B($);ft(_,()=>r.extraSlot),u(b,$)};Y(R,b=>{r.extraSlot&&b(g)})}u(d,w)}}),Le()}We(["input"]);var wc=P('
      '),kc=P('
      ');function Qt(t,r){let a=he(r,"emptyMessage",3,"");var n=kc(),s=C(n);{var i=l=>{var d=_e(),x=B(d);Fr(x,()=>r.svgHtml),u(l,d)},o=l=>{var d=wc(),x=C(d),w=C(x,!0);p(x),p(d),Q(()=>ee(w,a()||"No data to display.")),u(l,d)};Y(s,l=>{r.svgHtml?l(i):l(o,-1)})}p(n),Q(()=>we(n,"id",r.id)),u(t,n)}async function Cn(t,r="plot.png"){const a=document.getElementById(t),n=a==null?void 0:a.querySelector("svg");if(!n)return;const{width:s,height:i}=Cc(n),o=window.devicePixelRatio||1,l=document.createElement("canvas");l.width=s*o,l.height=i*o;const d=l.getContext("2d");if(!d)return;d.scale(o,o);const x=new XMLSerializer().serializeToString(n),w=new Blob([x],{type:"image/svg+xml;charset=utf-8"}),T=URL.createObjectURL(w),m=new Image;m.width=s,m.height=i,await new Promise((F,v)=>{m.onload=()=>{d.drawImage(m,0,0,s,i),URL.revokeObjectURL(T),F()},m.onerror=v,m.src=T});const A=await new Promise(F=>l.toBlob(F,"image/png"));A&&await Ea(A,Sc(r))}function _r(t,r,a="png"){const n=r.length<=3?r.join("_"):`${r.length}_cases`,s=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19);return $c(`${t}_${n}_${s}.${a}`)}async function Pa(t,r){const a=new Blob([t],{type:"text/csv;charset=utf-8"});await Ea(a,r)}function Cc(t){const r=t.getAttribute("viewBox");if(r){const a=r.split(/[\s,]+/).map(Number);if(a.length===4)return{width:a[2],height:a[3]}}return{width:t.width.baseVal.value||900,height:t.height.baseVal.value||500}}async function Ea(t,r){if("showSaveFilePicker"in window)try{const i=await(await window.showSaveFilePicker({suggestedName:r,types:[{description:t.type.startsWith("image/")?"Image":"File",accept:{[t.type]:[`.${r.split(".").pop()}`]}}]})).createWritable();await i.write(t),await i.close();return}catch(s){if((s==null?void 0:s.name)==="AbortError")return}const a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download=r,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(a)}function Sc(t){return t.endsWith(".png")?t:`${t}.png`}function $c(t){return t.replace(/[^a-zA-Z0-9._-]/g,"_")}let Ra=I(oe([])),Na=I(oe([])),Ma=I(oe([])),Aa=I("zero"),La=I(0),Ta=I(""),Pc=I(!0);function Ec(){return{selectedCases:e(Ra),columns:e(Na),selectedColumns:e(Ma),startFrom:e(Aa),iterMin:e(La),svgHtml:e(Ta),autoRefresh:e(Pc)}}function Wn(t){f(Ra,t,!0)}function Rc(t){f(Na,t,!0)}function Gr(t){f(Ma,t,!0)}function Nc(t){f(Aa,t,!0)}function Mc(t){f(La,t,!0)}function Cr(t){f(Ta,t,!0)}var Ac=P(" Refresh",1),Lc=P(" ",1),Tc=P(" Download as PNG",1),Fc=P('
      '),Dc=P('
      ',1),zc=P('
      '),Ic=P('

      '),Oc=P(" ",1);function Hc(t,r){Ae(r,!0);let a=j(Ec),n=I("");const s=new Set(["iteration","wall_distance","walldistance"]),i=["velocity","pressure"];async function o(){if(e(a).selectedCases.length)try{const v=await oi(e(a).selectedCases);f(n,"");const c=v.filter(y=>!s.has(y.toLowerCase().replace(/\s+/g,"_")));if(Rc(c),c.length===0){Gr([]),Cr("");return}if(e(a).selectedColumns.length===0){const y=c.filter(R=>i.some(g=>R.toLowerCase().includes(g)));Gr(y.length>0?y:[c[0]])}}catch(v){f(n,"Failed to load residual columns"),console.error("Failed to load residual columns:",v)}}async function l(){if(e(a).selectedCases.length&&!((e(a).columns.length===0||e(a).selectedColumns.length===0)&&(await o(),!e(a).selectedColumns.length)))try{let v=0,c=!0;if(e(a).startFrom==="restart"){const R=await xa(e(a).selectedCases),g=Object.values(R.origins).map(b=>b.iteration).filter(b=>b!==void 0&&Number.isFinite(b));v=g.length>0?Math.min(...g):0}else e(a).startFrom==="custom"&&(v=e(a).iterMin);const y=await ii(e(a).selectedCases,e(a).selectedColumns,{xMin:v,includeHistory:c});f(n,""),y&&Cr(y)}catch(v){f(n,"Failed to load residual plot"),console.error("Failed to load residual plot:",v)}}function d(v){if(Wn(v),v.length===0){Cr("");return}o(),l()}function x(v){if(Gr(v),v.length===0){Cr("");return}l()}function w(v){Nc(v),l()}function T(v){Mc(v),l()}let m=I(oe(er("plot")));Ne(()=>{tr("plot",e(m))}),Ne(()=>{e(m)?hr("residualPlot",l,On()):vt("residualPlot")});let A=!1;Ne(()=>{r.allCases.length>0&&!A&&(A=!0,Wn([...r.allCases]),o().then(()=>l()))});const F=pr(()=>{A&&o().then(()=>l())});dr(()=>{vt("residualPlot"),F()}),Ht(t,{eyebrow:"Diagnostics",title:"Residuals Plot",wide:!0,actions:c=>{var y=Lc(),R=B(y);{let $=j(On);rr(R,{name:"residualPlot",get intervalMs(){return e($)},onRefresh:l,get checked(){return e(m)},set checked(_){f(m,_,!0)}})}var g=E(R,2);{var b=$=>{$e($,{variant:"primary",onclick:l,children:(_,L)=>{var z=Ac(),D=B(z);Te(D,{get icon(){return Jt}}),ke(),u(_,z)},$$slots:{default:!0}})};Y(g,$=>{e(m)||$(b)})}u(c,y)},children:(c,y)=>{var R=Oc(),g=B(R);{var b=z=>{const D=q=>{var X=Fc(),ae=C(X);{let N=j(()=>!e(a).svgHtml);$e(ae,{variant:"secondary",size:"sm",onclick:()=>Cn("plot-holder",_r("residuals",e(a).selectedCases)),get disabled(){return e(N)},children:(M,h)=>{var k=Tc(),S=B(k);Te(S,{get icon(){return gr}}),ke(),u(M,k)},$$slots:{default:!0}})}p(X),u(q,X)};var U=Dc(),H=B(U);kn(H,{prefix:"plot",get allCases(){return r.allCases},get selectedCases(){return e(a).selectedCases},onCasesChange:d,columnLabel:"Variables",get columns(){return e(a).columns},get selectedColumns(){return e(a).selectedColumns},onColumnsChange:x,get startFrom(){return e(a).startFrom},onStartFromChange:w,xMinLabel:"Iter min",get xMin(){return e(a).iterMin},onXMinChange:T,get extraSlot(){return D}});var O=E(H,2),V=C(O);{let q=j(()=>e(a).selectedCases.length===0?"Please select at least one case.":e(a).selectedColumns.length===0?"Please select at least one variable.":"No data to display.");Qt(V,{id:"plot-holder",get svgHtml(){return e(a).svgHtml},get emptyMessage(){return e(q)}})}p(O),u(z,U)},$=z=>{var D=zc(),U=C(D);Qt(U,{id:"plot-holder",svgHtml:"",emptyMessage:"No data available. Please run a simulation first."}),p(D),u(z,D)};Y(g,z=>{e(a).columns.length>0?z(b):z($,-1)})}var _=E(g,2);{var L=z=>{var D=Ic(),U=C(D,!0);p(D),Q(()=>ee(U,e(n))),u(z,D)};Y(_,z=>{e(n)&&z(L)})}u(c,R)},$$slots:{actions:!0,default:!0}}),Le()}function Fa(t){const{scope:r,getState:a,setState:n,setHasData:s,getAxis:i}=t;async function o(){const m=a();if(m.selectedCases.length)try{let A=await Qr(m.selectedCases,r);if(t.filterFiles&&(A=t.filterFiles(A)),n({files:A}),s(A.length>0),A.length===0){n({file:"",columns:[],selectedColumns:[],positionText:"",svgHtml:""});return}(!m.file||!A.includes(m.file))&&(n({file:A[0]}),await l())}catch(A){console.error(`Failed to load ${r} files:`,A)}}async function l(){const m=a();if(!(!m.selectedCases.length||!m.file))try{const A=await fi(m.selectedCases,[m.file]),F=t.filterColumns?t.filterColumns(A):A;t.onColumnsLoaded?t.onColumnsLoaded(A):n({columns:F});const v=a();if(v.columns.length===0){n({selectedColumns:[],positionText:"",svgHtml:""});return}v.selectedColumns.length===0&&n({selectedColumns:[v.columns[0]]})}catch(A){console.error(`Failed to load ${r} columns:`,A)}}async function d(){let m=a();if(m.selectedCases.length){if(await o(),m=a(),!m.file){n({positionText:"",svgHtml:""});return}if((m.columns.length===0||m.selectedColumns.length===0)&&(await l(),m=a(),!m.selectedColumns.length)){n({positionText:"",svgHtml:""});return}try{let A;const F=a();if(F.startFrom==="restart"){const c=await xa(F.selectedCases),y=i().toLowerCase(),R=y==="t"||y==="time"?"time":"iteration",g=Object.values(c.origins).map(b=>b[R]).filter(b=>b!==void 0&&Number.isFinite(b));A=g.length>0?Math.min(...g):void 0}else F.startFrom==="custom"&&(A=F.xMin);const v=await gi({cases:F.selectedCases,probes:[F.file],columns:F.selectedColumns,axis:i(),timeMin:typeof A=="number"?A:void 0,xMin:A,includeHistory:!0});v&&n({svgHtml:v})}catch(A){console.error(`Failed to load ${r} plot:`,A)}}}async function x(m){if(n({selectedCases:m}),m.length===0){n({svgHtml:""});return}await o(),r==="monitoring"&&await d()}function w(m){if(n({selectedColumns:m}),m.length===0){n({svgHtml:""});return}d()}async function T(m){n({file:m}),await l(),await d()}return{loadFiles:o,loadColumns:l,loadPlot:d,handleCasesChange:x,handleColumnsChange:w,handleFileChange:T}}function Da(){return{selectedCases:[],file:"",files:[],columns:[],selectedColumns:[],axis:"time",startFrom:"zero",xMin:0,positionText:"",svgHtml:"",autoRefresh:!0}}let Bt=I("time"),an=I(oe(Da())),sn=I(oe({...Da(),axis:""})),jc=I(!0),Ar=I(!1),Lr=I(!1);function Vc(){return e(Bt)}function Uc(t){f(Bt,t,!0)}function Bc(){return e(Ar)}function on(t){f(Ar,t,!0)}function qc(){return e(Lr)}function ln(t){f(Lr,t,!0)}function Kc(){e(Bt)==="time"&&!e(Ar)&&e(Lr)?f(Bt,"profile"):e(Bt)==="profile"&&!e(Lr)&&e(Ar)&&f(Bt,"time")}function Xn(){return e(an)}function Wr(){return e(sn)}function kt(t){f(an,{...e(an),...t},!0)}function At(t){f(sn,{...e(sn),...t},!0)}function Gc(){return e(jc)}var Wc=P(" Download as PNG",1),Xc=P('
      '),Yc=P("
      "),Qc=P('
      '),Zc=P('
      ',1),Jc=P('
      ');function eu(t,r){Ae(r,!0);let a=he(r,"onRefresh",15),n=j(Xn);const s=new Set(["time","t","iteration","iter"]),i=Fa({scope:"monitoring",getState:Xn,setState:kt,setHasData:on,filterFiles:v=>v.filter(c=>{const y=c.replace(/\.csv$/i,"").toLowerCase();return y!=="coords"&&!y.includes("coordinates")}),filterColumns:v=>v.filter(c=>!s.has(c.toLowerCase())),onColumnsLoaded:v=>{const c=v.filter(y=>!s.has(y.toLowerCase()));kt({columns:c}),o()},getAxis:()=>"time"});async function o(){if(!(!e(n).selectedCases.length||!e(n).file||!e(n).selectedColumns.length))try{const v=[];for(const $ of e(n).selectedColumns){const _=await vi(e(n).selectedCases[0],e(n).file,[$]);_.found&&v.push({col:$,x:_.x,y:_.y,z:_.z})}if(!v.length){kt({positionText:""});return}const c=$=>{let _=0;for(const L of $){if(L===void 0)continue;const z=String(L),D=z.indexOf(".");D>=0&&(_=Math.max(_,z.length-D-1))}return _},y=c(v.map($=>$.x)),R=c(v.map($=>$.y)),g=c(v.map($=>$.z)),b=v.map($=>{const _=[];return $.x!==void 0&&_.push(`x=${$.x.toFixed(y)}`),$.y!==void 0&&_.push(`y=${$.y.toFixed(R)}`),$.z!==void 0&&_.push(`z=${$.z.toFixed(g)}`),`Probe position [${$.col}] : ${_.join(" · ")}`});kt({positionText:b.join(` -`)})}catch{kt({positionText:""})}}function l(v){i.handleColumnsChange(v),v.length>0&&o()}let d=j(()=>e(n).files.map(v=>({value:v,label:v.replace(/\.csv$/i,"").replace(/^probes?_/i,"")}))),x=!1;Ne(()=>{r.allCases.length>0&&!x&&(x=!0,kt({selectedCases:[...r.allCases]}),i.loadFiles().then(()=>i.loadPlot()))}),Ne(()=>{a(i.loadPlot)});let w=j(()=>e(n).selectedCases.length===0?"Please select at least one case.":e(n).selectedColumns.length===0?"Please select at least one probe.":"No data to display.");var T=_e(),m=B(T);{var A=v=>{const c=z=>{Me(z,{text:"Quantity",children:(D,U)=>{lt(D,{class:"w-[160px]",get options(){return e(d)},get value(){return e(n).file},get onchange(){return i.handleFileChange}})}})},y=z=>{var D=Xc(),U=C(D);{let H=j(()=>!e(n).svgHtml);$e(U,{variant:"secondary",size:"sm",onclick:()=>Cn("probe-plot-holder",_r("probe",e(n).selectedCases)),get disabled(){return e(H)},children:(O,V)=>{var q=Wc(),X=B(q);Te(X,{get icon(){return gr}}),ke(),u(O,q)},$$slots:{default:!0}})}p(D),u(z,D)};var R=Zc(),g=B(R);kn(g,{prefix:"probe",get allCases(){return r.allCases},get selectedCases(){return e(n).selectedCases},get onCasesChange(){return i.handleCasesChange},get middleSlot(){return c},columnLabel:"Probes",get columns(){return e(n).columns},get selectedColumns(){return e(n).selectedColumns},onColumnsChange:l,get startFrom(){return e(n).startFrom},onStartFromChange:z=>{kt({startFrom:z}),i.loadPlot()},xMinLabel:"Time min",get xMin(){return e(n).xMin},onXMinChange:z=>{kt({xMin:z}),i.loadPlot()},get extraSlot(){return y}});var b=E(g,2);{var $=z=>{var D=Qc();Ze(D,21,()=>e(n).positionText.split(` -`).sort(),un,(U,H)=>{var O=Yc(),V=C(O,!0);p(O),Q(()=>ee(V,e(H))),u(U,O)}),p(D),u(z,D)};Y(b,z=>{e(n).positionText&&z($)})}var _=E(b,2),L=C(_);Qt(L,{id:"probe-plot-holder",get svgHtml(){return e(n).svgHtml},get emptyMessage(){return e(w)}}),p(_),u(v,R)},F=v=>{var c=Jc(),y=C(c);Qt(y,{id:"probe-plot-holder",svgHtml:"",emptyMessage:"No probe data available. Please run a simulation first."}),p(c),u(v,c)};Y(m,v=>{e(n).files.length>0?v(A):v(F,-1)})}u(t,T),Le()}var tu=P(" ",1),ru=P(" Download as PNG",1),nu=P('
      '),au=P('
      ',1),su=P('
      ');function ou(t,r){Ae(r,!0);let a=he(r,"onRefresh",15),n=j(Wr);const s=["s","x","abscissa","distance","arclength","arc_length","curvilinear","length","r","y","z","coord","position"];function i(c){const y=c.map(R=>R.toLowerCase());for(const R of s){const g=y.indexOf(R);if(g>=0)return c[g]}return c[0]??""}const o=Fa({scope:"profiles",getState:Wr,setState:At,setHasData:ln,onColumnsLoaded:c=>{const y=e(n).axis||i(c),R=c.filter(g=>g!==y).toSorted((g,b)=>g.localeCompare(b));At({columns:R,axis:y,selectedColumns:e(n).selectedColumns.length?e(n).selectedColumns:R.length?[R[0]]:[]})},getAxis:()=>Wr().axis});function l(c){const y=e(n).axis;At({axis:c});const g=[...e(n).columns,...y?[y]:[]].filter(b=>b!==c).toSorted((b,$)=>b.localeCompare($));At({columns:g}),o.loadPlot()}let d=j(()=>e(n).files.map(c=>({value:c,label:c.replace(/\.csv$/i,"").replace(/^profiles\//i,"").replace(/_/g," ")}))),x=j(()=>[...e(n).axis?[e(n).axis]:[],...e(n).columns].toSorted((c,y)=>c.localeCompare(y)).map(c=>({value:c,label:c}))),w=!1;Ne(()=>{r.allCases.length>0&&!w&&(w=!0,At({selectedCases:[...r.allCases]}),o.loadFiles().then(()=>o.loadPlot()))}),Ne(()=>{a(o.loadPlot)});let T=j(()=>e(n).selectedCases.length===0?"Please select at least one case.":e(n).selectedColumns.length===0?"Please select at least one value.":"No data to display.");var m=_e(),A=B(m);{var F=c=>{const y=L=>{var z=tu(),D=B(z);Me(D,{text:"Profile",children:(H,O)=>{lt(H,{class:"w-[160px]",get options(){return e(d)},get value(){return e(n).file},get onchange(){return o.handleFileChange}})}});var U=E(D,2);Me(U,{text:"X axis",children:(H,O)=>{lt(H,{class:"w-[140px]",get options(){return e(x)},get value(){return e(n).axis},onchange:l})}}),u(L,z)},R=L=>{var z=nu(),D=C(z);{let U=j(()=>!e(n).svgHtml);$e(D,{variant:"secondary",size:"sm",onclick:()=>Cn("profile-plot-holder",_r("profile",e(n).selectedCases)),get disabled(){return e(U)},children:(H,O)=>{var V=ru(),q=B(V);Te(q,{get icon(){return gr}}),ke(),u(H,V)},$$slots:{default:!0}})}p(z),u(L,z)};var g=au(),b=B(g);kn(b,{prefix:"profile",get allCases(){return r.allCases},get selectedCases(){return e(n).selectedCases},get onCasesChange(){return o.handleCasesChange},get middleSlot(){return y},columnLabel:"Values",get columns(){return e(n).columns},get selectedColumns(){return e(n).selectedColumns},get onColumnsChange(){return o.handleColumnsChange},get startFrom(){return e(n).startFrom},onStartFromChange:L=>{At({startFrom:L}),o.loadPlot()},xMinLabel:"X min",get xMin(){return e(n).xMin},onXMinChange:L=>{At({xMin:L}),o.loadPlot()},get extraSlot(){return R}});var $=E(b,2),_=C($);Qt(_,{id:"profile-plot-holder",get svgHtml(){return e(n).svgHtml},get emptyMessage(){return e(T)}}),p($),u(c,g)},v=c=>{var y=su(),R=C(y);Qt(R,{id:"profile-plot-holder",svgHtml:"",emptyMessage:"No profile data available. Please run a simulation first."}),p(y),u(c,y)};Y(A,c=>{e(n).files.length>0?c(F):c(v,-1)})}u(t,m),Le()}var iu=P('
      Diagnostics
      '),lu=P(" Refresh",1),cu=P(" ",1);function uu(t,r){Ae(r,!0);let a=j(Vc),n=j(Gc),s=j(Bc),i=j(qc),o=I(oe(er("probe")));Ne(()=>{tr("probe",e(o))});let l=I(void 0);function d(){var F;(F=e(l))==null||F()}async function x(){if(r.allCases.length){try{const v=(await Qr(r.allCases,"monitoring")).filter(c=>{const y=c.replace(/\.csv$/i,"").toLowerCase();return y!=="coords"&&!y.includes("coordinates")});on(v.length>0)}catch{on(!1)}try{const F=await Qr(r.allCases,"profiles");ln(F.length>0)}catch{ln(!1)}}}Ne(()=>{r.allCases.length>0&&x()}),pr(()=>{x(),d()}),Ne(()=>{e(s),e(i),Kc()});function w(F){F==="time"&&!e(s)||F==="profile"&&!e(i)||Uc(F)}var T=_e(),m=B(T);{var A=F=>{{const v=y=>{var R=iu(),g=E(C(R),2),b=C(g),$=E(b,2);p(g),p(R),Q(()=>{Se(b,1,`bg-transparent border-none p-0 m-0 text-lg font-bold tracking-tight transition-colors duration-150 - ${e(s)?e(a)==="time"?"text-edf-bleu-fonce cursor-pointer":"text-edf-gris-moyen cursor-pointer hover:text-muted":"text-edf-gris-moyen cursor-not-allowed opacity-50"}`),b.disabled=!e(s),we(b,"title",e(s)?"":"No probe data available. Run a simulation first."),Se($,1,`bg-transparent border-none p-0 m-0 text-lg font-bold tracking-tight transition-colors duration-150 - ${e(i)?e(a)==="profile"?"text-edf-bleu-fonce cursor-pointer":"text-edf-gris-moyen cursor-pointer hover:text-muted":"text-edf-gris-moyen cursor-not-allowed opacity-50"}`),$.disabled=!e(i),we($,"title",e(i)?"":"No profile data available. Run a simulation first.")}),ie("click",b,()=>w("time")),ie("click",$,()=>w("profile")),u(y,R)};Ht(F,{wide:!0,titleSlot:v,tabs:v,actions:y=>{var R=cu(),g=B(R);{let _=j(()=>e(a)==="time"?"probePlot":"profilePlot"),L=j(Ki);rr(g,{get name(){return e(_)},get intervalMs(){return e(L)},onRefresh:d,get checked(){return e(o)},set checked(z){f(o,z,!0)}})}var b=E(g,2);{var $=_=>{$e(_,{variant:"primary",onclick:d,children:(L,z)=>{var D=lu(),U=B(D);Te(U,{get icon(){return Jt}}),ke(),u(L,D)},$$slots:{default:!0}})};Y(b,_=>{e(o)||_($)})}u(y,R)},children:(y,R)=>{var g=_e(),b=B(g);{var $=L=>{eu(L,{get allCases(){return r.allCases},get onRefresh(){return e(l)},set onRefresh(z){f(l,z,!0)}})},_=L=>{ou(L,{get allCases(){return r.allCases},get onRefresh(){return e(l)},set onRefresh(z){f(l,z,!0)}})};Y(b,L=>{e(a)==="time"?L($):L(_,-1)})}u(y,g)},$$slots:{tabs:!0,actions:!0,default:!0}})}};Y(m,F=>{e(n)&&F(A)})}u(t,T),Le()}We(["click"]);var du=P(" Refresh",1),fu=P(" ",1),vu=P(" Download as CSV",1),gu=P('
      ',1),hu=P(" "),pu=P(' '),mu=P(' '),_u=P('
      Case
      '),bu=P('

      '),xu=P(" ",1);function yu(t,r){Ae(r,!0);let a=I(oe([])),n=I(oe([])),s=I(!1),i=I(!1),o=I(oe(er("perf")));Ne(()=>{tr("perf",e(o))});const l=5e3;let x=I(oe([{key:"elapsed_time",label:"Elapsed (s)",kind:"time"},{key:"io_time",label:"I/O (s)",kind:"time"},{key:"linear_solver_time",label:"Linear Solver (s)",kind:"time"},{key:"gradients_time",label:"Gradients (s)",kind:"time"},{key:"balances_time",label:"Balances (s)",kind:"time"},{key:"mpi_ranks",label:"MPI Ranks",kind:"int"},{key:"threads",label:"Threads",kind:"int"}])),w=j(()=>r.allCases.map(R=>({value:R,label:R}))),T=j(()=>e(n).length>0);async function m(){var R;if(e(a).length){f(i,!0);try{const g=await Dn(e(a));(R=g.columns)!=null&&R.length&&f(x,g.columns,!0),f(n,g.records,!0),e(n).length>0&&f(s,!0)}catch(g){console.error("Failed to load perf:",g)}f(i,!1)}}function A(R){if(f(a,R,!0),R.length===0){f(n,[],!0);return}m()}function F(R,g){if(g==null||g==="")return"-";if(R==="text")return g;const b=Number(g);return Number.isFinite(b)?R==="int"?String(Math.round(b)):b.toFixed(3):g}async function v(){if(!e(n).length)return;const R=["case_id",...e(x).map(_=>_.key)],g=e(n).map(_=>[_.case_id,...e(x).map(L=>_[L.key]??"")].join(",")),b=[R.join(","),...g].join(` -`),$=_r("timing_snapshot",e(a),"csv");await Pa(b,$)}let c=!1;Ne(()=>{r.allCases.length>0&&!c&&(c=!0,f(a,[...r.allCases],!0),Dn(r.allCases).then(R=>{var g;(g=R.columns)!=null&&g.length&&f(x,R.columns,!0),f(s,R.records.length>0),f(n,R.records,!0)}).catch(()=>{}))}),Ne(()=>{e(o)?hr("perf",m,l):vt("perf")});const y=pr(()=>{c&&m()});dr(()=>{vt("perf"),y()}),Ht(t,{eyebrow:"Performance",title:"Timing Snapshot",wide:!0,actions:g=>{var b=fu(),$=B(b);rr($,{name:"perf",intervalMs:l,onRefresh:m,get checked(){return e(o)},set checked(z){f(o,z,!0)}});var _=E($,2);{var L=z=>{$e(z,{variant:"primary",onclick:m,children:(D,U)=>{var H=du(),O=B(H);Te(O,{get icon(){return Jt}}),ke(),u(D,H)},$$slots:{default:!0}})};Y(_,z=>{e(o)||z(L)})}u(g,b)},children:(g,b)=>{var $=xu(),_=B($);{var L=H=>{Yt(H,{children:(O,V)=>{var q=gu(),X=B(q);Me(X,{text:"Cases",children:(M,h)=>{Gt(M,{class:"w-[160px]",get options(){return e(w)},get selected(){return e(a)},onchange:A,placeholder:"Select cases..."})}});var ae=E(X,2),N=C(ae);{let M=j(()=>!e(T));$e(N,{variant:"secondary",size:"sm",onclick:v,get disabled(){return e(M)},children:(h,k)=>{var S=vu(),Z=B(S);Te(Z,{get icon(){return gr}}),ke(),u(h,S)},$$slots:{default:!0}})}p(ae),u(O,q)}})};Y(_,H=>{e(s)&&H(L)})}var z=E(_,2);{var D=H=>{var O=_u(),V=C(O),q=C(V),X=C(q),ae=E(C(X));Ze(ae,17,()=>e(x),M=>M.key,(M,h)=>{var k=hu(),S=C(k,!0);p(k),Q(()=>ee(S,e(h).label)),u(M,k)}),p(X),p(q);var N=E(q);Ze(N,21,()=>e(n),M=>M.case_id,(M,h)=>{var k=mu(),S=C(k),Z=C(S,!0);p(S);var re=E(S);Ze(re,17,()=>e(x),ge=>ge.key,(ge,le)=>{var K=pu(),ne=C(K,!0);p(K),Q(se=>ee(ne,se),[()=>F(e(le).kind,e(h)[e(le).key])]),u(ge,K)}),p(k),Q(()=>ee(Z,e(h).case_id)),u(M,k)}),p(N),p(V),p(O),u(H,O)},U=H=>{var O=bu(),V=C(O);{var q=ae=>{var N=Be("Select cases above to view timing information.");u(ae,N)},X=ae=>{var N=Be("No performance data available. Please run a simulation first.");u(ae,N)};Y(V,ae=>{e(s)?ae(q):ae(X,-1)})}p(O),u(H,O)};Y(z,H=>{e(T)?H(D):H(U,-1)})}u(g,$)},$$slots:{actions:!0,default:!0}}),Le()}const wu={"&":"&","<":"<",">":">",'"':""","'":"'"};function za(t){return t.replace(/[&<>"']/g,r=>wu[r]??r)}var ku=P("
      "),Cu=P('
      ');function Su(t,r){Ae(r,!0);let a=I(void 0);function n(x){const w=za(x);if(!r.searchQuery.trim())return w;try{const T=new RegExp(`(${r.searchQuery})`,"gi");return w.replace(T,'$1')}catch{return w}}function s(x){return x==="error"?"tail-sev-error":x==="warn"?"tail-sev-warn":x==="info"?"tail-sev-info":""}function i(){return e(a)?e(a).scrollHeight-e(a).scrollTop-e(a).clientHeight<=24:!0}let o=I(!0);function l(){f(o,i(),!0)}Ne(()=>{r.autoScroll&&r.lines.length>0&&e(a)&&e(o)&&Pt().then(()=>{e(a)&&(e(a).scrollTop=e(a).scrollHeight)})});var d=Cu();Ze(d,21,()=>r.lines,x=>x.index,(x,w)=>{var T=ku();Fr(T,()=>n(e(w).text),!0),p(T),Q(m=>Se(T,1,`tail-line ${m??""} ${e(w).isNew?"tail-new":""}`),[()=>s(e(w).severity)]),u(x,T)}),p(d),nt(d,x=>f(a,x),()=>e(a)),rt("scroll",d,l),u(t,d),Le()}const $u=/(fatal error|error detected|error reading|error writing|segmentation fault|sigterm|sigsegv|sigkill|abort|killed|terminated|core dumped|traceback|exception|errno)/i,Pu=/(warning|divergence|non-convergence|clipping|negative|nan detected|overflow|underflow)/i;function Eu(t){return $u.test(t)?"error":Pu.test(t)?"warn":"none"}function Ru(t,r){return r==="all"||r===""?!0:r==="info"?t!=="none":t===r}var Nu=P(" Refresh",1),Mu=P(" ",1),Au=P(''),Lu=P(''),Tu=P("    ",1),Fu=Ot(''),Du=Ot(''),zu=Ot(''),Iu=P(" Resume",1),Ou=P(" Pause",1),Hu=P('Case not running'),ju=P(' 
      ',1),Vu=P('

      No log data available. Please run a simulation first.

      '),Uu=P('

      '),Bu=P(" ",1);function qu(t,r){Ae(r,!0);const a=80;let n=I(""),s=I(""),i=I(!1),o=I(oe([])),l=I(a),d=I(oe([])),x=I(oe(new Set)),w=I(!1),T=I(oe(er("tail")));Ne(()=>{tr("tail",e(T))});let m=I(!0),A=I("all"),F=I(""),v=I(""),c=I(void 0),y=j(()=>wn(r.allCases)),R=j(()=>e(o).map(N=>{const M=N.split("/").pop()??N;return{value:N,label:M}})),g=[{value:"all",label:"All"},{value:"error",label:"Error"},{value:"warn",label:"Warn"}],b=j(()=>e(o).length>0),$=j(()=>bn().some(N=>{var M;return N.case_id===e(n)&&((M=N.status)==null?void 0:M.toUpperCase())==="RUNNING"}));const _={"run_solver.log":1,listing:2,"run_status.running":3,"csauto.stdout":4,"csauto.stderr":5,"performance.log":6};function L(N){const M=N.split("/").pop()??N;return _[M]??99}async function z(){if(e(n))try{const h=(await ui(e(n))).filter(k=>{const S=k.split("/").pop()??k;return k.endsWith(".log")||k.endsWith("/summary")||S in _}).sort((k,S)=>L(k)-L(S));if(f(o,h,!0),h.length>0){const k=h[0];!e(s)||!h.includes(e(s))?(f(s,k,!0),f(i,!1)):!e(i)&&L(k)0&&h[h.length-1]===""?h.slice(0,-1):h;if(e(d).length>0){const S=U(e(d),k),Z=new Set;for(let re=S;re{let N=e(d).map((M,h)=>({text:M,index:h,severity:Eu(M),isNew:e(x).has(h)}));if(e(A)!=="all"&&(N=N.filter(M=>Ru(M.severity,e(A)))),e(F).trim())try{const M=new RegExp(e(F),"i");N=N.filter(h=>M.test(h.text))}catch{}return N});function O(N){f(n,N,!0),f(s,""),f(i,!1),f(d,[],!0),z().then(()=>D(!0))}function V(N){f(s,N,!0),f(i,!0),f(d,[],!0),D(!0)}function q(){f(w,!e(w)),e(w)||D(!0)}function X(N){(N.ctrlKey||N.metaKey)&&N.key==="f"&&e(c)&&(N.preventDefault(),e(c).focus())}Ne(()=>{r.allCases.length>0&&!e(n)&&(f(n,r.allCases[0],!0),z().then(()=>D(!0)))}),Ne(()=>{e(T)&&!e(w)&&e(n)?hr("tail",()=>D(!1),In()):vt("tail")});const ae=pr(()=>{e(n)&&z().then(()=>D(!0))});dr(()=>{vt("tail"),ae()}),rt("keydown",it,X),Ht(t,{eyebrow:"Live",title:"Log Tail",wide:!0,actions:M=>{var h=Mu(),k=B(h);{let re=j(In);rr(k,{name:"tail",get intervalMs(){return e(re)},onRefresh:()=>D(!1),get checked(){return e(T)},set checked(ge){f(T,ge,!0)}})}var S=E(k,2);{var Z=re=>{$e(re,{variant:"primary",onclick:()=>D(!0),children:(ge,le)=>{var K=Nu(),ne=B(K);Te(ne,{get icon(){return Jt}}),ke(),u(ge,K)},$$slots:{default:!0}})};Y(S,re=>{e(T)||re(Z)})}u(M,h)},children:(M,h)=>{var k=Bu(),S=B(k);{var Z=se=>{Yt(se,{children:(ue,de)=>{var J=Tu(),be=B(J);Me(be,{text:"Case",children:(pe,Oe)=>{lt(pe,{class:"w-[130px]",get options(){return e(y)},get value(){return e(n)},onchange:O})}});var fe=E(be,2);Me(fe,{text:"File",children:(pe,Oe)=>{lt(pe,{class:"w-[150px]",get options(){return e(R)},get value(){return e(s)},onchange:V})}});var Pe=E(fe,2);Me(Pe,{text:"Lines",children:(pe,Oe)=>{var He=Au();Qe(He),ie("change",He,()=>D(!0)),tt(He,()=>e(l),Fe=>f(l,Fe)),u(pe,He)}});var ve=E(Pe,2);Me(ve,{text:"Filter",children:(pe,Oe)=>{var He=Lu();Qe(He),nt(He,Fe=>f(c,Fe),()=>e(c)),tt(He,()=>e(F),Fe=>f(F,Fe)),u(pe,He)}});var ze=E(ve,2);Me(ze,{text:"Severity",children:(pe,Oe)=>{lt(pe,{class:"w-[90px]",get options(){return g},get value(){return e(A)},onchange:He=>f(A,He,!0)})}}),u(ue,J)}})};Y(S,se=>{e(b)&&se(Z)})}var re=E(S,2);{var ge=se=>{var ue=ju(),de=B(ue);Su(de,{get lines(){return e(H)},get searchQuery(){return e(F)},get autoScroll(){return e(m)}});var J=E(de,2),be=C(J),fe=C(be);{var Pe=G=>{var W=Fu();u(G,W)},ve=G=>{var W=Du();u(G,W)},ze=G=>{var W=zu();u(G,W)};Y(fe,G=>{e(w)?G(Pe):e($)?G(ve,1):G(ze,-1)})}var pe=E(fe);p(be);var Oe=E(be,2);{var He=G=>{$e(G,{variant:"secondary",size:"sm",onclick:q,children:(W,te)=>{var ce=_e(),Re=B(ce);{var Ie=me=>{var Ce=Iu(),je=B(Ce);Te(je,{get icon(){return pa}}),ke(),u(me,Ce)},xe=me=>{var Ce=Ou(),je=B(Ce);Te(je,{get icon(){return Uo}}),ke(),u(me,Ce)};Y(Re,me=>{e(w)?me(Ie):me(xe,-1)})}u(W,ce)},$$slots:{default:!0}})},Fe=G=>{var W=Hu();u(G,W)};Y(Oe,G=>{e($)?G(He):G(Fe,-1)})}var ye=E(Oe,2),Ee=C(ye);It(Ee,{get checked(){return e(m)},onchange:G=>f(m,G,!0),size:14,label:"Auto-scroll",labelFirst:!0}),p(ye),p(J),Q(()=>ee(pe,` ${e(H).length??""} / ${e(d).length??""}`)),u(se,ue)},le=se=>{var ue=Vu();u(se,ue)};Y(re,se=>{e(d).length>0?se(ge):se(le,-1)})}var K=E(re,2);{var ne=se=>{var ue=Uu(),de=C(ue,!0);p(ue),Q(()=>ee(de,e(v))),u(se,ue)};Y(K,se=>{e(v)&&se(ne)})}u(M,k)},$$slots:{actions:!0,default:!0}}),Le()}We(["change"]);function Ku(t,r=3){var A,F;const a=t.split(` -`),n=[];let s=0,i=0,o=!1;for(const v of a){if(v.startsWith("===")||v.startsWith("---")||v.startsWith("+++"))continue;const c=v.match(/^@@ -(\d+),?\d* \+(\d+),?\d* @@/);if(c){s=parseInt(c[1],10)-1,i=parseInt(c[2],10)-1,o=!0;continue}if(o)if(v.startsWith("-"))s++,n.push({type:"del",leftNum:s,rightNum:null,leftContent:v.slice(1),rightContent:""});else if(v.startsWith("+"))i++,n.push({type:"add",leftNum:null,rightNum:i,leftContent:"",rightContent:v.slice(1)});else{s++,i++;const y=v.startsWith(" ")?v.slice(1):v;n.push({type:"equal",leftNum:s,rightNum:i,leftContent:y,rightContent:y})}}const l=[];let d=0;for(;d=0&&v-T>1&&w.push({kind:"separator",skipped:v-T-1});const c=l[v].type!=="equal",y=c&&!m;w.push({kind:"line",row:l[v],hunkStart:y}),m=c,T=v}if(T=0&&w.push({kind:"separator",skipped:l.length-1-T}),w.length>0&&w[0].kind==="line"){const v=((A=w[0].row)==null?void 0:A.leftNum)??0,c=((F=w[0].row)==null?void 0:F.rightNum)??0,y=Math.max(v,c)-1;y>0&&w.unshift({kind:"separator",skipped:y})}return w}var Gu=P('
      '),Wu=P('
      '),Xu=P(' ',1),Yu=P('No matches'),Qu=P('
      '),Zu=P('

      Files are identical.

      '),Ju=P('
      Loading...
      '),ed=P('
      ');function td(t,r){Ae(r,!0);let a=he(r,"loading",3,!1),n=I(void 0),s=j(()=>Ku(r.diffText)),i=j(()=>{const G=[];return e(s).forEach((W,te)=>{W.hunkStart&&G.push(te)}),G}),o=j(()=>e(i).length>0),l=j(()=>{var W;const G=new Array(e(s).length).fill(-1);for(let te=0;te{r.diffText!==x&&(x=r.diffText,f(d,-1))});let w=j(()=>{if(!r.search.trim())return[];try{const G=new RegExp(r.search,"i"),W=[];return e(s).forEach((te,ce)=>{te.kind==="line"&&te.row&&(G.test(te.row.leftContent)||G.test(te.row.rightContent))&&W.push(ce)}),W}catch{return[]}}),T=I(-1),m="";Ne(()=>{r.search!==m&&(m=r.search,f(T,e(w).length>0?0:-1,!0))});async function A(G){var ce;f(T,G,!0),await Pt();const W=e(w)[G],te=(ce=e(g))==null?void 0:ce.querySelector(`[data-item-idx="${W}"]`);if(te&&e(g)&&e(b)){const Re=e(g).getBoundingClientRect(),xe=te.getBoundingClientRect().top-Re.top+e(g).scrollTop-e(g).clientHeight/3;_=!0,e(g).scrollTop=xe,e(b).scrollTop=xe,requestAnimationFrame(()=>{_=!1})}}function F(){e(T)>0&&A(e(T)-1)}function v(){e(T)<0&&e(w).length>0?A(0):e(T)$1`)}catch{return te}}function y(G,W){return G==="equal"?"":G==="del"&&W==="left"?"bg-[rgba(214,67,10,0.08)] text-edf-orange-fonce":G==="del"&&W==="right"?"bg-[rgba(48,122,16,0.08)] text-edf-vert-fonce":G==="add"&&W==="left"?"bg-edf-gris-clair":G==="add"&&W==="right"?"bg-[rgba(48,122,16,0.08)] text-edf-vert-fonce":""}function R(G,W){return G==="del"&&W==="left"?"rgb(251,237,233)":G==="del"&&W==="right"?"rgb(238,247,236)":G==="add"&&W==="left"?"var(--color-edf-gris-clair)":G==="add"&&W==="right"?"rgb(238,247,236)":"white"}let g=I(void 0),b=I(void 0),$=!1,_=!1;function L(G){$||_||!e(g)||!e(b)||($=!0,G==="left"?(e(b).scrollTop=e(g).scrollTop,e(b).scrollLeft=e(g).scrollLeft):(e(g).scrollTop=e(b).scrollTop,e(g).scrollLeft=e(b).scrollLeft),requestAnimationFrame(()=>{$=!1}))}async function z(G){var te;f(d,G,!0),await Pt();const W=(te=e(g))==null?void 0:te.querySelector(`[data-hunk-start="${G}"]`);if(W&&e(g)&&e(b)){_=!0;const ce=e(g).getBoundingClientRect(),Ie=W.getBoundingClientRect().top-ce.top+e(g).scrollTop-e(g).clientHeight/3;e(g).scrollTop=Ie,e(b).scrollTop=Ie,requestAnimationFrame(()=>{_=!1})}}function D(){e(d)>0&&z(e(d)-1)}function U(){e(d)<0?z(0):e(d)=0&&f(d,W,!0)}function O(G){G.target instanceof HTMLInputElement||(G.key==="n"&&!G.shiftKey?(G.preventDefault(),U()):G.key==="N"||G.key==="n"&&G.shiftKey?(G.preventDefault(),D()):G.key==="j"?(G.preventDefault(),v()):(G.key==="J"||G.key==="j"&&G.shiftKey)&&(G.preventDefault(),F()))}var V=ed();{const G=(W,te=ys)=>{var ce=_e(),Re=B(ce);Ze(Re,17,()=>e(s),un,(Ie,xe,me)=>{const Ce=j(()=>e(i).indexOf(me)),je=j(()=>e(l)[me]>=0&&e(l)[me]===e(d)),Xe=j(()=>{var at,Ge;return te()==="left"?(at=e(xe).row)==null?void 0:at.leftNum:(Ge=e(xe).row)==null?void 0:Ge.rightNum}),gt=j(()=>{var at,Ge;return te()==="left"?((at=e(xe).row)==null?void 0:at.leftContent)??"":((Ge=e(xe).row)==null?void 0:Ge.rightContent)??""});var jt=_e(),Or=B(jt);{var et=at=>{var Ge=Gu(),Nt=E(C(Ge),2),Hr=C(Nt);p(Nt),p(Ge),Q(()=>ee(Hr,`... ${e(xe).skipped??""} lines hidden ...`)),u(at,Ge)},ut=at=>{var Ge=Wu(),Nt=C(Ge),Hr=C(Nt,!0);p(Nt);var Sn=E(Nt,2);Fr(Sn,()=>c(e(gt),e(T)>=0&&e(w)[e(T)]===me),!0),p(Sn),p(Ge),Q((yt,Mt,br,Ia,Oa)=>{Se(Ge,1,`flex w-full ${yt??""} ${Mt??""}`),Je(Ge,e(je)?"background-color: rgba(16,87,200,0.12); color: rgb(16,87,200);":""),we(Ge,"role",br),we(Ge,"tabindex",Ia),we(Ge,"data-hunk-start",te()==="left"&&e(Ce)>=0?e(Ce):void 0),we(Ge,"data-item-idx",te()==="left"?me:void 0),Je(Nt,`background: ${Oa??""}; color: ${e(je)?"white":"var(--color-muted)"};`),ee(Hr,e(Xe)??"")},[()=>y(e(xe).row.type,te()),()=>e(xe).row.type!=="equal"||e(w).includes(me)?"cursor-pointer":"",()=>e(xe).row.type!=="equal"||e(w).includes(me)?"button":void 0,()=>e(xe).row.type!=="equal"||e(w).includes(me)?0:void 0,()=>e(je)?"rgb(16,87,200)":R(e(xe).row.type,te())]),ie("click",Ge,()=>{var Mt;((Mt=e(xe).row)==null?void 0:Mt.type)!=="equal"&&H(me);const yt=e(w).indexOf(me);yt>=0&&f(T,yt,!0)}),ie("keydown",Ge,yt=>{var Mt;if(yt.key==="Enter"||yt.key===" "){yt.preventDefault(),((Mt=e(xe).row)==null?void 0:Mt.type)!=="equal"&&H(me);const br=e(w).indexOf(me);br>=0&&f(T,br,!0)}}),u(at,Ge)};Y(Or,at=>{e(xe).kind==="separator"?at(et):e(xe).row&&at(ut,1)})}u(Ie,jt)}),u(W,ce)};var q=C(V),X=C(q),ae=C(X),N=C(ae,!0);p(ae);var M=E(ae,2),h=C(M,!0);p(M),p(X);var k=E(X,2),S=C(k),Z=C(S,!0);p(S);var re=E(S,2),ge=C(re,!0);p(re),p(k),p(q);var le=E(q,2),K=C(le),ne=C(K);Qe(ne);var se=E(ne,2);{var ue=W=>{var te=Xu(),ce=B(te);{let me=j(()=>e(T)<=0);$e(ce,{variant:"secondary",size:"sm",onclick:F,get disabled(){return e(me)},children:(Ce,je)=>{ke();var Xe=Be("Prev");u(Ce,Xe)},$$slots:{default:!0}})}var Re=E(ce,2),Ie=C(Re);p(Re);var xe=E(Re,2);{let me=j(()=>e(T)>=e(w).length-1);$e(xe,{variant:"secondary",size:"sm",onclick:v,get disabled(){return e(me)},children:(Ce,je)=>{ke();var Xe=Be("Next");u(Ce,Xe)},$$slots:{default:!0}})}Q(()=>ee(Ie,`${e(T)>=0?e(T)+1:"–"} / ${e(w).length??""} occurrence${e(w).length!==1?"s":""}`)),u(W,te)},de=j(()=>r.search.trim()&&e(w).length>0),J=W=>{var te=Yu();u(W,te)},be=j(()=>r.search.trim());Y(se,W=>{e(de)?W(ue):e(be)&&W(J,1)})}p(K);var fe=E(K,2),Pe=C(fe);{let W=j(()=>e(i).length===0||e(d)<=0);$e(Pe,{variant:"secondary",size:"sm",onclick:D,get disabled(){return e(W)},children:(te,ce)=>{ke();var Re=Be("Prev");u(te,Re)},$$slots:{default:!0}})}var ve=E(Pe,2),ze=C(ve);p(ve);var pe=E(ve,2);{let W=j(()=>e(i).length===0||e(d)>=e(i).length-1);$e(pe,{variant:"secondary",size:"sm",onclick:U,get disabled(){return e(W)},children:(te,ce)=>{ke();var Re=Be("Next");u(te,Re)},$$slots:{default:!0}})}p(fe),p(le);var Oe=E(le,2);{var He=W=>{var te=Qu(),ce=C(te),Re=C(ce),Ie=C(Re);G(Ie,()=>"left"),p(Re),p(ce),nt(ce,je=>f(g,je),()=>e(g));var xe=E(ce,2),me=C(xe),Ce=C(me);G(Ce,()=>"right"),p(me),p(xe),nt(xe,je=>f(b,je),()=>e(b)),p(te),rt("scroll",ce,()=>L("left")),rt("scroll",xe,()=>L("right")),u(W,te)},Fe=W=>{var te=Zu();u(W,te)};Y(Oe,W=>{e(o)?W(He):W(Fe,-1)})}var ye=E(Oe,2);{var Ee=W=>{var te=Ju();u(W,te)};Y(ye,W=>{a()&&W(Ee)})}p(V),nt(V,W=>f(n,W),()=>e(n)),Q(()=>{ee(N,r.leftLabel),ee(h,r.kind),ee(Z,r.rightLabel),ee(ge,r.kind),dn(ne,r.search),ee(ze,`${e(d)>=0?e(d)+1:"–"} / ${e(i).length??""} diff${e(i).length!==1?"s":""}`)}),ie("input",ne,W=>r.onSearchChange(W.target.value)),ie("keydown",ne,W=>{W.key==="Enter"&&(W.preventDefault(),v())})}ie("keydown",V,O),u(t,V),Le()}We(["keydown","click","input"]);var rd=P(" ",1),nd=P('

      Please select two different cases to compare.

      '),ad=P('

      Select two cases to compare.

      '),sd=P(' '),od=P('
      Parameter
      '),id=P('

      All parameters are identical.

      '),ld=P('
      ',1),cd=P('

      '),ud=P('

      Loading...

      '),dd=P(" ",1),fd=P(" ",1);function vd(t,r){Ae(r,!0);let a=I(""),n=I(""),s=I(""),i=I(""),o=I(""),l=I(!1),d=I(!1),x=I(""),w=j(()=>r.allCases.map(_=>({value:_,label:_})));const T=[{value:"setup.xml",label:"setup.xml"},{value:"doe_row.csv",label:"doe_row.csv"},{value:"run_solver.log",label:"run_solver.log"},{value:"performance.log",label:"performance.log"}];let m=j(()=>{var _;return((_=Ft())==null?void 0:_.compare_kinds)??T});Ne(()=>{var _;e(m).some(L=>L.value===e(s))||f(s,((_=e(m)[0])==null?void 0:_.value)??"",!0)});let A=I(!1),F=j(()=>e(a)&&e(n)&&e(a)!==e(n));function v(){const _=e(a);f(a,e(n),!0),f(n,_,!0)}async function c(){if(e(F)){f(l,!0),f(x,"");try{const _=await hi({cases:[e(a),e(n)],base:e(a),kind:e(s)});f(o,_,!0),f(d,!0)}catch(_){console.error("Failed to load diff:",_),f(o,""),f(d,!1);const L=_ instanceof Error?_.message:String(_);f(x,L.includes("404")?`File "${e(s)}" not found for one of the selected cases. It may not have been run yet.`:"Failed to load comparison.",!0)}f(l,!1)}}Ne(()=>{e(a)&&e(n)&&e(a)!==e(n)&&e(s)?c():e(a)&&e(n)&&e(a)===e(n)&&(f(o,""),f(d,!0))});let y=!1;Ne(()=>{r.allCases.length>=2&&!y?(y=!0,f(a,r.allCases[0],!0),f(n,r.allCases[1],!0)):r.allCases.length===1&&!y&&(y=!0,f(a,r.allCases[0],!0))});let R=j(xn),g=j(()=>{if(!e(a)||!e(n)||e(a)===e(n)||e(R).length===0)return[];const _=bn(),L=_.find(D=>D.case_id===e(a)),z=_.find(D=>D.case_id===e(n));return!L&&!z?[]:e(R).map(D=>{var O,V;const U=((O=L==null?void 0:L.doe)==null?void 0:O[D])!=null&&String(L.doe[D])!==""?String(L.doe[D]):"—",H=((V=z==null?void 0:z.doe)==null?void 0:V[D])!=null&&String(z.doe[D])!==""?String(z.doe[D]):"—";return{param:D,left:U,right:H,differs:U!==H}})}),b=j(()=>e(A)?e(g):e(g).filter(_=>_.differs)),$=j(()=>e(g).filter(_=>_.differs).length);Ht(t,{eyebrow:"Compare",title:"Side-by-Side Comparison",wide:!0,children:(_,L)=>{var z=fd(),D=B(z);Yt(D,{children:(q,X)=>{var ae=rd(),N=B(ae);Me(N,{text:"First case",children:(k,S)=>{lt(k,{class:"w-32.5",get options(){return e(w)},get value(){return e(a)},onchange:Z=>f(a,Z,!0),placeholder:"Select..."})}});var M=E(N,2);{let k=j(()=>!e(a)&&!e(n));$e(M,{variant:"secondary",size:"sm",onclick:v,get disabled(){return e(k)},children:(S,Z)=>{Te(S,{get icon(){return To}})},$$slots:{default:!0}})}var h=E(M,2);Me(h,{text:"Second case",children:(k,S)=>{lt(k,{class:"w-32.5",get options(){return e(w)},get value(){return e(n)},onchange:Z=>f(n,Z,!0),placeholder:"Select..."})}}),u(q,ae)}});var U=E(D,2);{var H=q=>{var X=nd();u(q,X)},O=q=>{var X=ad();u(q,X)},V=q=>{var X=dd(),ae=B(X);{var N=re=>{var ge=ld(),le=B(ge),K=C(le),ne=C(K);p(K);var se=E(K,2),ue=C(se,!0);p(se),p(le);var de=E(le,2);{var J=fe=>{var Pe=od(),ve=C(Pe),ze=C(ve),pe=C(ze),Oe=C(pe),He=C(Oe,!0);p(Oe);var Fe=E(Oe,2),ye=C(Fe,!0);p(Fe),p(pe),p(ze);var Ee=E(ze);Ze(Ee,21,()=>e(b),G=>G.param,(G,W)=>{var te=sd(),ce=C(te),Re=C(ce,!0);p(ce);var Ie=E(ce),xe=C(Ie,!0);p(Ie);var me=E(Ie),Ce=C(me,!0);p(me),p(te),Q(()=>{Se(ce,1,dt(e(W).differs?"text-edf-orange-fonce bg-[rgba(214,67,10,0.04)]":"")),ee(Re,e(W).left),ee(xe,e(W).param),Se(me,1,dt(e(W).differs?"text-edf-vert-fonce bg-[rgba(48,122,16,0.04)]":"")),ee(Ce,e(W).right)}),u(G,te)}),p(Ee),p(ve),p(Pe),Q(()=>{ee(He,e(a)),ee(ye,e(n))}),u(fe,Pe)},be=fe=>{var Pe=id();u(fe,Pe)};Y(de,fe=>{e(b).length>0?fe(J):fe(be,-1)})}Q(()=>{ee(ne,`${e($)??""} difference${e($)!==1?"s":""} out of ${e(g).length??""} - parameters`),ee(ue,e(A)?"Show differences only":"Show all parameters")}),ie("click",se,()=>f(A,!e(A))),u(re,ge)};Y(ae,re=>{e(g).length>0&&re(N)})}var M=E(ae,2);Yt(M,{children:(re,ge)=>{Me(re,{text:"File",children:(le,K)=>{lt(le,{class:"w-37.5",get options(){return e(m)},get value(){return e(s)},onchange:ne=>f(s,ne,!0)})}})}});var h=E(M,2);{var k=re=>{var ge=cd(),le=C(ge,!0);p(ge),Q(()=>ee(le,e(x))),u(re,ge)},S=re=>{td(re,{get diffText(){return e(o)},get leftLabel(){return e(a)},get rightLabel(){return e(n)},get kind(){return e(s)},get search(){return e(i)},get loading(){return e(l)},onSearchChange:ge=>f(i,ge,!0)})},Z=re=>{var ge=ud();u(re,ge)};Y(h,re=>{e(x)?re(k):e(d)?re(S,1):e(l)&&re(Z,2)})}u(q,X)};Y(U,q=>{e(a)&&e(n)&&e(a)===e(n)?q(H):!e(a)||!e(n)?q(O,1):q(V,-1)})}u(_,z)},$$slots:{default:!0}}),Le()}We(["click"]);var gd=P(" Refresh",1),hd=P(" ",1),pd=P(''),md=P(''),_d=P(" Download as CSV",1),bd=P('
      ',1),xd=P(" ",1),yd=P(""),wd=P('
      Sort by:
      '),kd=P('

      No errors found. Select cases and adjust filters above.

      '),Cd=P(' '),Sd=P('NEW'),$d=P('
      '),Pd=P('
      '),Ed=P(' '),Rd=P('
      '),Nd=P('

      '),Md=P("
      ",1);function Ad(t,r){Ae(r,!0);const a=6,n=["csauto.stderr","run_solver.log","listing"];let s=I(oe([])),i=I(oe([...n])),o=!1;Ne(()=>{var ne;const K=(ne=Ft())==null?void 0:ne.error_files;K!=null&&K.length&&!o&&f(i,[...K],!0)});let l=I("all"),d=I(""),x=I(a),w=I(!1),T=I(""),m=I(oe(er("errors")));Ne(()=>{tr("errors",e(m))});let A=I(oe([])),F=I(oe(new Set));function v(K){return K.toLowerCase().replace(/[0-9]+/g,"#").replace(/0x[0-9a-f]+/gi,"#").replace(/\s+/g," ").trim()}function c(K){const ne=K.line_html.replace(/<[^>]*>/g,"").slice(0,120);return`${K.case_id}|${K.file}|${K.severity}|${v(ne)}`}function y(K){const ne=new Map;for(const se of K){const ue=c(se),de=ne.get(ue);de?de.count++:ne.set(ue,{...se,count:1,fingerprint:ue,isNew:!e(F).has(ue)})}return Array.from(ne.values())}async function R(){if(!(!e(s).length||!e(i).length)){f(w,!0);try{const K=await li({cases:e(s),files:e(i),context:e(x),sev:e(l)==="all"?"":e(l),q:e(d)});f(T,"");const ne=y(K.items);f(A,K.items,!0);const se=new Set(ne.map(ue=>ue.fingerprint));f(F,se,!0),f(g,ne,!0)}catch(K){f(T,"Failed to load errors"),console.error("Failed to load errors:",K)}finally{f(w,!1)}}}let g=I(oe([])),b=null;function $(){b&&clearTimeout(b),b=setTimeout(R,250)}function _(K){return K==="error"?"error-sev-error":K==="warn"?"error-sev-warn":"error-sev-info"}let L=j(()=>wn(r.allCases));const z=["csauto.stderr","run_solver.log","listing","csauto.stdout"];let D=j(()=>{var K;return(((K=Ft())==null?void 0:K.error_files)??z).map(ne=>({value:ne,label:ne}))}),U=[{value:"all",label:"All"},{value:"error",label:"Error"},{value:"warn",label:"Warn"},{value:"info",label:"Info"}];function H(K){if(f(s,K,!0),K.length===0){f(g,[],!0),f(A,[],!0);return}R()}function O(K){if(o=!0,f(i,K,!0),K.length===0){f(g,[],!0),f(A,[],!0);return}R()}function V(K){f(l,K,!0),R()}function q(){R()}let X=!1;Ne(()=>{r.allCases.length>0&&!X&&(X=!0,f(s,[...r.allCases],!0),R())}),Ne(()=>{e(m)?hr("errors",R,Hn()):vt("errors")});const ae=pr(()=>{X&&R()});dr(()=>{vt("errors"),ae()});let N=I(oe(new Set));function M(K){const ne=new Set(e(N));ne.has(K)?ne.delete(K):ne.add(K),f(N,ne,!0)}let h=I("severity"),k=I("desc");const S={info:0,warn:1,error:2};let Z=j(()=>{const K=[...e(g)];return K.sort((ne,se)=>{let ue=0;return e(h)==="severity"?ue=(S[ne.severity]??9)-(S[se.severity]??9):e(h)==="count"?ue=ne.count-se.count:ue=ne[e(h)].localeCompare(se[e(h)]),e(k)==="asc"?ue:-ue}),K});const re={severity:"desc",count:"desc",case_id:"asc",file:"asc"};function ge(K){e(h)===K?f(k,e(k)==="asc"?"desc":"asc",!0):(f(h,K,!0),f(k,re[K],!0))}function le(){if(!e(g).length)return;const K=["case_id","file","severity","count","is_new","line_text"],ne=e(Z).map(de=>[de.case_id,de.file,de.severity,de.count,de.isNew?"yes":"no",`"${de.line_html.replace(/<[^>]*>/g,"").replace(/"/g,'""')}"`].join(",")),se=[K.join(","),...ne].join(` -`),ue=_r("errors",e(s),"csv");Pa(se,ue)}Ht(t,{eyebrow:"Diagnostics",title:"Recent Errors",wide:!0,actions:ne=>{var se=hd(),ue=B(se);{let be=j(Hn);rr(ue,{name:"errors",get intervalMs(){return e(be)},onRefresh:R,get checked(){return e(m)},set checked(fe){f(m,fe,!0)}})}var de=E(ue,2);{var J=be=>{$e(be,{variant:"primary",onclick:R,children:(fe,Pe)=>{var ve=gd(),ze=B(ve);Te(ze,{get icon(){return Jt}}),ke(),u(fe,ve)},$$slots:{default:!0}})};Y(de,be=>{e(m)||be(J)})}u(ne,se)},children:(ne,se)=>{var ue=Md(),de=B(ue);Yt(de,{children:(ye,Ee)=>{var G=bd(),W=B(G);Me(W,{text:"Cases",children:(Ce,je)=>{Gt(Ce,{class:"w-[160px]",get options(){return e(L)},get selected(){return e(s)},onchange:H,placeholder:"Select cases..."})}});var te=E(W,2);Me(te,{text:"Files",children:(Ce,je)=>{Gt(Ce,{class:"w-[160px]",get options(){return e(D)},get selected(){return e(i)},onchange:O,placeholder:"Select files..."})}});var ce=E(te,2);Me(ce,{text:"Severity",children:(Ce,je)=>{lt(Ce,{class:"w-[90px]",get options(){return U},get value(){return e(l)},onchange:V})}});var Re=E(ce,2);Me(Re,{text:"Search",children:(Ce,je)=>{var Xe=pd();Qe(Xe),ie("input",Xe,$),tt(Xe,()=>e(d),gt=>f(d,gt)),u(Ce,Xe)}});var Ie=E(Re,2);Me(Ie,{text:"Context",children:(Ce,je)=>{var Xe=md();Qe(Xe),ie("change",Xe,q),tt(Xe,()=>e(x),gt=>f(x,gt)),u(Ce,Xe)}});var xe=E(Ie,2),me=C(xe);{let Ce=j(()=>e(g).length===0);$e(me,{variant:"secondary",size:"sm",onclick:le,get disabled(){return e(Ce)},children:(je,Xe)=>{var gt=_d(),jt=B(gt);Te(jt,{get icon(){return gr}}),ke(),u(je,gt)},$$slots:{default:!0}})}p(xe),u(ye,G)}});var J=E(de,2);{var be=ye=>{var Ee=wd(),G=E(C(Ee),2);Ze(G,16,()=>[{key:"severity",label:"Severity"},{key:"count",label:"Count"},{key:"case_id",label:"Case"},{key:"file",label:"File"}],W=>W.key,(W,te)=>{var ce=yd(),Re=C(ce,!0),Ie=E(Re);{var xe=me=>{var Ce=xd(),je=E(B(Ce));{let Xe=j(()=>e(k)==="asc"?Fo:Lo);Te(je,{get icon(){return e(Xe)},size:12})}u(me,Ce)};Y(Ie,me=>{e(h)===te.key&&me(xe)})}p(ce),Q(()=>{Se(ce,1,`cursor-pointer bg-transparent border-none text-xs hover:underline ${e(h)===te.key?"text-edf-bleu-fonce font-bold":"text-muted"}`),ee(Re,te.label)}),ie("click",ce,()=>ge(te.key)),u(W,ce)}),p(Ee),u(ye,Ee)};Y(J,ye=>{e(Z).length>0&&ye(be)})}var fe=E(J,2),Pe=C(fe);{var ve=ye=>{var Ee=kd();u(ye,Ee)};Y(Pe,ye=>{e(Z).length===0&&ye(ve)})}var ze=E(Pe,2);Ze(ze,17,()=>e(Z),ye=>ye.fingerprint,(ye,Ee)=>{var G=Pd(),W=C(G),te=C(W),ce=C(te);{let et=j(()=>e(N).has(e(Ee).fingerprint)?gn:Do);Te(ce,{get icon(){return e(et)},size:14})}p(te);var Re=E(te,2),Ie=C(Re);p(Re);var xe=E(Re,2),me=C(xe);{var Ce=et=>{var ut=Cd(),at=C(ut);p(ut),Q(()=>ee(at,`${e(Ee).count??""}x`)),u(et,ut)};Y(me,et=>{e(Ee).count>1&&et(Ce)})}var je=E(me,2);{var Xe=et=>{var ut=Sd();u(et,ut)};Y(je,et=>{e(Ee).isNew&&et(Xe)})}p(xe),p(W);var gt=E(W,2);{var jt=et=>{var ut=$d();Fr(ut,()=>e(Ee).line_html,!0),p(ut),u(et,ut)},Or=j(()=>e(N).has(e(Ee).fingerprint));Y(gt,et=>{e(Or)&&et(jt)})}p(G),Q(et=>{Se(G,1,`error-item ${et??""}`),ee(Ie,`${e(Ee).case_id??""} / ${e(Ee).file??""} : ${e(Ee).severity??""}`)},[()=>_(e(Ee).severity)]),ie("click",W,()=>M(e(Ee).fingerprint)),u(ye,G)}),p(fe);var pe=E(fe,2);{var Oe=ye=>{var Ee=Rd(),G=C(Ee),W=C(G);p(G);var te=E(G,2);{var ce=Ie=>{var xe=Ed(),me=C(xe);p(xe),Q(Ce=>ee(me,`${Ce??""} new`),[()=>e(g).filter(Ce=>Ce.isNew).length]),u(Ie,xe)},Re=j(()=>e(g).some(Ie=>Ie.isNew));Y(te,Ie=>{e(Re)&&Ie(ce)})}p(Ee),Q(()=>ee(W,`${e(g).length??""} unique / ${e(A).length??""} total`)),u(ye,Ee)};Y(pe,ye=>{e(Z).length>0&&ye(Oe)})}var He=E(pe,2);{var Fe=ye=>{var Ee=Nd(),G=C(Ee,!0);p(Ee),Q(()=>ee(G,e(T))),u(ye,Ee)};Y(He,ye=>{e(T)&&ye(Fe)})}Q(()=>Se(fe,1,`error-list ${e(w)?"opacity-50 pointer-events-none":""}`)),u(ne,ue)},$$slots:{actions:!0,default:!0}}),Le()}We(["input","change","click"]);var Ld=P('
      Developed by Simvia
      ',1);function Vd(t,r){Ae(r,!0);let a=I(oe({totalCases:0,shownCases:0,totalRunning:0,shownRunning:0,totalConverged:0,shownConverged:0})),n=I(oe([])),s=I(null);const i=S=>e(s)===null||e(s).includes(S);async function o(S){var ge;const Z=`/favicon-${S}.svg`;try{const le=await fetch(Z);if(!le.ok||!((ge=le.headers.get("content-type"))!=null&&ge.includes("svg")))return}catch{return}const re=document.querySelector('link[rel="icon"]');re&&(re.href=Z)}async function l(){try{const S=await ai();Pl(S.rows),El(S.doe_columns),f(n,S.rows.map(Z=>Z.case_id),!0),f(a,jl(Sa(),bn()),!0)}catch(S){console.error("Failed to load status:",S)}}Yn(()=>{l(),si().then(S=>{tl(S),f(s,S.panels,!0),o(S.solver)}).catch(()=>{})});var d=Ld(),x=B(d);Ni(x,{});var w=E(x,2);Fi(w,{});var T=E(w,2);ol(T,{get totalCases(){return e(a).totalCases},get shownCases(){return e(a).shownCases},get totalRunning(){return e(a).totalRunning},get shownRunning(){return e(a).shownRunning},get totalConverged(){return e(a).totalConverged},get shownConverged(){return e(a).shownConverged}});var m=E(T,2),A=C(m);{var F=S=>{_c(S,{onRefresh:l})},v=j(()=>i("status"));Y(A,S=>{e(v)&&S(F)})}var c=E(A,2);{var y=S=>{Hc(S,{get allCases(){return e(n)}})},R=j(()=>i("residuals"));Y(c,S=>{e(R)&&S(y)})}var g=E(c,2);{var b=S=>{uu(S,{get allCases(){return e(n)}})},$=j(()=>i("probes"));Y(g,S=>{e($)&&S(b)})}var _=E(g,2);{var L=S=>{yu(S,{get allCases(){return e(n)}})},z=j(()=>i("performance"));Y(_,S=>{e(z)&&S(L)})}var D=E(_,2);{var U=S=>{vd(S,{get allCases(){return e(n)}})},H=j(()=>i("compare"));Y(D,S=>{e(H)&&S(U)})}var O=E(D,2);{var V=S=>{qu(S,{get allCases(){return e(n)}})},q=j(()=>i("tail"));Y(O,S=>{e(q)&&S(V)})}var X=E(O,2);{var ae=S=>{Ad(S,{get allCases(){return e(n)}})},N=j(()=>i("errors"));Y(X,S=>{e(N)&&S(ae)})}p(m);var M=E(m,2),h=E(C(M),2),k=C(h);p(h),p(M),Q(()=>we(k,"src",il)),u(t,d),Le()}export{Vd as component}; diff --git a/frontend/dist/_app/immutable/nodes/2.DQxkgq4x.js b/frontend/dist/_app/immutable/nodes/2.DQxkgq4x.js new file mode 100644 index 0000000..763b315 --- /dev/null +++ b/frontend/dist/_app/immutable/nodes/2.DQxkgq4x.js @@ -0,0 +1,1190 @@ +import{b as Pr,a as u,f as S,c as be,t as Ve,d as Ot}from"../chunks/C14P8jaG.js";import{o as Zn,a as vr}from"../chunks/Cz6m6K8p.js";import{h as De,L as $t,G as Lt,c as Er,J as Kt,b as Jn,o as e,N as ja,ag as Va,O as En,P as zt,f as _t,ay as ea,aF as Ua,ao as Rn,e as mt,a as dr,aM as Ba,s as qa,a5 as Ka,aN as ta,aE as dn,aO as Ga,a7 as Nn,aP as Wa,aQ as Xa,aI as Ya,aR as ht,aS as ra,a1 as Qa,r as na,p as aa,aT as Ur,ae as sa,aU as Za,aV as Ja,aC as es,m as ts,d as Nr,az as oa,y as J,F as ia,aW as rs,aG as ns,aA as as,D as la,aX as ca,aY as ss,aZ as os,E as is,aw as ua,S as Dr,k as Mr,a_ as da,a$ as ls,b0 as cs,b1 as fa,b2 as us,b3 as ds,b4 as gr,b5 as fs,b6 as vs,b7 as gs,b8 as hs,b9 as ps,ba as ms,bb as _s,aJ as Pt,U as bs,aK as z,_ as ie,$ as f,A as k,B as p,x as Me,g as K,z as Ae,C as $,j as Re,ap as ke,aL as j,bc as xs,q as Vt,bd as ys,be as it,bf as ws}from"../chunks/VJhVTb1A.js";import{p as me,i as Q,b as nt,c as ks,l as Oe,s as Ue}from"../chunks/zf4GFcxs.js";import{i as Cs,a as Ss,d as le,b as Ke,c as $s,n as Ps,e as Es,s as ne,f as tt}from"../chunks/BeON-0X8.js";import{s as ft}from"../chunks/CiUbu-1F.js";import{i as Rs}from"../chunks/DmjnTBOd.js";import{B as Ns}from"../chunks/U5yjBaoU.js";function fn(t,r){return r}function Ms(t,r,a){for(var n=[],s=r.length,i,o=r.length,l=0;l{if(i){if(i.pending.delete(A),i.done.add(A),i.pending.size===0){var m=t.outrogroups;Qr(t,dn(i.done)),m.delete(i),m.size===0&&(t.outrogroups=null)}}else o-=1},!1)}if(o===0){var d=n.length===0&&a!==null;if(d){var b=a,x=b.parentNode;es(x),x.append(b),t.items.clear()}Qr(t,r,!d)}else i={pending:new Set(r),done:new Set},(t.outrogroups??(t.outrogroups=new Set)).add(i)}function Qr(t,r,a=!0){var n;if(t.pending.size>0){n=new Set;for(const o of t.pending.values())for(const l of o)n.add(t.items.get(l).e)}for(var s=0;s{var h=a();return ta(h)?h:h==null?[]:dn(h)}),m,N=new Map,L=!0;function g(h){(P.effect.f&Qa)===0&&(P.pending.delete(h),P.fallback=x,As(P,m,o,r,n),x!==null&&(m.length===0?(x.f&ht)===0?na(x):(x.f^=ht,lr(x,null,o)):aa(x,()=>{x=null})))}function c(h){P.pending.delete(h)}var w=Jn(()=>{m=e(A);var h=m.length;let y=!1;if(De){var C=ja(o)===Va;C!==(h===0)&&(o=En(),$t(o),zt(!1),y=!0)}for(var _=new Set,M=mt,F=qa(),T=0;Ti(o)):(x=dr(()=>i(Mn??(Mn=Er()))),x.f|=ht)),h>_.size&&Ba(),De&&h>0&&$t(En()),!L)if(N.set(M,_),F){for(const[V,G]of l)_.has(V)||M.skip_effect(G.e);M.oncommit(g),M.ondiscard(c)}else g(M);y&&zt(!0),e(A)}),P={effect:w,items:l,pending:N,outrogroups:null,fallback:x};L=!1,De&&(o=_t)}function ar(t){for(;t!==null&&(t.f&Za)===0;)t=t.next;return t}function As(t,r,a,n,s){var q,I,O,V,G,Z,ae,E,R;var i=(n&Ja)!==0,o=r.length,l=t.items,d=ar(t.effect.first),b,x=null,A,m=[],N=[],L,g,c,w;if(i)for(w=0;w0){var T=(n&ra)!==0&&o===0?a:null;if(i){for(w=0;w{var H,D;if(A!==void 0)for(c of A)(D=(H=c.nodes)==null?void 0:H.a)==null||D.apply()})}function Ls(t,r,a,n,s,i,o,l){var d=(o&Wa)!==0?(o&Xa)===0?Ya(a,!1,!1):Nn(a):null,b=(o&Ga)!==0?Nn(s):null;return{v:d,i:b,e:dr(()=>(i(r,d??a,b??s,l),()=>{t.delete(n)}))}}function lr(t,r,a){if(t.nodes)for(var n=t.nodes.start,s=t.nodes.end,i=r&&(r.f&ht)===0?r.nodes.start:a;n!==null;){var o=oa(n);if(i.before(n),n===s)return;n=o}}function wt(t,r,a){r===null?t.effect.first=a:r.next=a,a===null?t.effect.last=r:a.prev=r}function zr(t,r,a=!1,n=!1,s=!1,i=!1){var o=t,l="";if(a){var d=t;De&&(o=$t(Lt(d)))}J(()=>{var b=ia;if(l===(l=r()??"")){De&&Kt();return}if(a&&!De){b.nodes=null,d.innerHTML=l,l!==""&&Pr(Lt(d),d.lastChild);return}if(b.nodes!==null&&(rs(b.nodes.start,b.nodes.end),b.nodes=null),l!==""){if(De){_t.data;for(var x=Kt(),A=x;x!==null&&(x.nodeType!==ea||x.data!=="");)A=x,x=oa(x);if(x===null)throw ns(),as;Pr(_t,A),o=$t(x);return}var m=n?ca:s?ss:void 0,N=la(n?"svg":s?"math":"template",m);N.innerHTML=l;var L=n||s?N:N.content;if(Pr(Lt(L),L.lastChild),n||s)for(;Lt(L);)o.before(Lt(L));else o.before(L)}})}function He(t,r,a,n,s){var l;De&&Kt();var i=(l=r.$$slots)==null?void 0:l[a],o=!1;i===!0&&(i=r.children,o=!0),i===void 0||i(t,o?()=>n:n)}function Ts(t,r,a,n,s,i){let o=De;De&&Kt();var l=null;De&&_t.nodeType===os&&(l=_t,Kt());var d=De?_t:t,b=new Ns(d,!1);Jn(()=>{const x=r()||null;var A=ca;if(x===null){b.ensure(null,null);return}return b.ensure(x,m=>{if(x){if(l=De?l:la(x,A),Pr(l,l),n){De&&Cs(x)&&l.append(document.createComment(""));var N=De?Lt(l):l.appendChild(Er());De&&(N===null?zt(!1):$t(N)),n(l,N)}ia.nodes.end=l,m.before(l)}De&&$t(m)}),()=>{}},is),ua(()=>{}),o&&(zt(!0),$t(d))}function Fs(t,r,a){Dr(()=>{var n=Mr(()=>r(t,a==null?void 0:a())||{});if(n!=null&&n.destroy)return()=>n.destroy()})}function Ds(t,r){var a=void 0,n;da(()=>{a!==(a=r())&&(n&&(Nr(n),n=null),a&&(n=dr(()=>{Dr(()=>a(t))})))})}function va(t){var r,a,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(r=0;r=0;){var l=o+i;(o===0||An.includes(n[o-1]))&&(l===n.length||An.includes(n[l]))?n=(o===0?"":n.substring(0,o))+n.substring(l+1):o=l}}return n===""?null:n}function Ln(t,r=!1){var a=r?" !important;":";",n="";for(var s of Object.keys(t)){var i=t[s];i!=null&&i!==""&&(n+=" "+s+": "+i+a)}return n}function Br(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function Os(t,r){if(r){var a="",n,s;if(Array.isArray(r)?(n=r[0],s=r[1]):n=r,t){t=String(t).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var i=!1,o=0,l=!1,d=[];n&&d.push(...Object.keys(n).map(Br)),s&&d.push(...Object.keys(s).map(Br));var b=0,x=-1;const g=t.length;for(var A=0;A{Ar(t,t.__value)});r.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),ua(()=>{r.disconnect()})}function Hs(t,r,a=r){var n=new WeakSet,s=!0;fa(t,"change",i=>{var o=i?"[selected]":":checked",l;if(t.multiple)l=[].map.call(t.querySelectorAll(o),ur);else{var d=t.querySelector(o)??t.querySelector("option:not([disabled])");l=d&&ur(d)}a(l),t.__value=l,mt!==null&&n.add(mt)}),Dr(()=>{var i=r();if(t===document.activeElement){var o=mt;if(n.has(o))return}if(Ar(t,i,s),s&&i===void 0){var l=t.querySelector(":checked");l!==null&&(i=ur(l),a(i))}t.__value=i,s=!1}),ga(t)}function ur(t){return"__value"in t?t.__value:t.value}const sr=Symbol("class"),or=Symbol("style"),ha=Symbol("is custom element"),pa=Symbol("is html"),js=gr?"link":"LINK",Vs=gr?"input":"INPUT",Us=gr?"option":"OPTION",Bs=gr?"select":"SELECT",qs=gr?"progress":"PROGRESS";function Xe(t){if(De){var r=!1,a=()=>{if(!r){if(r=!0,t.hasAttribute("value")){var n=t.value;we(t,"value",null),t.value=n}if(t.hasAttribute("checked")){var s=t.checked;we(t,"checked",null),t.checked=s}}};t.__on_r=a,sa(a),gs()}}function vn(t,r){var a=gn(t);a.value===(a.value=r??void 0)||t.value===r&&(r!==0||t.nodeName!==qs)||(t.value=r??"")}function Ks(t,r){r?t.hasAttribute("selected")||t.setAttribute("selected",""):t.removeAttribute("selected")}function we(t,r,a,n){var s=gn(t);De&&(s[r]=t.getAttribute(r),r==="src"||r==="srcset"||r==="href"&&t.nodeName===js)||s[r]!==(s[r]=a)&&(r==="loading"&&(t[ms]=a),a==null?t.removeAttribute(r):typeof a!="string"&&ma(t).includes(r)?t[r]=a:t.setAttribute(r,a))}function Gs(t,r,a,n,s=!1,i=!1){if(De&&s&&t.nodeName===Vs){var o=t,l=o.type==="checkbox"?"defaultChecked":"defaultValue";l in a||Xe(o)}var d=gn(t),b=d[ha],x=!d[pa];let A=De&&b;A&&zt(!1);var m=r||{},N=t.nodeName===Us;for(var L in r)L in a||(a[L]=null);a.class?a.class=dt(a.class):a[sr]&&(a.class=null),a[or]&&(a.style??(a.style=null));var g=ma(t);for(const _ in a){let M=a[_];if(N&&_==="value"&&M==null){t.value=t.__value="",m[_]=M;continue}if(_==="class"){var c=t.namespaceURI==="http://www.w3.org/1999/xhtml";Se(t,c,M,n,r==null?void 0:r[sr],a[sr]),m[_]=M,m[sr]=a[sr];continue}if(_==="style"){Ze(t,M,r==null?void 0:r[or],a[or]),m[_]=M,m[or]=a[or];continue}var w=m[_];if(!(M===w&&!(M===void 0&&t.hasAttribute(_)))){m[_]=M;var P=_[0]+_[1];if(P!=="$$")if(P==="on"){const F={},T="$$"+_;let q=_.slice(2);var h=Es(q);if(Ss(q)&&(q=q.slice(0,-7),F.capture=!0),!h&&w){if(M!=null)continue;t.removeEventListener(q,m[T],F),m[T]=null}if(h)le(q,t,M),Ke([q]);else if(M!=null){let I=function(O){m[_].call(this,O)};m[T]=$s(q,t,I,F)}}else if(_==="style")we(t,_,M);else if(_==="autofocus")fs(t,!!M);else if(!b&&(_==="__value"||_==="value"&&M!=null))t.value=t.__value=M;else if(_==="selected"&&N)Ks(t,M);else{var y=_;x||(y=Ps(y));var C=y==="defaultValue"||y==="defaultChecked";if(M==null&&!b&&!C)if(d[_]=null,y==="value"||y==="checked"){let F=t;const T=r===void 0;if(y==="value"){let q=F.defaultValue;F.removeAttribute(y),F.defaultValue=q,F.value=F.__value=T?q:null}else{let q=F.defaultChecked;F.removeAttribute(y),F.defaultChecked=q,F.checked=T?q:!1}}else t.removeAttribute(_);else C||g.includes(y)&&(b||typeof M!="string")?(t[y]=M,y in d&&(d[y]=vs)):typeof M!="function"&&we(t,y,M)}}}return A&&zt(!0),m}function Tn(t,r,a=[],n=[],s=[],i,o=!1,l=!1){us(s,a,n,d=>{var b=void 0,x={},A=t.nodeName===Bs,m=!1;if(da(()=>{var L=r(...d.map(e)),g=Gs(t,b,L,i,o,l);m&&A&&"value"in L&&Ar(t,L.value);for(let w of Object.getOwnPropertySymbols(x))L[w]||Nr(x[w]);for(let w of Object.getOwnPropertySymbols(L)){var c=L[w];w.description===ds&&(!b||c!==b[w])&&(x[w]&&Nr(x[w]),x[w]=dr(()=>Ds(t,()=>c))),g[w]=c}b=g}),A){var N=t;Dr(()=>{Ar(N,b.value,!0),ga(N)})}m=!0})}function gn(t){return t.__attributes??(t.__attributes={[ha]:t.nodeName.includes("-"),[pa]:t.namespaceURI===hs})}var Fn=new Map;function ma(t){var r=t.getAttribute("is")||t.nodeName,a=Fn.get(r);if(a)return a;Fn.set(r,a=[]);for(var n,s=t,i=Element.prototype;i!==s;){n=_s(s);for(var o in n)n[o].set&&a.push(o);s=ps(s)}return a}function et(t,r,a=r){var n=new WeakSet;fa(t,"input",async s=>{var i=s?t.defaultValue:t.value;if(i=Kr(t)?Gr(i):i,a(i),mt!==null&&n.add(mt),await Pt(),i!==(i=r())){var o=t.selectionStart,l=t.selectionEnd,d=t.value.length;if(t.value=i??"",l!==null){var b=t.value.length;o===l&&l===d&&b>d?(t.selectionStart=b,t.selectionEnd=b):(t.selectionStart=o,t.selectionEnd=Math.min(l,b))}}}),(De&&t.defaultValue!==t.value||Mr(r)==null&&t.value)&&(a(Kr(t)?Gr(t.value):t.value),mt!==null&&n.add(mt)),bs(()=>{var s=r();if(t===document.activeElement){var i=mt;if(n.has(i))return}Kr(t)&&s===Gr(t.value)||t.type==="date"&&!s&&!t.value||s!==t.value&&(t.value=s??"")})}function Kr(t){var r=t.type;return r==="number"||r==="range"}function Gr(t){return t===""?null:+t}let xt=z(ie({type:"none",props:{},resolve:null}));function Ws(){return e(xt)}function ot(t=void 0){const{resolve:r}=e(xt);f(xt,{type:"none",props:{},resolve:null},!0),r==null||r(t)}function Xs(t){return new Promise(r=>{f(xt,{type:"run",props:{cases:t},resolve:r},!0)})}function Ys(t){return new Promise(r=>{f(xt,{type:"restart",props:{cases:t},resolve:r},!0)})}function Qs(t){return new Promise(r=>{f(xt,{type:"clean",props:{cases:t},resolve:r},!0)})}function We(t,r="Alert"){return new Promise(a=>{f(xt,{type:"alert",props:{title:r,message:t},resolve:()=>a()},!0)})}function Dn(t,r="Confirm",a="OK",n="primary"){return new Promise(s=>{f(xt,{type:"confirm",props:{title:r,message:t,confirmLabel:a,confirmVariant:n},resolve:s},!0)})}function hn(t,r="",a="Input",n="",s=!1){return new Promise(i=>{f(xt,{type:"prompt",props:{title:a,message:t,value:r,placeholder:n,multiline:s},resolve:i},!0)})}var Zs=S('
      ');function Jt(t,r){function a(i){return document.body.appendChild(i),{destroy(){i.remove()}}}var n=Zs(),s=k(n);ft(s,()=>r.children),p(n),Fs(n,i=>a==null?void 0:a(i)),u(t,n)}var Js=S('
      '),eo=S('
      ');function hr(t,r){Me(r,!0);const a=L=>{var g=eo(),c=k(g),w=k(c),P=k(w),h=k(P,!0);p(P);var y=$(P,2);{var C=T=>{var q=Js(),I=k(q,!0);p(q),J(()=>ne(I,r.subtitle)),u(T,q)};Q(y,T=>{r.subtitle&&T(C)})}p(w);var _=$(w,2);ft(_,()=>r.children);var M=$(_,2),F=k(M);ft(F,()=>r.footer),p(M),p(c),p(g),J(()=>{Se(c,1,`w-[min(${n()??""},96vw)] bg-white border border-border rounded-[10px] p-4.5`),we(c,"aria-labelledby",r.titleId),we(P,"id",r.titleId),ne(h,r.title)}),le("keydown",g,o),le("mousedown",g,d),le("click",g,b),u(L,g)};let n=me(r,"maxWidth",3,"520px"),s=me(r,"portal",3,!1);function i(){r.onCancel?r.onCancel():ot(null)}function o(L){L.key==="Escape"?i():L.key==="Enter"&&r.onConfirm&&r.onConfirm()}let l=!1;function d(L){l=L.target.dataset.backdrop!==void 0}function b(L){const g=L.target.dataset.backdrop!==void 0;l&&g&&i(),l=!1}var x=be(),A=K(x);{var m=L=>{Jt(L,{children:(g,c)=>{a(g)}})},N=L=>{a(L)};Q(A,L=>{s()?L(m):L(N,-1)})}u(t,x),Ae()}Ke(["keydown","mousedown","click"]);var to=S("");function $e(t,r){let a=me(r,"variant",3,"primary"),n=me(r,"size",3,"default"),s=me(r,"disabled",3,!1);const i={default:"h-[34px] rounded-md px-3.5 leading-none text-[13px] tracking-wide",sm:"h-[30px] rounded-md px-2.5 leading-none text-xs"},o={primary:"bg-edf-bleu-moyen text-white border-none hover:bg-[rgb(12,72,170)]",secondary:"bg-white text-ink border border-border hover:bg-edf-gris-clair",run:"bg-edf-vert-fonce text-white border-none hover:bg-[rgb(38,98,12)]",warning:"bg-edf-orange-moyen text-white border-none hover:bg-[rgb(230,118,20)]",danger:"bg-edf-orange-fonce text-white border-none hover:bg-[rgb(180,56,8)]"};var l=to(),d=k(l);ft(d,()=>r.children),p(l),J(()=>{Se(l,1,`inline-flex items-center justify-center gap-1.5 font-bold cursor-pointer transition-colors duration-150 disabled:opacity-40 disabled:pointer-events-none ${i[n()]??""} ${o[a()]??""}`),l.disabled=s()}),le("click",l,function(...b){var x;(x=r.onclick)==null||x.apply(this,b)}),u(t,l)}Ke(["click"]);var ro=S(" ",1),no=S(''),ao=S(''),so=S('
      '),oo=S('

      ',1);function io(t,r){Me(r,!0);let a=me(r,"confirmLabel",3,"OK"),n=me(r,"confirmVariant",3,"primary"),s=me(r,"value",3,""),i=me(r,"placeholder",3,""),o=me(r,"multiline",3,!1);const l=s();let d=z(ie(l)),b=z(void 0),x=z(void 0);Re(()=>{var N;r.mode==="prompt"&&e(b)?(e(b).focus(),"select"in e(b)&&e(b).select()):e(x)&&((N=e(x).querySelector("button"))==null||N.focus())});function A(){r.mode==="prompt"?ot(e(d)):r.mode==="confirm"?ot(!0):ot()}function m(){r.mode==="confirm"?ot(!1):r.mode==="prompt"?ot(null):ot()}{const N=g=>{var c=ro(),w=K(c);{var P=C=>{$e(C,{variant:"secondary",onclick:m,children:(_,M)=>{ke();var F=Ve("Cancel");u(_,F)},$$slots:{default:!0}})};Q(w,C=>{r.mode!=="alert"&&C(P)})}var h=$(w,2),y=k(h);$e(y,{get variant(){return n()},onclick:A,children:(C,_)=>{ke();var M=Ve();J(()=>ne(M,a())),u(C,M)},$$slots:{default:!0}}),p(h),nt(h,C=>f(x,C),()=>e(x)),u(g,c)};let L=j(()=>o()?void 0:A);hr(t,{get title(){return r.title},titleId:"app-dialog-title",get onConfirm(){return e(L)},onCancel:m,footer:N,children:(g,c)=>{var w=oo(),P=K(w),h=k(P,!0);p(P);var y=$(P,2);{var C=_=>{var M=so(),F=k(M);{var T=I=>{var O=no();xs(O),nt(O,V=>f(b,V),()=>e(b)),J(()=>we(O,"placeholder",i())),et(O,()=>e(d),V=>f(d,V)),u(I,O)},q=I=>{var O=ao();Xe(O),nt(O,V=>f(b,V),()=>e(b)),J(()=>we(O,"placeholder",i())),et(O,()=>e(d),V=>f(d,V)),u(I,O)};Q(F,I=>{o()?I(T):I(q,-1)})}p(M),u(_,M)};Q(y,_=>{r.mode==="prompt"&&_(C)})}J(()=>ne(h,r.message)),u(g,w)},$$slots:{footer:!0,default:!0}})}Ae()}var lo=S('');function Ne(t,r){var a=lo(),n=k(a),s=$(n);ft(s,()=>r.children),p(a),J(()=>ne(n,`${r.text??""} `)),u(t,a)}function Ct(t,r){const a=localStorage.getItem(t);if(a===null)return r;const n=Number(a);return Number.isFinite(n)?n:r}function St(t,r){Number.isFinite(r)&&localStorage.setItem(t,String(r))}function co(t,r){return localStorage.getItem(t)??r}function uo(){return{n:Ct("csauto_run_n",1),nt:Ct("csauto_run_nt",1),maxParallel:Ct("csauto_run_max_parallel",0)||null}}function fo(t){St("csauto_run_n",t.n),St("csauto_run_nt",t.nt),t.maxParallel&&St("csauto_run_max_parallel",t.maxParallel)}function vo(){return{n:Ct("csauto_restart_n",1),nt:Ct("csauto_restart_nt",1),maxParallel:Ct("csauto_restart_max_parallel",0)||null,mode:co("csauto_restart_mode","iterations"),value:Ct("csauto_restart_value",100)}}function go(t){St("csauto_restart_n",t.n),St("csauto_restart_nt",t.nt),t.maxParallel&&St("csauto_restart_max_parallel",t.maxParallel),localStorage.setItem("csauto_restart_mode",t.mode),St("csauto_restart_value",t.value)}function ho(){return{keepLast:Ct("csauto_clean_keep_last",1)}}function po(t){St("csauto_clean_keep_last",t.keepLast)}var mo=S(" ",1),_o=S(''),bo=S(''),xo=S(''),yo=S('
      ');function wo(t,r){Me(r,!0);const a=uo(),n=a.maxParallel??(r.cases.length>1?r.cases.length:0);let s=z(ie(a.n)),i=z(ie(a.nt)),o=z(ie(n));async function l(){if(!Number.isFinite(e(s))||e(s)<=0){await We("MPI ranks must be an integer > 0.","Invalid value");return}if(!Number.isFinite(e(i))||e(i)<=0){await We("Threads must be an integer > 0.","Invalid value");return}if(e(o)&&(!Number.isFinite(e(o))||e(o)<=0)){await We("Max parallel must be empty or > 0.","Invalid value");return}const d={n:e(s),nt:e(i),maxParallel:e(o)||null};fo(d),ot(d)}{const d=A=>{var m=mo(),N=K(m);$e(N,{variant:"secondary",onclick:()=>ot(null),children:(g,c)=>{ke();var w=Ve("Cancel");u(g,w)},$$slots:{default:!0}});var L=$(N,2);$e(L,{variant:"run",onclick:l,children:(g,c)=>{ke();var w=Ve("Run");u(g,w)},$$slots:{default:!0}}),u(A,m)};let b=j(()=>r.cases.length),x=j(()=>r.cases.length>1?"s":"");hr(t,{title:"Run Cases",titleId:"run-dialog-title",get subtitle(){return`${e(b)??""} case${e(x)??""} selected`},onConfirm:l,footer:d,children:(A,m)=>{var N=yo(),L=k(N);Ne(L,{text:"MPI Ranks (n)",children:(w,P)=>{var h=_o();Xe(h),et(h,()=>e(s),y=>f(s,y)),u(w,h)}});var g=$(L,2);Ne(g,{text:"OMP Threads (nt)",children:(w,P)=>{var h=bo();Xe(h),et(h,()=>e(i),y=>f(i,y)),u(w,h)}});var c=$(g,2);Ne(c,{text:"Max Parallel",children:(w,P)=>{var h=xo();Xe(h),et(h,()=>e(o),y=>f(o,y)),u(w,h)}}),p(N),u(A,N)},$$slots:{footer:!0,default:!0}})}Ae()}var ko=S(" ",1),Co=S(''),So=S(''),$o=S(''),Po=S(""),Eo=S(''),Ro=S('
      ',1);function No(t,r){Me(r,!0);const a=vo(),n=a.maxParallel??(r.cases.length>1?r.cases.length:0);let s=z(ie(a.n)),i=z(ie(a.nt)),o=z(ie(n)),l=z(ie(a.mode)),d=z(ie(a.value)),b=j(()=>e(l)==="iterations"?"Additional iterations":"Additional physical time"),x=j(()=>e(l)==="iterations"?"1":"any"),A=j(()=>e(l)==="iterations"?"1":"0");async function m(){if(!Number.isFinite(e(s))||e(s)<=0){await We("MPI ranks must be an integer > 0.","Invalid value");return}if(!Number.isFinite(e(i))||e(i)<=0){await We("Threads must be an integer > 0.","Invalid value");return}if(e(o)&&(!Number.isFinite(e(o))||e(o)<=0)){await We("Max parallel must be empty or > 0.","Invalid value");return}if(!Number.isFinite(e(d))||e(d)<=0){await We("Value must be > 0.","Invalid value");return}if(e(l)==="iterations"&&!Number.isInteger(e(d))){await We("Iterations must be an integer.","Invalid value");return}const N={n:e(s),nt:e(i),maxParallel:e(o)||null,restartMode:e(l),restartValue:e(d)};go({n:e(s),nt:e(i),maxParallel:e(o)||null,mode:e(l),value:e(d)}),ot(N)}{const N=c=>{var w=ko(),P=K(w);$e(P,{variant:"secondary",onclick:()=>ot(null),children:(y,C)=>{ke();var _=Ve("Cancel");u(y,_)},$$slots:{default:!0}});var h=$(P,2);$e(h,{variant:"warning",onclick:m,children:(y,C)=>{ke();var _=Ve("Restart");u(y,_)},$$slots:{default:!0}}),u(c,w)};let L=j(()=>r.cases.length),g=j(()=>r.cases.length>1?"s":"");hr(t,{title:"Restart Cases",titleId:"restart-dialog-title",get subtitle(){return`${e(L)??""} case${e(g)??""} selected`},onConfirm:m,footer:N,children:(c,w)=>{var P=Ro(),h=K(P),y=k(h);Ne(y,{text:"MPI Ranks (n)",children:(q,I)=>{var O=Co();Xe(O),et(O,()=>e(s),V=>f(s,V)),u(q,O)}});var C=$(y,2);Ne(C,{text:"OMP Threads (nt)",children:(q,I)=>{var O=So();Xe(O),et(O,()=>e(i),V=>f(i,V)),u(q,O)}});var _=$(C,2);Ne(_,{text:"Max Parallel",children:(q,I)=>{var O=$o();Xe(O),et(O,()=>e(o),V=>f(o,V)),u(q,O)}}),p(h);var M=$(h,2),F=k(M);Ne(F,{text:"Stop criterion",children:(q,I)=>{var O=Po(),V=k(O);V.value=V.__value="iterations";var G=$(V);G.value=G.__value="physical_time",p(O),Hs(O,()=>e(l),Z=>f(l,Z)),u(q,O)}});var T=$(F,2);Ne(T,{get text(){return e(b)},children:(q,I)=>{var O=Eo();Xe(O),J(()=>{we(O,"min",e(A)),we(O,"step",e(x))}),et(O,()=>e(d),V=>f(d,V)),u(q,O)}}),p(M),u(c,P)},$$slots:{footer:!0,default:!0}})}Ae()}function Te(t,r){let a=me(r,"size",3,14);var n=be(),s=K(n);ks(s,()=>r.icon,(i,o)=>{o(i,{get size(){return a()},class:"icon"})}),u(t,n)}/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const Mo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const Ao=t=>{for(const r in t)if(r.startsWith("aria-")||r==="role"||r==="title")return!0;return!1};/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const zn=(...t)=>t.filter((r,a,n)=>!!r&&r.trim()!==""&&n.indexOf(r)===a).join(" ").trim();var Lo=Ot("");function Be(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]),n=Oe(a,["name","color","size","strokeWidth","absoluteStrokeWidth","iconNode"]);Me(r,!1);let s=me(r,"name",8,void 0),i=me(r,"color",8,"currentColor"),o=me(r,"size",8,24),l=me(r,"strokeWidth",8,2),d=me(r,"absoluteStrokeWidth",8,!1),b=me(r,"iconNode",24,()=>[]);Rs();var x=Lo();Tn(x,(N,L,g)=>({...Mo,...N,...n,width:o(),height:o(),stroke:i(),"stroke-width":L,class:g}),[()=>Ao(n)?void 0:{"aria-hidden":"true"},()=>(Vt(d()),Vt(l()),Vt(o()),Mr(()=>d()?Number(l())*24/Number(o()):l())),()=>(Vt(zn),Vt(s()),Vt(a),Mr(()=>zn("lucide-icon","lucide",s()?`lucide-${s()}`:"",a.class)))]);var A=k(x);Ye(A,1,b,fn,(N,L)=>{var g=j(()=>ys(e(L),2));let c=()=>e(g)[0],w=()=>e(g)[1];var P=be(),h=K(P);Ts(h,c,!0,(y,C)=>{Tn(y,()=>({...w()}))}),u(N,P)});var m=$(A);He(m,r,"default",{}),p(x),u(t,x),Ae()}function To(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M12 5v14"}],["path",{d:"m19 12-7 7-7-7"}]];Be(t,Ue({name:"arrow-down"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Fo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M8 3 4 7l4 4"}],["path",{d:"M4 7h16"}],["path",{d:"m16 21 4-4-4-4"}],["path",{d:"M20 17H4"}]];Be(t,Ue({name:"arrow-left-right"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Do(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"m5 12 7-7 7 7"}],["path",{d:"M12 19V5"}]];Be(t,Ue({name:"arrow-up"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function pn(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"m6 9 6 6 6-6"}]];Be(t,Ue({name:"chevron-down"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function zo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"m9 18 6-6-6-6"}]];Be(t,Ue({name:"chevron-right"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Io(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["circle",{cx:"12",cy:"12",r:"10"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1"}]];Be(t,Ue({name:"circle-stop"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Oo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m15 9-6 6"}],["path",{d:"m9 9 6 6"}]];Be(t,Ue({name:"circle-x"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function pr(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]];Be(t,Ue({name:"download"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Ho(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97"}]];Be(t,Ue({name:"droplets"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function jo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["circle",{cx:"12",cy:"12",r:"1"}],["circle",{cx:"19",cy:"12",r:"1"}],["circle",{cx:"5",cy:"12",r:"1"}]];Be(t,Ue({name:"ellipsis"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Vo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M15 3h6v6"}],["path",{d:"M10 14 21 3"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}]];Be(t,Ue({name:"external-link"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Uo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z"}],["path",{d:"M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z"}]];Be(t,Ue({name:"fast-forward"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Bo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1"}]];Be(t,Ue({name:"pause"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function qo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M13 21h8"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}]];Be(t,Ue({name:"pen-line"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Ko(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}],["path",{d:"m15 5 4 4"}]];Be(t,Ue({name:"pencil"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function _a(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"}]];Be(t,Ue({name:"play"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Go(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];Be(t,Ue({name:"plus"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function er(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"}],["path",{d:"M8 16H3v5"}]];Be(t,Ue({name:"refresh-cw"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Wo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}],["path",{d:"M3 3v5h5"}]];Be(t,Ue({name:"rotate-ccw"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Xo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7"}]];Be(t,Ue({name:"save"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Yo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["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"}],["circle",{cx:"12",cy:"12",r:"3"}]];Be(t,Ue({name:"settings"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}function Qo(t,r){const a=Oe(r,["children","$$slots","$$events","$$legacy"]);/** + * @license lucide-svelte v1.0.1 - ISC + * + * ISC License + * + * Copyright (c) 2026 Lucide Icons and Contributors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * --- + * + * The following Lucide icons are derived from the Feather project: + * + * airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + * + * The MIT License (MIT) (for the icons listed above) + * + * Copyright (c) 2013-present Cole Bemis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */const n=[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]];Be(t,Ue({name:"trash-2"},()=>a,{get iconNode(){return n},children:(s,i)=>{var o=be(),l=K(o);He(l,r,"default",{}),u(s,o)},$$slots:{default:!0}}))}var Zo=S('
    • '),Jo=S('
        '),ei=S('
        ',1);function lt(t,r){Me(r,!0);let a=me(r,"value",3,""),n=me(r,"placeholder",3,"Select..."),s=me(r,"class",3,""),i=me(r,"buttonClass",3,""),o=z(!1),l=z(void 0),d=z(void 0),b=z(""),x=j(()=>{var T;return((T=r.options.find(q=>q.value===a()))==null?void 0:T.label)??n()});function A(T){var q;f(o,!1),(q=r.onchange)==null||q.call(r,T)}function m(){if(!e(l)||!e(d))return;const T=e(l).getBoundingClientRect(),q=e(d).offsetHeight,I=4,O=window.innerHeight-T.bottom-I,G=OO?T.top-I-q:T.bottom+I,Z=Math.min(T.left,window.innerWidth-T.width);f(b,`position:fixed; top:${G}px; left:${Z}px; width:${T.width}px; z-index:9999;`)}async function N(){f(o,!e(o)),e(o)&&(await Pt(),m())}function L(T){T.key==="Escape"&&f(o,!1)}function g(T){e(o)&&e(l)&&!e(l).contains(T.target)&&e(d)&&!e(d).contains(T.target)&&f(o,!1)}var c=ei();tt("mousedown",it,g),tt("keydown",it,L),tt("scroll",it,()=>{e(o)&&f(o,!1)});var w=K(c),P=k(w),h=k(P),y=k(h,!0);p(h);var C=$(h,2),_=k(C);Te(_,{get icon(){return pn},size:14}),p(C),p(P),nt(P,T=>f(l,T),()=>e(l)),p(w);var M=$(w,2);{var F=T=>{Jt(T,{children:(q,I)=>{var O=Jo();Ye(O,21,()=>r.options,V=>V.value,(V,G)=>{var Z=Zo();we(Z,"tabindex",0);var ae=k(Z,!0);p(Z),J(()=>{we(Z,"aria-selected",e(G).value===a()),Se(Z,1,`px-2.5 py-1.5 text-[13px] cursor-pointer transition-colors duration-100 + ${e(G).value===a()?"text-edf-bleu-fonce font-bold bg-[rgba(16,87,200,0.06)]":"text-ink hover:bg-edf-gris-clair"}`),ne(ae,e(G).label)}),le("mousedown",Z,E=>{E.stopPropagation(),A(e(G).value)}),u(V,Z)}),p(O),nt(O,V=>f(d,V),()=>e(d)),J(()=>Ze(O,e(b))),u(q,O)}})};Q(M,T=>{e(o)&&T(F)})}J(()=>{Se(w,1,`relative inline-flex ${s()??""}`),Se(P,1,dt(i()||"flex items-center justify-between gap-1.5 w-full h-[30px] cursor-pointer bg-white border border-border rounded-md text-[13px] text-ink font-normal pl-2.5 pr-2 transition-colors duration-150 hover:bg-edf-gris-clair focus:outline-none focus:border-edf-bleu-moyen")),we(P,"aria-expanded",e(o)),ne(y,e(x)),Se(C,1,`text-muted shrink-0 transition-transform duration-150 ${e(o)?"rotate-180":""}`)}),le("mousedown",P,T=>{T.stopPropagation(),N()}),u(t,c),Ae()}Ke(["mousedown"]);var ti=Ot(''),ri=S('
        '),ni=S('
        '),ai=S('
        ',1);function Gt(t,r){Me(r,!0);let a=me(r,"selected",19,()=>[]),n=me(r,"placeholder",3,"Select..."),s=me(r,"class",3,""),i=z(!1),o=z(void 0),l=z(void 0),d=z(""),b=j(()=>new Set(a())),x=j(()=>a().length===0?n():a().length===r.options.length?`All (${r.options.length})`:a().length<=2?a().map(I=>{var O;return((O=r.options.find(V=>V.value===I))==null?void 0:O.label)??I}).join(", "):`${a().length} selected`);function A(I){var V;const O=new Set(e(b));O.has(I)?O.delete(I):O.add(I),(V=r.onchange)==null||V.call(r,[...O])}function m(){var I;(I=r.onchange)==null||I.call(r,r.options.map(O=>O.value))}function N(){var I;(I=r.onchange)==null||I.call(r,[])}function L(){if(!e(o)||!e(l))return;const I=e(o).getBoundingClientRect(),O=e(l).offsetHeight,V=4,G=window.innerHeight-I.bottom-V,ae=GG?I.top-V-O:I.bottom+V,E=Math.min(I.left,window.innerWidth-I.width);f(d,`position:fixed; top:${ae}px; left:${E}px; min-width:${I.width}px; z-index:9999;`)}async function g(){f(i,!e(i)),e(i)&&(await Pt(),L())}function c(I){e(i)&&e(o)&&!e(o).contains(I.target)&&e(l)&&!e(l).contains(I.target)&&f(i,!1)}function w(I){I.key==="Escape"&&f(i,!1)}var P=ai();tt("mousedown",it,c),tt("keydown",it,w),tt("scroll",it,()=>{e(i)&&f(i,!1)});var h=K(P),y=k(h),C=k(y),_=k(C,!0);p(C);var M=$(C,2),F=k(M);Te(F,{get icon(){return pn},size:14}),p(M),p(y),nt(y,I=>f(o,I),()=>e(o)),p(h);var T=$(h,2);{var q=I=>{Jt(I,{children:(O,V)=>{var G=ni(),Z=k(G),ae=k(Z),E=$(ae,2);p(Z);var R=$(Z,2);Ye(R,17,()=>r.options,H=>H.value,(H,D)=>{var v=ri(),B=k(v),X=k(B);{var ue=se=>{var de=ti();u(se,de)},fe=j(()=>e(b).has(e(D).value));Q(X,se=>{e(fe)&&se(ue)})}p(B);var W=$(B,2),te=k(W,!0);p(W),p(v),J(se=>{Se(B,1,`inline-flex items-center justify-center shrink-0 w-[14px] h-[14px] rounded border-2 transition-colors duration-100 + ${se??""}`),ne(te,e(D).label)},[()=>e(b).has(e(D).value)?"bg-edf-bleu-moyen border-edf-bleu-moyen text-white":"bg-white border-edf-gris-moyen"]),le("mousedown",v,se=>{se.stopPropagation(),A(e(D).value)}),u(H,v)}),p(G),nt(G,H=>f(l,H),()=>e(l)),J(()=>Ze(G,e(d))),le("mousedown",ae,H=>{H.stopPropagation(),m()}),le("mousedown",E,H=>{H.stopPropagation(),N()}),u(O,G)}})};Q(T,I=>{e(i)&&I(q)})}J(()=>{Se(h,1,`relative inline-flex ${s()??""}`),we(y,"aria-expanded",e(i)),ne(_,e(x)),Se(M,1,`text-muted shrink-0 transition-transform duration-150 ${e(i)?"rotate-180":""}`)}),le("mousedown",y,I=>{I.stopPropagation(),g()}),u(t,P),Ae()}Ke(["mousedown"]);const Zr="csauto_token";let ba=z(ie(localStorage.getItem(Zr)??""));function xa(){return e(ba)}function ya(t){f(ba,t,!0),t?localStorage.setItem(Zr,t):localStorage.removeItem(Zr)}let wr=null;async function mn(t,r={}){const a=new Headers(r.headers),n=xa();n&&a.set("X-CSAUTO-TOKEN",n);const s=await fetch(t,{...r,headers:a});if(s.status===401){wr||(wr=hn("API token required:",n,"Authentication"));const i=await wr;return wr=null,i===null?s:(ya(i),a.set("X-CSAUTO-TOKEN",i),fetch(t,{...r,headers:a}))}return s}async function ct(t){const r=await mn(t);if(!r.ok)throw new Error(`GET ${t} failed: ${r.status}`);return r.json()}async function Ir(t){const r=await mn(t);if(!r.ok)throw new Error(`GET ${t} failed: ${r.status}`);return r.text()}async function Rt(t,r){const a=await mn(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!a.ok){const n=await a.text().catch(()=>a.statusText);throw new Error(`POST ${t} failed: ${a.status} — ${n}`)}return a.json()}function Or(t){return t.map(r=>`case=${encodeURIComponent(r)}`).join("&")}function si(t=!1){return ct(`/api/status${t?"?log=1":""}`)}function In(t){return ct(`/api/perf?${Or(t)}`)}function oi(){return ct("/api/app_config")}function ii(t){return ct(`/api/residual_columns?${Or(t)}`).then(r=>r.columns??[])}function li(t,r,a={}){const n=new URLSearchParams;return t.forEach(s=>n.append("case",s)),n.set("columns",r.join(",")),a.width&&n.set("width",String(a.width)),a.height&&n.set("height",String(a.height)),a.xMin!==void 0&&n.set("x_min",String(a.xMin)),a.includeHistory&&n.set("include_history","true"),Ir(`/api/residuals_svg?${n}`)}function wa(t){return ct(`/api/restart_origin?${Or(t)}`)}function ci(t){var a;const r=new URLSearchParams;return t.cases.forEach(n=>r.append("case",n)),(a=t.files)!=null&&a.length&&r.set("files",t.files.join(",")),t.maxHits&&r.set("max_hits",String(t.maxHits)),t.context!==void 0&&r.set("context",String(t.context)),t.sev&&r.set("sev",t.sev),t.q&&r.set("q",t.q),ct(`/api/recent_errors?${r}`)}function ui(t,r,a){const n=new URLSearchParams({case:t,file:r,n:String(a)});return Ir(`/api/tail?${n}`)}function di(t){return ct(`/api/resu_files?case=${encodeURIComponent(t)}`).then(r=>r.files??[])}function fi(t){return ct(`/api/resu_dirs?${Or(t)}`).then(r=>r.dirs??[])}function Jr(t,r){const a=new URLSearchParams({scope:r});return t.forEach(n=>a.append("case",n)),ct(`/api/probes?${a}`).then(n=>n.files??[])}function vi(t,r){const a=new URLSearchParams;return t.forEach(n=>a.append("case",n)),r.forEach(n=>a.append("probe",n)),ct(`/api/probe_columns?${a}`).then(n=>n.columns??[])}function gi(t,r,a){const n=new URLSearchParams({case:t,probe:r});return a.forEach(s=>n.append("column",s)),ct(`/api/probe_position?${n}`)}function hi(t){const r=new URLSearchParams;return t.cases.forEach(a=>r.append("case",a)),t.probes.forEach(a=>r.append("probe",a)),r.set("columns",t.columns.join(",")),t.axis&&r.set("axis",t.axis),t.xMin!==void 0&&r.set("x_min",String(t.xMin)),t.timeMin!==void 0&&r.set("time_min",String(t.timeMin)),r.set("include_history","true"),t.width&&r.set("width",String(t.width)),t.height&&r.set("height",String(t.height)),Ir(`/api/probe_svg?${r}`)}function pi(t){const r=new URLSearchParams;return t.cases.forEach(a=>r.append("case",a)),t.base&&r.set("base",t.base),t.kind&&r.set("kind",t.kind),t.filter&&r.set("filter",t.filter),Ir(`/api/compare_runs?${r}`)}function On(t){return Rt("/api/run_case",{cases:t.cases,n:t.n,nt:t.nt,max_parallel:t.maxParallel??void 0,restart:t.restart??!1,restart_mode:t.restartMode??"",restart_value:t.restartValue??void 0}).then(()=>{})}function mi(t){return Rt("/api/kill_case",{cases:t}).then(()=>{})}function kr(t){return Rt("/api/control_case",{cases:t.cases,action:t.action,value:t.value??void 0}).then(()=>{})}function _i(t){return Rt("/api/cleanup_cases",{cases:t.cases,keep_last:t.keepLast??1,prune_resu:t.pruneResu??!0,keep_resu:t.keepResu??[],delete_resu:t.deleteResu??[],max_log_mb:t.maxLogMb??50,clear_cid:!0,clear_pyc:!1})}function bi(t,r){return Rt("/api/case_note",{case:t,note:r}).then(()=>{})}function xi(t,r){return Rt("/api/case_convergence",{case:t,convergence:r}).then(()=>{})}function yi(t){return Rt("/api/open_gui",{case:t}).then(()=>{})}function wi(){return ct("/api/settings/telemetry")}function ki(t){return Rt("/api/settings/telemetry",{enabled:t})}var Ci=S(" ",1),Si=S(''),$i=S('Loading...'),Pi=S('No folders found'),Ei=S('
        '),Ri=S('
        ',1);function Ni(t,r){Me(r,!0);const a=ho();let n=z("keep_latest"),s=z(ie(a.keepLast)),i=z(ie([])),o=z(ie([])),l=z(!0),d=j(()=>e(n)==="keep_folder"||e(n)==="delete_folder");const b=[{value:"keep_latest",label:"Keep latest N"},{value:"delete_all",label:"Delete all RESU"},{value:"keep_folder",label:"Keep specific folders"},{value:"delete_folder",label:"Delete specific folders"}];let x=j(()=>e(i).map(m=>({value:m,label:m})));Zn(async()=>{try{f(i,await fi(r.cases),!0)}catch{f(i,[],!0)}f(l,!1)});async function A(){if(e(d)&&e(o).length===0){await We("Please select at least one RESU folder.","Missing selection");return}const m={action:e(n)};e(n)==="keep_latest"?(m.keepLast=e(s),po({keepLast:e(s)})):e(n)==="delete_all"?m.keepLast=0:e(n)==="keep_folder"?m.keepResu=e(o):e(n)==="delete_folder"&&(m.deleteResu=e(o)),ot(m)}{const m=g=>{var c=Ci(),w=K(c);$e(w,{variant:"secondary",onclick:()=>ot(null),children:(h,y)=>{ke();var C=Ve("Cancel");u(h,C)},$$slots:{default:!0}});var P=$(w,2);$e(P,{variant:"primary",onclick:A,children:(h,y)=>{ke();var C=Ve("Clean");u(h,C)},$$slots:{default:!0}}),u(g,c)};let N=j(()=>r.cases.length),L=j(()=>r.cases.length>1?"s":"");hr(t,{title:"Cleanup Cases",titleId:"clean-dialog-title",get subtitle(){return`${e(N)??""} case${e(L)??""} selected`},footer:m,children:(g,c)=>{var w=Ri(),P=K(w),h=k(P);Ne(h,{text:"Action",children:(F,T)=>{lt(F,{class:"w-[200px]",get options(){return b},get value(){return e(n)},onchange:q=>f(n,q,!0)})}});var y=$(h,2);{var C=F=>{Ne(F,{text:"Keep last",children:(T,q)=>{var I=Si();Xe(I),et(I,()=>e(s),O=>f(s,O)),u(T,I)}})};Q(y,F=>{e(n)==="keep_latest"&&F(C)})}p(P);var _=$(P,2);{var M=F=>{var T=Ei(),q=k(T);Ne(q,{text:"RESU folders",children:(I,O)=>{var V=be(),G=K(V);{var Z=R=>{var H=$i();u(R,H)},ae=R=>{var H=Pi();u(R,H)},E=R=>{Gt(R,{class:"w-full",get options(){return e(x)},get selected(){return e(o)},onchange:H=>f(o,H,!0),placeholder:"Select folders..."})};Q(G,R=>{e(l)?R(Z):e(i).length===0?R(ae,1):R(E,-1)})}u(I,V)}}),p(T),u(F,T)};Q(_,F=>{e(d)&&F(M)})}u(g,w)},$$slots:{footer:!0,default:!0}})}Ae()}function Mi(t,r){Me(r,!0);let a=j(Ws);var n=be(),s=K(n);{var i=b=>{wo(b,{get cases(){return e(a).props.cases}})},o=b=>{No(b,{get cases(){return e(a).props.cases}})},l=b=>{Ni(b,{get cases(){return e(a).props.cases}})},d=b=>{io(b,{get mode(){return e(a).type},get title(){return e(a).props.title},get message(){return e(a).props.message},get confirmLabel(){return e(a).props.confirmLabel},get confirmVariant(){return e(a).props.confirmVariant},get value(){return e(a).props.value},get placeholder(){return e(a).props.placeholder},get multiline(){return e(a).props.multiline}})};Q(s,b=>{e(a).type==="run"?b(i):e(a).type==="restart"?b(o,1):e(a).type==="clean"?b(l,2):(e(a).type==="alert"||e(a).type==="confirm"||e(a).type==="prompt")&&b(d,3)})}u(t,n),Ae()}let fr=z(ie([])),Ai=0;function Li(){return e(fr)}function Cr(t,r="success",a=3500){const n=++Ai;f(fr,[...e(fr),{id:n,message:t,variant:r}],!0),setTimeout(()=>ka(n),a)}function ka(t){f(fr,e(fr).filter(r=>r.id!==t),!0)}var Ti=S('
        '),Fi=S('
        ');function Di(t,r){Me(r,!0);let a=j(Li);Jt(t,{children:(n,s)=>{var i=Fi();Ye(i,21,()=>e(a),o=>o.id,(o,l)=>{var d=Ti(),b=k(d,!0);p(d),J(()=>{Se(d,1,`pointer-events-auto max-w-[320px] px-4 py-2.5 rounded-md shadow-lg text-sm font-semibold text-white cursor-pointer ${e(l).variant==="success"?"bg-edf-vert-fonce":"bg-edf-orange-fonce"}`),ne(b,e(l).message)}),le("click",d,()=>ka(e(l).id)),u(o,d)}),p(i),u(n,i)}}),Ae()}Ke(["click"]);var zi=Ot(''),Ii=Ot(''),Oi=S(''),Hi=S(" ",1),ji=S(" ",1),Vi=S('');function It(t,r){Me(r,!0);const a=g=>{var c=Oi(),w=k(c);{var P=y=>{var C=zi();J(()=>Ze(C,`width: ${o()-4}px; height: ${o()-4}px;`)),u(y,C)},h=y=>{var C=Ii();J(()=>Ze(C,`width: ${o()-4}px; height: ${o()-4}px;`)),u(y,C)};Q(w,y=>{n()&&!s()?y(P):s()&&y(h,1)})}p(c),J(()=>{Se(c,1,`inline-flex items-center justify-center rounded border-2 cursor-pointer transition-colors duration-100 shrink-0 + ${i()?"opacity-40 cursor-not-allowed":""} + ${n()||s()?"bg-edf-bleu-moyen border-edf-bleu-moyen text-white":"bg-white border-edf-gris-moyen hover:border-edf-bleu-clair"}`),Ze(c,`width: ${o()??""}px; height: ${o()??""}px;`),we(c,"aria-checked",s()?"mixed":n()),we(c,"aria-disabled",i()),we(c,"tabindex",i()?-1:0)}),le("click",c,b),le("keydown",c,x),u(g,c)};let n=me(r,"checked",3,!1),s=me(r,"indeterminate",3,!1),i=me(r,"disabled",3,!1),o=me(r,"size",3,16),l=me(r,"label",3,""),d=me(r,"labelFirst",3,!1);function b(g){var w;if(g.stopPropagation(),i())return;const c=s()?!0:!n();(w=r.onchange)==null||w.call(r,c)}function x(g){(g.key===" "||g.key==="Enter")&&(g.preventDefault(),g.stopPropagation(),b(g))}var A=be(),m=K(A);{var N=g=>{var c=Vi(),w=k(c);{var P=y=>{var C=Hi(),_=K(C),M=k(_,!0);p(_);var F=$(_);a(F),J(()=>ne(M,l())),u(y,C)},h=y=>{var C=ji(),_=K(C);a(_);var M=$(_),F=k(M,!0);p(M),J(()=>ne(F,l())),u(y,C)};Q(w,y=>{d()?y(P):y(h,-1)})}p(c),le("click",c,b),le("keydown",c,x),u(g,c)},L=g=>{a(g)};Q(m,g=>{l()?g(N):g(L,-1)})}u(t,A),Ae()}Ke(["click","keydown"]);function _n(t,r){try{const a=localStorage.getItem(t);return a===null?r:JSON.parse(a)}catch{return r}}function Hr(t,r){localStorage.setItem(t,JSON.stringify(r))}const en=new Map;function mr(t,r,a){vt(t),en.set(t,setInterval(r,a))}function vt(t){const r=en.get(t);r!==void 0&&(clearInterval(r),en.delete(t))}const Tt={status:1e3,tail:1e3,plot:3e3,probe:3e3,errors:5e3},Ui=["status","plot","probe","tail","errors"],Wr={status:{label:"Status table",min:500},plot:{label:"Residual plots",min:1e3},probe:{label:"Probe plots",min:1e3},tail:{label:"Log tail",min:500},errors:{label:"Recent errors",min:2e3}},ir=_n("csauto_refresh_rates",{});let bt=z(ie({status:ir.status??Tt.status,tail:ir.tail??Tt.tail,plot:ir.plot??Tt.plot,probe:ir.probe??Tt.probe,errors:ir.errors??Tt.errors}));function Bi(){return e(bt)}function qi(t,r){f(bt,{...e(bt),[t]:r},!0),Hr("csauto_refresh_rates",e(bt))}function Ki(){return e(bt).status}function Hn(){return e(bt).tail}function jn(){return e(bt).plot}function Gi(){return e(bt).probe}function Vn(){return e(bt).errors}const tn=new Set;function _r(t){return tn.add(t),()=>tn.delete(t)}function Wi(){tn.forEach(t=>t())}const rn=_n("csauto_autorefresh_enabled",{});function tr(t){return rn[t]??!0}function rr(t,r){rn[t]=r,Hr("csauto_autorefresh_enabled",rn)}var Xi=S(" ",1),Yi=S('
        ms
        '),Qi=S('
        Telemetry
        '),Zi=S('
        API token
        Auto-refresh intervals
        ',1);function Ji(t,r){Me(r,!0);let a=z(ie(xa())),n=z(ie({...Bi()})),s=z(!0),i=z(!1);Re(()=>{wi().then(b=>{f(s,b.enabled,!0),f(i,!0)}).catch(()=>{f(i,!1)})});function o(b){const{min:x}=Wr[b];let A=e(n)[b];(typeof A!="number"||isNaN(A))&&(A=Tt[b]),f(n,{...e(n),[b]:Math.max(x,Math.round(A))},!0)}function l(b,x){const A=x.target,m=A.value.replace(/[^0-9]/g,""),N=parseInt(m,10);isNaN(N)?m===""&&f(n,{...e(n),[b]:Wr[b].min},!0):f(n,{...e(n),[b]:N},!0),A.value=String(e(n)[b])}function d(){ya(e(a));for(const b of Object.keys(e(n)))o(b),qi(b,e(n)[b]);e(i)&&ki(e(s)).catch(()=>{}),r.onClose()}hr(t,{title:"Settings",titleId:"settings-dialog-title",get onCancel(){return r.onClose},onConfirm:d,maxWidth:"400px",portal:!0,footer:x=>{var A=Xi(),m=K(A);$e(m,{variant:"secondary",get onclick(){return r.onClose},children:(L,g)=>{ke();var c=Ve("Cancel");u(L,c)},$$slots:{default:!0}});var N=$(m,2);$e(N,{variant:"primary",onclick:d,children:(L,g)=>{ke();var c=Ve("Save");u(L,c)},$$slots:{default:!0}}),u(x,A)},children:(x,A)=>{var m=Zi(),N=K(m),L=$(k(N),2);Xe(L),p(N);var g=$(N,2),c=k(g),w=$(k(c),2);p(c);var P=$(c,2);Ye(P,20,()=>Ui,C=>C,(C,_)=>{const M=j(()=>Wr[_]);var F=Yi(),T=k(F),q=k(T),I=k(q,!0);p(q);var O=$(q,2),V=k(O);p(O),p(T);var G=$(T,2),Z=k(G);Xe(Z),ke(2),p(G),p(F),J(()=>{ne(I,e(M).label),ne(V,`min ${e(M).min??""}ms`),vn(Z,e(n)[_])}),le("input",Z,ae=>l(_,ae)),tt("blur",Z,()=>o(_)),u(C,F)}),p(P),p(g);var h=$(g,2);{var y=C=>{var _=Qi(),M=$(k(_),2);It(M,{get checked(){return e(s)},onchange:F=>f(s,F,!0),label:"Send anonymous usage statistics"}),p(_),u(C,_)};Q(h,C=>{e(i)&&C(y)})}et(L,()=>e(a),C=>f(a,C)),le("click",w,()=>f(n,{...Tt},!0)),u(x,m)},$$slots:{footer:!0,default:!0}}),Ae()}Ke(["click","input"]);const el=""+new URL("../assets/code-saturne.BHojVttu.svg",import.meta.url).href,tl="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='Calque_1'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%20height='400px'%20viewBox='0%200%20397.89%2095.85'%3e%3c!--%20Generator:%20Adobe%20Illustrator%2029.8.1,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%202.1.1%20Build%202)%20--%3e%3cdefs%3e%3cstyle%3e%20.st0%20{%20fill:%20%23ff861d;%20}%20.st1%20{%20fill:%20%23ffb210;%20}%20.st2%20{%20fill:%20%231057c8;%20}%20.st3%20{%20fill:%20%23d6430a;%20}%20%3c/style%3e%3c/defs%3e%3cpath%20class='st2'%20d='M26.25,61.73c-12.02,0-20.11-8.16-20.11-21.37s8.01-21.37,20.33-21.37c8.83,0,15.06,3.78,17.36,11.28l-5.64,2.52c-1.48-5.94-4.97-8.69-11.87-8.69-8.46,0-14.25,6.01-14.25,16.25s5.93,16.25,13.95,16.25,11.73-2.82,12.84-8.61l5.71,1.93c-2,7.79-9.13,11.8-18.33,11.8'/%3e%3cpath%20class='st2'%20d='M89.96,40.36c0,13.21-7.87,21.37-20.48,21.37s-20.48-8.16-20.48-21.37,7.86-21.37,20.48-21.37,20.48,8.16,20.48,21.37M54.94,40.36c0,10.24,5.64,16.25,14.54,16.25s14.54-6.01,14.54-16.25-5.64-16.25-14.54-16.25-14.54,6.01-14.54,16.25'/%3e%3cpath%20class='st2'%20d='M134.3,40.29c0,13.43-8.01,20.85-21.81,20.85h-14.84V19.58h14.84c13.8,0,21.81,7.42,21.81,20.7M128.36,40.29c0-9.94-5.57-15.58-15.44-15.58h-9.35v31.32h9.35c9.87,0,15.44-5.71,15.44-15.73'/%3e%3cpolygon%20class='st2'%20points='174.11%2056.02%20174.11%2061.14%20141.98%2061.14%20141.98%2019.58%20173.14%2019.58%20173.14%2024.7%20147.91%2024.7%20147.91%2037.54%20167.65%2037.54%20167.65%2042.66%20147.91%2042.66%20147.91%2056.02%20174.11%2056.02'/%3e%3cpath%20class='st2'%20d='M213.81,22.13c4.16-1.92,9.75-3.11,14.3-3.11,12.55,0,17.74,5.19,17.74,17.34v5.27c0,4.16.08,7.28.16,10.31.08,3.12.24,5.99.48,9.19h-9.43c-.4-2.16-.4-4.88-.48-6.15h-.16c-2.48,4.56-7.83,7.11-12.71,7.11-7.28,0-14.39-4.4-14.39-12.23,0-6.15,2.96-9.75,7.03-11.75,4.08-2,9.35-2.4,13.83-2.4h5.91c0-6.63-2.96-8.87-9.27-8.87-4.56,0-9.11,1.76-12.71,4.48l-.32-9.19ZM226.36,54.26c3.27,0,5.83-1.44,7.51-3.68,1.76-2.32,2.24-5.27,2.24-8.47h-4.63c-4.8,0-11.91.8-11.91,7.11,0,3.52,2.96,5.04,6.79,5.04'/%3e%3cpath%20class='st2'%20d='M280.98,28.61c-3.28-1.12-5.67-1.76-9.59-1.76-2.88,0-6.31,1.04-6.31,4.56,0,6.56,18.62,2.4,18.62,17.27,0,9.59-8.55,13.43-17.27,13.43-4.08,0-8.23-.72-12.15-1.76l.64-8.79c3.36,1.68,6.87,2.72,10.55,2.72,2.72,0,7.03-1.04,7.03-5.04,0-8.07-18.62-2.56-18.62-17.42,0-8.87,7.75-12.79,16.14-12.79,5.03,0,8.31.8,11.67,1.52l-.72,8.07Z'/%3e%3cpath%20class='st2'%20d='M295.25,27.81h-7.91v-7.83h7.91v-8.23l10.71-3.44v11.67h9.51v7.83h-9.51v19.18c0,3.52.96,6.79,5.04,6.79,1.92,0,3.76-.4,4.88-1.12l.32,8.47c-2.24.64-4.72.96-7.91.96-8.39,0-13.03-5.2-13.03-13.35v-20.94Z'/%3e%3cpath%20class='st2'%20d='M355.22,58.82c-3.92,2.16-8.39,3.28-14.15,3.28-13.59,0-21.5-7.83-21.5-21.34,0-11.91,6.31-21.74,19.1-21.74,15.27,0,19.58,10.47,19.58,24.85h-28.45c.48,6.63,5.11,10.39,11.75,10.39,5.2,0,9.67-1.92,13.67-4.15v8.71ZM348.03,36.52c-.32-5.19-2.72-9.67-8.71-9.67s-9.03,4.16-9.51,9.67h18.22Z'/%3e%3cpath%20class='st2'%20d='M366.57,19.98h9.51v9.35h.16c.48-3.84,4.87-10.31,11.27-10.31,1.04,0,2.16,0,3.27.32v10.79c-.96-.56-2.88-.88-4.79-.88-8.71,0-8.71,10.87-8.71,16.78v15.11h-10.71V19.98Z'/%3e%3cpath%20class='st0'%20d='M229.73,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st0'%20d='M203.17,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st1'%20d='M296.14,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st1'%20d='M378.47,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st1'%20d='M269.57,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3cpath%20class='st3'%20d='M107.55,80.9c0,3.67-2.97,6.64-6.64,6.64s-6.64-2.97-6.64-6.64,2.97-6.64,6.64-6.64,6.64,2.97,6.64,6.64'/%3e%3crect%20class='st0'%20x='134.12'%20y='75.59'%20width='42.5'%20height='10.62'/%3e%3crect%20class='st1'%20x='309.42'%20y='75.59'%20width='42.5'%20height='10.62'/%3e%3c/svg%3e";let Wt=z(null);function rl(t){f(Wt,t,!0)}function Ft(){return e(Wt)}function cr(t){return e(Wt)===null||e(Wt).capabilities.includes(t)}function nl(t){return e(Wt)===null||e(Wt).control_actions.includes(t)}var al=S('CODE_SATURNE'),sl=S('CODE_ASTER'),ol=S(' '),il=S('
        ',1);function ll(t,r){Me(r,!0);let a=j(()=>r.shownCases!==r.totalCases),n=z(!1);var s=il(),i=K(s),o=k(i),l=k(o);{var d=D=>{var v=al();J(()=>we(v,"src",el)),u(D,v)},b=j(()=>{var D;return!Ft()||((D=Ft())==null?void 0:D.solver)==="code_saturne"}),x=D=>{var v=sl();J(()=>we(v,"src",tl)),u(D,v)},A=j(()=>{var D;return((D=Ft())==null?void 0:D.solver)==="code_aster"}),m=D=>{var v=ol(),B=k(v,!0);p(v),J(X=>ne(B,X),[()=>{var X;return(X=Ft())==null?void 0:X.solver}]),u(D,v)};Q(l,D=>{e(b)?D(d):e(A)?D(x,1):D(m,-1)})}p(o);var N=$(o,2),L=k(N),g=k(L),c=k(g);{var w=D=>{var v=Ve();J(()=>ne(v,`${r.shownCases??""}/`)),u(D,v)};Q(c,D=>{e(a)&&D(w)})}var P=$(c,1,!0);p(g);var h=$(g,2),y=k(h,!0);p(h),p(L);var C=$(L,2),_=k(C),M=k(_);{var F=D=>{var v=Ve();J(()=>ne(v,`${r.shownRunning??""}/`)),u(D,v)};Q(M,D=>{e(a)&&D(F)})}var T=$(M,1,!0);p(_),ke(2),p(C);var q=$(C,2),I=k(q),O=k(I);{var V=D=>{var v=Ve();J(()=>ne(v,`${r.shownConverged??""}/`)),u(D,v)};Q(O,D=>{e(a)&&D(V)})}var G=$(O,1,!0);p(I),ke(2),p(q),p(N);var Z=$(N,2),ae=k(Z),E=k(ae);Te(E,{get icon(){return Yo},size:18}),p(ae),p(Z),p(i);var R=$(i,2);{var H=D=>{Ji(D,{onClose:()=>f(n,!1)})};Q(R,D=>{e(n)&&D(H)})}J(()=>{ne(P,r.totalCases),ne(y,r.totalCases===1?"case":"cases"),ne(T,r.totalRunning),ne(G,r.totalConverged)}),le("click",ae,()=>f(n,!0)),u(t,s),Ae()}Ke(["click"]);const cl=""+new URL("../assets/simvia-logo.kLDq7Uoj.svg",import.meta.url).href;var ul=S('
        '),dl=S('

        '),fl=S("
        "),vl=S('
        '),gl=S('
        '),hl=S('
        ');function Ht(t,r){let a=me(r,"eyebrow",3,""),n=me(r,"title",3,""),s=me(r,"wide",3,!1);var i=hl(),o=$(k(i),2);{var l=b=>{var x=gl(),A=k(x);{var m=c=>{var w=be(),P=K(w);ft(P,()=>r.titleSlot),u(c,w)},N=c=>{var w=fl(),P=k(w);{var h=_=>{var M=ul(),F=k(M,!0);p(M),J(()=>ne(F,a())),u(_,M)};Q(P,_=>{a()&&_(h)})}var y=$(P,2);{var C=_=>{var M=dl(),F=k(M,!0);p(M),J(()=>ne(F,n())),u(_,M)};Q(y,_=>{n()&&_(C)})}p(w),u(c,w)};Q(A,c=>{r.titleSlot?c(m):c(N,-1)})}var L=$(A,2);{var g=c=>{var w=vl(),P=k(w);ft(P,()=>r.actions),p(w),u(c,w)};Q(L,c=>{r.actions&&c(g)})}p(x),u(b,x)};Q(o,b=>{(a()||n()||r.titleSlot||r.actions)&&b(l)})}var d=$(o,2);ft(d,()=>r.children),p(i),J(()=>{Se(i,1,`${s()?"col-span-12":"col-span-6"} bg-card border border-border rounded-[10px] p-[16px_18px_18px] relative overflow-clip animate-rise`),we(i,"id",r.id)}),u(t,i)}function nr(t,r){Me(r,!0);let a=me(r,"checked",15,!0);Re(()=>{a()?mr(r.name,r.onRefresh,r.intervalMs):vt(r.name)}),vr(()=>vt(r.name)),It(t,{get checked(){return a()},onchange:n=>a(n),size:14,label:"Auto-refresh",labelFirst:!0}),Ae()}var pl=S(" ",1),ml=S('
      • '),_l=S(''),bl=S(' ',1);function xl(t,r){Me(r,!0);let a=me(r,"label",3,"More"),n=z(!1),s=z(void 0),i=z(void 0),o=z("");function l(){if(!e(s)||!e(i))return;const c=e(s).getBoundingClientRect(),w=e(i).offsetHeight,P=4,h=window.innerHeight-c.bottom-P,C=hh?c.top-P-w:c.bottom+P,_=Math.min(c.left,window.innerWidth-180);f(o,`position:fixed; top:${C}px; left:${_}px; min-width:170px; z-index:9999;`)}async function d(){f(n,!e(n)),e(n)&&(await Pt(),l())}function b(c){c.disabled||(f(n,!1),c.onClick())}function x(c){e(n)&&e(s)&&!e(s).contains(c.target)&&e(i)&&!e(i).contains(c.target)&&f(n,!1)}var A=bl();tt("mousedown",it,x),tt("keydown",it,c=>{c.key==="Escape"&&f(n,!1)}),tt("scroll",it,()=>{e(n)&&f(n,!1)});var m=K(A),N=k(m);$e(N,{variant:"secondary",size:"sm",onclick:d,children:(c,w)=>{var P=pl(),h=K(P);Te(h,{get icon(){return jo}});var y=$(h);J(()=>ne(y,` ${a()??""}`)),u(c,P)},$$slots:{default:!0}}),p(m),nt(m,c=>f(s,c),()=>e(s));var L=$(m,2);{var g=c=>{Jt(c,{children:(w,P)=>{var h=_l();Ye(h,21,()=>r.items,y=>y.label,(y,C)=>{var _=ml(),M=k(_),F=k(M);Te(F,{get icon(){return e(C).icon},size:14});var T=$(F);p(M),p(_),J(()=>{M.disabled=e(C).disabled,we(M,"aria-disabled",e(C).disabled),Se(M,1,`w-full flex items-center gap-2 text-left py-[7px] px-[10px] bg-transparent border border-transparent rounded-md text-[12.5px] text-ink transition-[background] duration-[120ms] ease-in-out disabled:opacity-40 disabled:pointer-events-none ${e(C).disabled?"":"cursor-pointer hover:bg-edf-gris-clair hover:border-border"}`),ne(T,` ${e(C).label??""}`)}),le("mousedown",M,q=>{q.stopPropagation(),b(e(C))}),u(y,_)}),p(h),nt(h,y=>f(i,y),()=>e(i)),J(()=>Ze(h,e(o))),u(w,h)}})};Q(L,c=>{e(n)&&c(g)})}u(t,A),Ae()}Ke(["mousedown"]);const Dt=[{key:"note",label:"Note"},{key:"nprocs",label:"MPI Ranks"},{key:"nt",label:"Thread Count"},{key:"last_iter",label:"Last Iter"},{key:"duration",label:"Duration"},{key:"last_mod",label:"Last Modified"},{key:"resu_size_mb",label:"RESU Size (MB)"}];let Xt=z(ie([])),Lr=z(ie([])),pt=z(ie(new Set)),br=z(""),bn=z(""),Et=z(ie([])),st=z(ie([])),Yt=z(""),Ca=z(!0),yl=z(!0),qt=z(ie(_n("csauto_status_views",{}))),xn=z(ie(localStorage.getItem("csauto_status_view_selected")??""));function yn(){return e(Xt)}function wn(){return e(Lr)}function Ut(){return e(pt)}function Un(){return e(br)}function nn(){return e(bn)}function wl(){return e(Et)}function kl(){return e(Et).filter(t=>e(Lr).includes(t))}function Cl(){return e(Et).filter(t=>Dt.some(r=>r.key===t))}function Sl(){return e(st)}function $l(){return e(Yt)}function Pl(){return e(Ca)}function Bn(){return e(qt)}function El(){return e(xn)}function Rl(t){f(Xt,t,!0)}function Nl(t){const r=e(Lr).length===0&&t.length>0;f(Lr,t,!0),r&&e(Et).length===0&&f(Et,[...t,...Dt.map(a=>a.key)],!0)}function Ml(t){f(br,t,!0)}function qn(t){f(Et,t,!0)}function Al(t){f(Yt,t,!0)}function Ll(t){f(Ca,t,!0)}function Tl(t){f(yl,t,!0)}function kn(t){f(xn,t,!0),localStorage.setItem("csauto_status_view_selected",t)}function an(t){const r=new Set(e(pt));r.has(t)?r.delete(t):r.add(t),f(pt,r,!0),f(br,t,!0),f(bn,t,!0)}function Sa(t){f(pt,new Set([t]),!0),f(br,t,!0),f(bn,t,!0)}function sn(t,r,a){const n=a.indexOf(t),s=a.indexOf(r);if(n<0||s<0)return;const[i,o]=n{const a=Fl(r);return t.every(n=>a.includes(n))})}function Dl(t){if(t==null||t==="")return"";const r=Number(t);return Number.isFinite(r)?r:String(t).toLowerCase()}function Wn(t,r){var n;if(r==="case_id")return t.case_id;if(r==="status")return t.status??"";if(r==="note")return t.note??"";if(r==="nprocs")return t.nprocs??0;if(r==="nt")return t.nt??0;if(r==="last_iter")return t.last_iter??0;if(r==="duration")return t.duration_s??0;if(r==="last_mod")return t.last_mod??"";if(r==="resu_size_mb")return t.resu_size_mb??0;const a=(n=t.doe)==null?void 0:n[r];return a!==void 0?Dl(a):""}function zl(t,r){return t===""&&r===""?0:t===""?1:r===""?-1:typeof t=="number"&&typeof r=="number"?t-r:String(t).localeCompare(String(r))}function Pa(){const t=$a();return e(st).length===0?t:[...t].sort((r,a)=>{for(const n of e(st)){const s=Wn(r,n.key),i=Wn(a,n.key),o=zl(s,i);if(o!==0)return n.dir==="asc"?o:-o}return 0})}function Rr(){return Pa().map(t=>t.case_id)}function Il(t,r){const a=e(st).findIndex(n=>n.key===t);if(r)if(a>=0){const n=[...e(st)];n[a]={key:t,dir:n[a].dir==="asc"?"desc":"asc"},f(st,n,!0)}else f(st,[...e(st),{key:t,dir:"asc"}],!0);else a>=0&&e(st).length===1?f(st,[{key:t,dir:e(st)[0].dir==="asc"?"desc":"asc"}],!0):f(st,[{key:t,dir:"asc"}],!0)}function Ol(){return{visibleColumns:[...e(Et)],search:e(Yt),sorts:e(st).map(t=>({...t}))}}function Hl(t){f(Et,[...t.visibleColumns],!0),f(Yt,t.search,!0),f(st,t.sorts.map(r=>({...r})),!0)}function jl(t){f(qt,{...e(qt),[t]:Ol()},!0),Hr("csauto_status_views",e(qt)),kn(t)}function Vl(t){const r={...e(qt)};delete r[t],f(qt,r,!0),Hr("csauto_status_views",r),e(xn)===t&&kn("")}function Sr(){const t=new Set;for(const r of e(Xt))e(pt).has(r.case_id)&&t.add((r.status??"").toUpperCase());return t}function Xn(){for(const t of e(Xt))if(e(pt).has(t.case_id)&&t.resu_size_mb!=null&&t.resu_size_mb>0)return!0;return!1}function Ul(t,r){const a=r.length,n=t.length,s=r.filter(d=>d.status==="RUNNING").length,i=t.filter(d=>d.status==="RUNNING").length,o=r.filter(d=>d.convergence==="converged").length,l=t.filter(d=>d.convergence==="converged").length;return{totalCases:a,shownCases:n,totalRunning:s,shownRunning:i,totalConverged:o,shownConverged:l}}var Bl=S('
        DOE columns
        '),ql=S('
        ');function Kl(t,r){Me(r,!0);let a=me(r,"initialName",3,""),n=j(wn),s=z(ie(a())),i=z(ie(new Set(r.initialColumns??[...e(n),...Dt.map(V=>V.key)])));function o(V){const G=new Set(e(i));G.has(V)?G.delete(V):G.add(V),f(i,G,!0)}function l(V,G){const Z=new Set(e(i));V.forEach(ae=>G?Z.add(ae):Z.delete(ae)),f(i,Z,!0)}function d(){const V=e(s).trim();V&&r.onSave(V,[...e(i)])}function b(V){V.key==="Escape"&&r.onCancel()}function x(V){V.target.dataset.backdrop!==void 0&&r.onCancel()}let A=z(void 0);Re(()=>{var V,G;(V=e(A))==null||V.focus(),(G=e(A))==null||G.select()});var m=ql(),N=k(m),L=k(N),g=k(L,!0);p(L);var c=$(L,2),w=$(k(c),2);Xe(w),nt(w,V=>f(A,V),()=>e(A)),p(c);var P=$(c,2);{var h=V=>{var G=Bl(),Z=k(G),ae=$(k(Z),2),E=k(ae),R=$(E,2);p(ae),p(Z);var H=$(Z,2);Ye(H,20,()=>e(n),D=>D,(D,v)=>{{let B=j(()=>e(i).has(v));It(D,{get checked(){return e(B)},onchange:()=>o(v),size:14,get label(){return v}})}}),p(H),p(G),le("click",E,()=>l(e(n),!0)),le("click",R,()=>l(e(n),!1)),u(V,G)};Q(P,V=>{e(n).length>0&&V(h)})}var y=$(P,2),C=k(y),_=$(k(C),2),M=k(_),F=$(M,2);p(_),p(C);var T=$(C,2);Ye(T,21,()=>Dt,V=>V.key,(V,G)=>{{let Z=j(()=>e(i).has(e(G).key));It(V,{get checked(){return e(Z)},onchange:()=>o(e(G).key),size:14,get label(){return e(G).label}})}}),p(T),p(y);var q=$(y,2),I=k(q);$e(I,{variant:"secondary",get onclick(){return r.onCancel},children:(V,G)=>{ke();var Z=Ve("Cancel");u(V,Z)},$$slots:{default:!0}});var O=$(I,2);{let V=j(()=>!e(s).trim());$e(O,{variant:"primary",onclick:d,get disabled(){return e(V)},children:(G,Z)=>{ke();var ae=Ve("Save");u(G,ae)},$$slots:{default:!0}})}p(q),p(N),p(m),J(()=>ne(g,r.mode==="create"?"New view":"Edit view")),le("keydown",m,b),le("click",m,x),et(w,()=>e(s),V=>f(s,V)),le("click",M,()=>l(Dt.map(V=>V.key),!0)),le("click",F,()=>l(Dt.map(V=>V.key),!1)),u(t,m),Ae()}Ke(["keydown","click"]);var Gl=S('
        ',1);function Wl(t,r){Me(r,!0);let a=j(()=>Object.keys(Bn())),n=z(ie(El())),s=z(!1),i=z("create"),o=j(()=>[{value:"",label:"All columns"},...e(a).map(C=>({value:C,label:C}))]);function l(C){if(f(n,C,!0),kn(C),C==="")qn([...wn(),...Dt.map(_=>_.key)]);else{const _=Bn();_[C]&&Hl(_[C])}}function d(){f(i,"edit"),f(s,!0)}function b(){f(i,"create"),f(s,!0)}function x(C,_){qn(_),e(i)==="edit"&&e(n)&&C!==e(n)&&Vl(e(n)),jl(C),f(n,C,!0),f(s,!1)}function A(){f(s,!1)}var m=Gl(),N=K(m),L=k(N);lt(L,{class:"w-[140px]",get options(){return e(o)},get value(){return e(n)},onchange:l});var g=$(L,2),c=k(g);Te(c,{get icon(){return Ko},size:14}),p(g);var w=$(g,2),P=k(w);Te(P,{get icon(){return Go},size:14}),p(w),p(N);var h=$(N,2);{var y=C=>{Jt(C,{children:(_,M)=>{{let F=j(()=>e(i)==="edit"?e(n):""),T=j(wl);Kl(_,{get mode(){return e(i)},get initialName(){return e(F)},get initialColumns(){return e(T)},onSave:x,onCancel:A})}}})};Q(h,C=>{e(s)&&C(y)})}le("click",g,d),le("click",w,b),u(t,m),Ae()}Ke(["click"]);var Xl=S('
        '),Yl=S(""),Ql=S(' '),Zl=S(' '),Jl=S('
        '),ec=S(" "),tc=S(''),rc=S(''),nc=S(" Open GUI",1),ac=S(""),sc=S(" "),oc=S(""),ic=S('
        ');function lc(t,r){Me(r,!0);let a=j(()=>r.rows.length>0&&r.rows.every(E=>e(b).has(E.case_id))),n=j(()=>r.rows.some(E=>e(b).has(E.case_id))),s=j(()=>e(n)&&!e(a)),i=j(kl),o=j(()=>new Set(Cl())),l=j(Sl),d=j(Pl),b=j(Ut),x=j(()=>{const E=[{key:"_select",label:"",kind:"meta",sticky:"left"},{key:"case_id",label:"Case",kind:"meta",sticky:"left"},{key:"status",label:"Status",kind:"meta",sticky:"left"},...e(o).has("note")?[{key:"note",label:"Note",kind:"meta"}]:[]],R=e(i).map(B=>({key:B,label:B,kind:"doe"})),D=[{key:"nprocs",label:"MPI Ranks",kind:"calc"},{key:"nt",label:"Thread Count",kind:"calc"},{key:"last_iter",label:"Last Iter",kind:"calc"},{key:"duration",label:"Duration",kind:"calc"},{key:"last_mod",label:"Last Modified",kind:"calc"},{key:"resu_size_mb",label:"RESU Size (MB)",kind:"calc"}].filter(B=>e(o).has(B.key)),v=cr("gui")?[{key:"_actions",label:"",kind:"meta",sticky:"right"}]:[];return[...E,...R,...D,...v]});function A(E){const R=e(l).findIndex(D=>D.key===E);if(R<0)return"";const H=e(l)[R].dir==="asc"?"▲":"▼";return e(l).length>1?`${H}${R+1}`:H}function m(E,R){E!=="_actions"&&Il(E,R.ctrlKey||R.metaKey)}function N(E,R){R.shiftKey?sn(nn()||E,E,Rr()):R.ctrlKey||R.metaKey?an(E):Sa(E)}function L(E,R){var D;const H=((D=E.status)==null?void 0:D.toUpperCase())??"";H!=="DONE"&&H!=="FAILED"||(R.preventDefault(),r.onContextMenu(E.case_id,R.clientX,R.clientY,E.convergence??""))}async function g(E){const R=E.note??"",H=await hn("Case note:",R,`Note — ${E.case_id}`,"",!0);if(H!==null)try{await bi(E.case_id,H)}catch(D){await We(`Failed to set note: ${D instanceof Error?D.message:D}`,"Error")}}async function c(E){try{await yi(E)}catch(R){await We(`Failed to open GUI: ${R instanceof Error?R.message:R}`,"Error")}}function w(E,R){const H=(E==null?void 0:E.toUpperCase())??"";return(H==="DONE"||H==="FAILED")&&R==="converged"?"CONVERGED":(H==="DONE"||H==="FAILED")&&R==="not_converged"?"NOT CONVERGED":H}function P(E,R){const H=(E==null?void 0:E.toUpperCase())??"";return(H==="DONE"||H==="FAILED")&&R==="converged"?"status-converged":(H==="DONE"||H==="FAILED")&&R==="not_converged"?"status-not-converged":H==="RUNNING"?"status-running":H==="DONE"?"status-done":H==="FAILED"?"status-failed":H==="PREPARED"?"status-prepared":"status-unknown"}function h(E){return e(b).has(E.case_id)?"row-selected":""}function y(E,R){var H;return R.key==="case_id"?E.case_id:R.key==="nprocs"?E.nprocs!=null?String(E.nprocs):"":R.key==="nt"?E.nt!=null?String(E.nt):"":R.key==="last_iter"?E.last_iter!=null?String(E.last_iter):"":R.key==="duration"?E.duration??"":R.key==="last_mod"?C(E.last_mod):R.key==="resu_size_mb"?E.resu_size_mb!=null?String(E.resu_size_mb):"":R.kind==="doe"?((H=E.doe)==null?void 0:H[R.key])!=null&&String(E.doe[R.key])!==""?String(E.doe[R.key]):"—":""}function C(E){if(!E)return"";try{const R=new Date(E),H=new Date,D=R.toDateString()===H.toDateString(),v=new Date(H);v.setDate(v.getDate()-1);const B=R.toDateString()===v.toDateString(),X=R.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return D?`Today ${X}`:B?`Yesterday ${X}`:R.toLocaleDateString([],{month:"short",day:"numeric"})+` ${X}`}catch{return E}}let _=z(ie({})),M=z(void 0);Re(()=>{e(d),e(x),r.rows,!(!e(M)||!e(d))&&Pt().then(()=>{if(!e(M))return;const E=Array.from(e(M).querySelectorAll("thead th.sticky-left")),R={};let H=0;E.forEach(D=>{const v=D.dataset.colKey??"";R[v]=H,H+=D.getBoundingClientRect().width}),f(_,R,!0)})});function F(E,R,H){const D=H&&E.key!=="_select"&&E.key!=="_actions"?["status-sortable"]:[];if(!H&&E.key==="case_id"&&D.push("case-id"),E.kind==="doe"&&D.push("status-col-doe"),!H&&E.key==="note"&&D.push("max-w-[140px] whitespace-nowrap overflow-hidden text-ellipsis cursor-pointer hover:underline hover:decoration-dotted hover:underline-offset-2"),e(d)&&E.sticky==="left"&&D.push("sticky-left"),e(d)&&E.sticky==="right"&&D.push("sticky-right"),e(d)&&E.sticky==="left"){const v=e(x)[R+1];(!v||v.sticky!=="left")&&D.push("sticky-divider")}if(e(d)&&E.sticky==="right"){const v=e(x)[R-1];(!v||v.sticky!=="right")&&D.push("sticky-divider")}return D.join(" ")}function T(E,R){return F(E,R,!0)}function q(E,R){return F(E,R,!1)}function I(E){return!e(d)||!E.sticky?"":E.sticky==="right"?"position:sticky;right:0;":E.sticky==="left"&&E.key in e(_)?`position:sticky;left:${e(_)[E.key]}px;`:""}var O=ic(),V=k(O),G=k(V),Z=k(G);Ye(Z,23,()=>e(x),E=>E.key,(E,R,H)=>{var D=be(),v=K(D);{var B=fe=>{var W=Xl(),te=k(W),se=k(te);It(se,{get checked(){return e(a)},get indeterminate(){return e(s)},get onchange(){return r.onToggleAll},size:14}),p(te),p(W),J((de,ce)=>{Se(W,1,`${de??""} !px-2.5 !py-0 w-9`),we(W,"data-col-key",e(R).key),Ze(W,ce)},[()=>T(e(R),e(H)),()=>I(e(R))]),u(fe,W)},X=fe=>{var W=Yl();J((te,se)=>{Se(W,1,te),we(W,"data-col-key",e(R).key),Ze(W,se)},[()=>dt(T(e(R),e(H))),()=>I(e(R))]),u(fe,W)},ue=fe=>{var W=Zl(),te=k(W),se=$(te);{var de=re=>{var xe=Ql(),he=k(xe,!0);p(xe),J(Ee=>ne(he,Ee),[()=>A(e(R).key)]),u(re,xe)},ce=j(()=>A(e(R).key));Q(se,re=>{e(ce)&&re(de)})}p(W),J((re,xe)=>{Se(W,1,re),we(W,"data-col-key",e(R).key),Ze(W,xe),ne(te,`${e(R).label??""} `)},[()=>dt(T(e(R),e(H))),()=>I(e(R))]),le("click",W,re=>m(e(R).key,re)),le("keydown",W,re=>{(re.key==="Enter"||re.key===" ")&&(re.preventDefault(),m(e(R).key,re))}),u(fe,W)};Q(v,fe=>{e(R).key==="_select"?fe(B):e(R).key==="_actions"?fe(X,1):fe(ue,-1)})}u(E,D)}),p(Z),p(G);var ae=$(G);Ye(ae,21,()=>r.rows,E=>E.case_id,(E,R)=>{var H=oc();Ye(H,23,()=>e(x),D=>D.key,(D,v,B)=>{var X=be(),ue=K(X);{var fe=ce=>{var re=Jl(),xe=k(re),he=k(xe);{let Ee=j(()=>e(b).has(e(R).case_id));It(he,{get checked(){return e(Ee)},onchange:()=>r.onToggleRow(e(R).case_id),size:14})}p(xe),p(re),J((Ee,pe)=>{Se(re,1,`${Ee??""} !px-2.5 !py-0 w-9`),we(re,"data-col-key",e(v).key),Ze(re,pe)},[()=>q(e(v),e(B)),()=>I(e(v))]),u(ce,re)},W=ce=>{var re=ec(),xe=k(re),he=k(xe,!0);p(xe),p(re),J((Ee,pe,Fe,ze)=>{Se(re,1,Ee),we(re,"data-col-key",e(v).key),Ze(re,pe),Se(xe,1,`status-pill ${Fe??""}`),ne(he,ze)},[()=>dt(q(e(v),e(B))),()=>I(e(v)),()=>P(e(R).status,e(R).convergence),()=>w(e(R).status,e(R).convergence)]),u(ce,re)},te=ce=>{var re=rc(),xe=k(re);{var he=pe=>{var Fe=Ve();J(()=>ne(Fe,e(R).note)),u(pe,Fe)},Ee=pe=>{var Fe=tc(),ze=k(Fe);Te(ze,{get icon(){return qo},size:12}),p(Fe),u(pe,Fe)};Q(xe,pe=>{e(R).note?pe(he):pe(Ee,-1)})}p(re),J((pe,Fe)=>{Se(re,1,pe),we(re,"data-col-key",e(v).key),Ze(re,Fe),we(re,"title",e(R).note||"Add note")},[()=>dt(q(e(v),e(B))),()=>I(e(v))]),le("click",re,pe=>{pe.stopPropagation(),g(e(R))}),le("keydown",re,pe=>{(pe.key==="Enter"||pe.key===" ")&&(pe.preventDefault(),pe.stopPropagation(),g(e(R)))}),u(ce,re)},se=ce=>{var re=ac(),xe=k(re);$e(xe,{variant:"primary",size:"sm",onclick:he=>{he.stopPropagation(),c(e(R).case_id)},children:(he,Ee)=>{var pe=nc(),Fe=K(pe);Te(Fe,{get icon(){return Vo},size:12}),ke(),u(he,pe)},$$slots:{default:!0}}),p(re),J((he,Ee)=>{Se(re,1,he),we(re,"data-col-key",e(v).key),Ze(re,Ee)},[()=>dt(q(e(v),e(B))),()=>I(e(v))]),u(ce,re)},de=ce=>{var re=sc(),xe=k(re,!0);p(re),J((he,Ee,pe)=>{Se(re,1,he),we(re,"data-col-key",e(v).key),Ze(re,Ee),ne(xe,pe)},[()=>dt(q(e(v),e(B))),()=>I(e(v)),()=>y(e(R),e(v))]),u(ce,re)};Q(ue,ce=>{e(v).key==="_select"?ce(fe):e(v).key==="status"?ce(W,1):e(v).key==="note"?ce(te,2):e(v).key==="_actions"?ce(se,3):ce(de,-1)})}u(D,X)}),p(H),J(D=>Se(H,1,D),[()=>dt(h(e(R)))]),le("click",H,D=>N(e(R).case_id,D)),le("contextmenu",H,D=>L(e(R),D)),u(E,H)}),p(ae),p(V),nt(V,E=>f(M,E),()=>e(M)),p(O),J(()=>Se(O,1,`table-wrap ${e(d)?"sticky-enabled":""}`)),u(t,O),Ae()}Ke(["click","keydown","contextmenu"]);var cc=S('
        ');function uc(t,r){Me(r,!0);let a=j(()=>{const m=Math.min(r.x,window.innerWidth-180),N=Math.min(r.y,window.innerHeight-120);return`left: ${m}px; top: ${N}px;`});async function n(m){try{for(const N of r.cases)await xi(N,m)}catch(N){console.error("Failed to set convergence:",N)}r.onClose()}const s=r.cases.length>1?` (${r.cases.length})`:"";var i=cc();tt("keydown",it,m=>{m.key==="Escape"&&r.onClose()});var o=k(i),l=k(o);p(o);var d=$(o,2),b=k(d);p(d);var x=$(d,2),A=k(x);p(x),p(i),J(()=>{Ze(i,e(a)),Se(o,1,`w-full text-left py-[7px] px-[10px] bg-transparent border border-transparent rounded-md text-[12.5px] cursor-pointer transition-[background] duration-[120ms] ease-in-out hover:bg-edf-gris-clair hover:border-border ${r.currentValue==="converged"?"is-active":""}`),ne(l,`Mark Converged${s}`),Se(d,1,`w-full text-left py-[7px] px-[10px] bg-transparent border border-transparent rounded-md text-[12.5px] cursor-pointer transition-[background] duration-[120ms] ease-in-out hover:bg-edf-gris-clair hover:border-border ${r.currentValue==="not_converged"?"is-active":""}`),ne(b,`Mark Not Converged${s}`),Se(x,1,`w-full text-left py-[7px] px-[10px] bg-transparent border border-transparent rounded-md text-[12.5px] cursor-pointer transition-[background] duration-[120ms] ease-in-out hover:bg-edf-gris-clair hover:border-border ${r.currentValue===""?"is-active":""}`),ne(A,`Clear Mark${s}`)}),le("click",o,()=>n("converged")),le("click",d,()=>n("not_converged")),le("click",x,()=>n("")),u(t,i),Ae()}Ke(["click"]);var dc=S(" Refresh",1),fc=S(" ",1),vc=S(" Run",1),gc=S(" Restart",1),hc=S(" Stop",1),pc=S(" Kill",1),mc=S(" Clean",1),_c=S('
        ',1),bc=S('
        ',1);function xc(t,r){Me(r,!0);function a(){return[...Ut()]}async function n(){const v=a();if(!v.length)return;const B=await Xs(v);if(B)try{await On({cases:v,n:B.n,nt:B.nt,maxParallel:B.maxParallel}),r.onRefresh()}catch(X){await We(`Run failed: ${X instanceof Error?X.message:X}`,"Error")}}async function s(){const v=a();if(!v.length)return;const B=await Ys(v);if(B)try{await On({cases:v,n:B.n,nt:B.nt,maxParallel:B.maxParallel,restart:!0,restartMode:B.restartMode,restartValue:B.restartValue}),r.onRefresh()}catch(X){await We(`Restart failed: ${X instanceof Error?X.message:X}`,"Error")}}async function i(){const v=a();if(!(!v.length||!await Dn(`Kill ${v.length} case${v.length>1?"s":""}?`,"Confirm Kill","Kill","danger")))try{await mi(v),r.onRefresh()}catch(X){await We(`Kill failed: ${X instanceof Error?X.message:X}`,"Error")}}async function o(){const v=a();if(!(!v.length||!await Dn(`Stop ${v.length} case${v.length>1?"s":""} gracefully (checkpoint + exit)?`,"Confirm Stop","Stop","danger")))try{await kr({cases:v,action:"stop"}),r.onRefresh(),Cr(`Stop requested for ${v.length} case${v.length>1?"s":""} — will checkpoint and exit`)}catch(X){await We(`Stop failed: ${X instanceof Error?X.message:X}`,"Error")}}async function l(){const v=a();if(v.length)try{await kr({cases:v,action:"checkpoint"}),r.onRefresh(),Cr(`Checkpoint requested for ${v.length} case${v.length>1?"s":""}`)}catch(B){await We(`Checkpoint failed: ${B instanceof Error?B.message:B}`,"Error")}}async function d(){const v=a();if(!v.length)return;const B=await hn("Extend by how many additional time steps?","500","Extend Run");if(B===null)return;const X=parseInt(B,10);if(!Number.isFinite(X)||X<=0){await We("Enter a positive integer number of time steps.","Error");return}try{await kr({cases:v,action:"extend",value:X}),r.onRefresh(),Cr(`Extended ${v.length} case${v.length>1?"s":""} by ${X} time steps`)}catch(ue){await We(`Extend failed: ${ue instanceof Error?ue.message:ue}`,"Error")}}async function b(){const v=a();if(v.length)try{await kr({cases:v,action:"flush"}),Cr(`Flush requested for ${v.length} case${v.length>1?"s":""}`)}catch(B){await We(`Flush failed: ${B instanceof Error?B.message:B}`,"Error")}}async function x(){const v=a();if(!v.length)return;const B=await Qs(v);if(B)try{await _i({cases:v,keepLast:B.keepLast,keepResu:B.keepResu,deleteResu:B.deleteResu,pruneResu:!0}),r.onRefresh(),Wi()}catch(X){await We(`Cleanup failed: ${X instanceof Error?X.message:X}`,"Error")}}function A(){const v=Rr();v.length>0&&v.every(X=>Ut().has(X))?Gn():Kn(v)}function m(v){an(v)}let N=z(ie(tr("status")));Re(()=>{rr("status",e(N))}),Ll(!0);let L=j(()=>{const v=Sr();return v.size>0&&[...v].some(B=>B==="PREPARED"||B==="DONE"||B==="FAILED")}),g=j(()=>{if(!cr("restart"))return!1;const v=Sr();return v.size>0&&[...v].some(B=>B==="DONE"||B==="FAILED")&&Xn()}),c=j(()=>{const v=Sr();return v.size>0&&v.has("RUNNING")}),w=j(()=>{if(!cr("control"))return!1;const v=Sr();return v.size>0&&v.has("RUNNING")});const P=[{label:"Extend",icon:Uo,onClick:d,action:"extend"},{label:"Checkpoint",icon:Xo,onClick:l,action:"checkpoint"},{label:"Flush",icon:Ho,onClick:b,action:"flush"}];let h=j(()=>P.filter(v=>nl(v.action)).map(v=>({label:v.label,icon:v.icon,onClick:v.onClick,disabled:!e(w)}))),y=j(Xn),C=z(ie($l())),_=null;function M(){_&&clearTimeout(_),_=setTimeout(()=>{Al(e(C))},200)}Re(()=>Tl(e(N)));let F=z(!1),T=z(0),q=z(0),I=z(ie([])),O=z("");function V(v,B,X,ue){f(I,Ut().has(v)?[...Ut()]:[v],!0),f(O,ue,!0),f(T,B,!0),f(q,X,!0),f(F,!0)}function G(){f(F,!1)}function Z(v){const B=Rr();if(B.length){if(v.key==="Escape"){Gn(),G();return}if((v.ctrlKey||v.metaKey)&&v.key==="a"){v.preventDefault(),Kn(B);return}if(v.key==="ArrowDown"||v.key==="ArrowUp"){v.preventDefault();const X=v.key==="ArrowDown"?1:-1,ue=Un(),fe=B.indexOf(ue),W=Math.max(0,Math.min(B.length-1,fe+X)),te=B[W];v.shiftKey?sn(nn()||B[0],te,B):Sa(te),Ml(te);return}if(v.key===" "){v.preventDefault();const X=Un();X&&(v.shiftKey?sn(nn()||X,X,Rr()):an(X))}}}var ae=bc();tt("click",it,G),tt("scroll",it,G);var E=K(ae),R=k(E);Ht(R,{eyebrow:"Overview",title:"Status",wide:!0,id:"status-card-shell",actions:B=>{var X=fc(),ue=K(X);{let te=j(Ki);nr(ue,{name:"status",get intervalMs(){return e(te)},get onRefresh(){return r.onRefresh},get checked(){return e(N)},set checked(se){f(N,se,!0)}})}var fe=$(ue,2);{var W=te=>{$e(te,{variant:"primary",onclick:()=>r.onRefresh(),children:(se,de)=>{var ce=dc(),re=K(ce);Te(re,{get icon(){return er}}),ke(),u(se,ce)},$$slots:{default:!0}})};Q(fe,te=>{e(N)||te(W)})}u(B,X)},children:(B,X)=>{var ue=_c(),fe=K(ue),W=k(fe),te=k(W);Xe(te);var se=$(te,2);Wl(se,{}),p(W);var de=$(W,2),ce=k(de),re=k(ce);p(ce);var xe=$(ce,2);{let U=j(()=>!e(L));$e(xe,{variant:"run",size:"sm",onclick:n,get disabled(){return e(U)},children:(ee,oe)=>{var ve=vc(),ye=K(ve);Te(ye,{get icon(){return _a}}),ke(),u(ee,ve)},$$slots:{default:!0}})}var he=$(xe,2);{var Ee=U=>{{let ee=j(()=>!e(g));$e(U,{variant:"warning",size:"sm",onclick:s,get disabled(){return e(ee)},children:(oe,ve)=>{var ye=gc(),ge=K(ye);Te(ge,{get icon(){return Wo}}),ke(),u(oe,ye)},$$slots:{default:!0}})}},pe=j(()=>cr("restart"));Q(he,U=>{e(pe)&&U(Ee)})}var Fe=$(he,2);{var ze=U=>{{let ee=j(()=>!e(w));$e(U,{variant:"warning",size:"sm",onclick:o,get disabled(){return e(ee)},children:(oe,ve)=>{var ye=hc(),ge=K(ye);Te(ge,{get icon(){return Io}}),ke(),u(oe,ye)},$$slots:{default:!0}})}},Qe=j(()=>cr("control"));Q(Fe,U=>{e(Qe)&&U(ze)})}var je=$(Fe,2);{var rt=U=>{xl(U,{get items(){return e(h)}})};Q(je,U=>{e(h).length>0&&U(rt)})}var Le=$(je,2);{let U=j(()=>!e(c));$e(Le,{variant:"danger",size:"sm",onclick:i,get disabled(){return e(U)},children:(ee,oe)=>{var ve=pc(),ye=K(ve);Te(ye,{get icon(){return Oo}}),ke(),u(ee,ve)},$$slots:{default:!0}})}var Pe=$(Le,2);{let U=j(()=>!e(y));$e(Pe,{variant:"secondary",size:"sm",onclick:x,get disabled(){return e(U)},children:(ee,oe)=>{var ve=mc(),ye=K(ve);Te(ye,{get icon(){return Qo}}),ke(),u(ee,ve)},$$slots:{default:!0}})}p(de),p(fe);var Y=$(fe,2);{let U=j(Pa);lc(Y,{get rows(){return e(U)},onContextMenu:V,onToggleAll:A,onToggleRow:m})}J(U=>ne(re,`${U??""} selected`),[()=>Ut().size]),le("input",te,M),et(te,()=>e(C),U=>f(C,U)),u(B,ue)},$$slots:{actions:!0,default:!0}}),p(E);var H=$(E,2);{var D=v=>{uc(v,{get cases(){return e(I)},get x(){return e(T)},get y(){return e(q)},get currentValue(){return e(O)},onClose:G})};Q(H,v=>{e(F)&&v(D)})}le("keydown",E,Z),u(t,ae),Ae()}Ke(["keydown","input"]);var yc=S('
        ');function Qt(t,r){var a=yc(),n=k(a);ft(n,()=>r.children),p(a),u(t,a)}function Cn(t){return t.map(r=>({value:r,label:r}))}var wc=S(''),kc=S(" ",1);function Sn(t,r){Me(r,!0);let a=me(r,"columnLabel",3,"Columns"),n=me(r,"xMinLabel",3,"Iter min"),s=j(()=>Cn(r.allCases)),i=j(()=>r.columns.map(d=>({value:d,label:d}))),o=[{value:"zero",label:"Zero"},{value:"restart",label:"Restart start"},{value:"custom",label:"Custom"}];function l(d){r.onXMinChange(Number(d.target.value)||0)}Qt(t,{children:(d,b)=>{var x=kc(),A=K(x);Ne(A,{text:"Cases",children:(y,C)=>{Gt(y,{class:"w-[160px]",get options(){return e(s)},get selected(){return r.selectedCases},get onchange(){return r.onCasesChange},placeholder:"Select cases..."})}});var m=$(A,2);{var N=y=>{var C=be(),_=K(C);ft(_,()=>r.middleSlot),u(y,C)};Q(m,y=>{r.middleSlot&&y(N)})}var L=$(m,2);Ne(L,{get text(){return a()},children:(y,C)=>{Gt(y,{class:"w-[160px]",get options(){return e(i)},get selected(){return r.selectedColumns},get onchange(){return r.onColumnsChange},placeholder:"Select..."})}});var g=$(L,2);Ne(g,{text:"Start from",children:(y,C)=>{lt(y,{class:"w-[140px]",get options(){return o},get value(){return r.startFrom},onchange:_=>r.onStartFromChange(_)})}});var c=$(g,2);{var w=y=>{Ne(y,{get text(){return n()},children:(C,_)=>{var M=wc();Xe(M),J(()=>vn(M,r.xMin)),le("input",M,l),u(C,M)}})};Q(c,y=>{r.startFrom==="custom"&&y(w)})}var P=$(c,2);{var h=y=>{var C=be(),_=K(C);ft(_,()=>r.extraSlot),u(y,C)};Q(P,y=>{r.extraSlot&&y(h)})}u(d,x)}}),Ae()}Ke(["input"]);var Cc=S('
        '),Sc=S('
        ');function Zt(t,r){let a=me(r,"emptyMessage",3,"");var n=Sc(),s=k(n);{var i=l=>{var d=be(),b=K(d);zr(b,()=>r.svgHtml),u(l,d)},o=l=>{var d=Cc(),b=k(d),x=k(b,!0);p(b),p(d),J(()=>ne(x,a()||"No data to display.")),u(l,d)};Q(s,l=>{r.svgHtml?l(i):l(o,-1)})}p(n),J(()=>we(n,"id",r.id)),u(t,n)}async function $n(t,r="plot.png"){const a=document.getElementById(t),n=a==null?void 0:a.querySelector("svg");if(!n)return;const{width:s,height:i}=$c(n),o=window.devicePixelRatio||1,l=document.createElement("canvas");l.width=s*o,l.height=i*o;const d=l.getContext("2d");if(!d)return;d.scale(o,o);const b=new XMLSerializer().serializeToString(n),x=new Blob([b],{type:"image/svg+xml;charset=utf-8"}),A=URL.createObjectURL(x),m=new Image;m.width=s,m.height=i,await new Promise((L,g)=>{m.onload=()=>{d.drawImage(m,0,0,s,i),URL.revokeObjectURL(A),L()},m.onerror=g,m.src=A});const N=await new Promise(L=>l.toBlob(L,"image/png"));N&&await Ra(N,Pc(r))}function xr(t,r,a="png"){const n=r.length<=3?r.join("_"):`${r.length}_cases`,s=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19);return Ec(`${t}_${n}_${s}.${a}`)}async function Ea(t,r){const a=new Blob([t],{type:"text/csv;charset=utf-8"});await Ra(a,r)}function $c(t){const r=t.getAttribute("viewBox");if(r){const a=r.split(/[\s,]+/).map(Number);if(a.length===4)return{width:a[2],height:a[3]}}return{width:t.width.baseVal.value||900,height:t.height.baseVal.value||500}}async function Ra(t,r){if("showSaveFilePicker"in window)try{const i=await(await window.showSaveFilePicker({suggestedName:r,types:[{description:t.type.startsWith("image/")?"Image":"File",accept:{[t.type]:[`.${r.split(".").pop()}`]}}]})).createWritable();await i.write(t),await i.close();return}catch(s){if((s==null?void 0:s.name)==="AbortError")return}const a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download=r,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(a)}function Pc(t){return t.endsWith(".png")?t:`${t}.png`}function Ec(t){return t.replace(/[^a-zA-Z0-9._-]/g,"_")}let Na=z(ie([])),Ma=z(ie([])),Aa=z(ie([])),La=z("zero"),Ta=z(0),Fa=z(""),Rc=z(!0);function Nc(){return{selectedCases:e(Na),columns:e(Ma),selectedColumns:e(Aa),startFrom:e(La),iterMin:e(Ta),svgHtml:e(Fa),autoRefresh:e(Rc)}}function Yn(t){f(Na,t,!0)}function Mc(t){f(Ma,t,!0)}function Xr(t){f(Aa,t,!0)}function Ac(t){f(La,t,!0)}function Lc(t){f(Ta,t,!0)}function $r(t){f(Fa,t,!0)}var Tc=S(" Refresh",1),Fc=S(" ",1),Dc=S(" Download as PNG",1),zc=S('
        '),Ic=S('
        ',1),Oc=S('
        '),Hc=S('

        '),jc=S(" ",1);function Vc(t,r){Me(r,!0);let a=j(Nc),n=z("");const s=new Set(["iteration","wall_distance","walldistance"]),i=["velocity","pressure"];async function o(){if(e(a).selectedCases.length)try{const g=await ii(e(a).selectedCases);f(n,"");const c=g.filter(w=>!s.has(w.toLowerCase().replace(/\s+/g,"_")));if(Mc(c),c.length===0){Xr([]),$r("");return}if(e(a).selectedColumns.length===0){const w=c.filter(P=>i.some(h=>P.toLowerCase().includes(h)));Xr(w.length>0?w:[c[0]])}}catch(g){f(n,"Failed to load residual columns"),console.error("Failed to load residual columns:",g)}}async function l(){if(e(a).selectedCases.length&&!((e(a).columns.length===0||e(a).selectedColumns.length===0)&&(await o(),!e(a).selectedColumns.length)))try{let g=0,c=!0;if(e(a).startFrom==="restart"){const P=await wa(e(a).selectedCases),h=Object.values(P.origins).map(y=>y.iteration).filter(y=>y!==void 0&&Number.isFinite(y));g=h.length>0?Math.min(...h):0}else e(a).startFrom==="custom"&&(g=e(a).iterMin);const w=await li(e(a).selectedCases,e(a).selectedColumns,{xMin:g,includeHistory:c});f(n,""),w&&$r(w)}catch(g){f(n,"Failed to load residual plot"),console.error("Failed to load residual plot:",g)}}function d(g){if(Yn(g),g.length===0){$r("");return}o(),l()}function b(g){if(Xr(g),g.length===0){$r("");return}l()}function x(g){Ac(g),l()}function A(g){Lc(g),l()}let m=z(ie(tr("plot")));Re(()=>{rr("plot",e(m))}),Re(()=>{e(m)?mr("residualPlot",l,jn()):vt("residualPlot")});let N=!1;Re(()=>{r.allCases.length>0&&!N&&(N=!0,Yn([...r.allCases]),o().then(()=>l()))});const L=_r(()=>{N&&o().then(()=>l())});vr(()=>{vt("residualPlot"),L()}),Ht(t,{eyebrow:"Diagnostics",title:"Residuals Plot",wide:!0,actions:c=>{var w=Fc(),P=K(w);{let C=j(jn);nr(P,{name:"residualPlot",get intervalMs(){return e(C)},onRefresh:l,get checked(){return e(m)},set checked(_){f(m,_,!0)}})}var h=$(P,2);{var y=C=>{$e(C,{variant:"primary",onclick:l,children:(_,M)=>{var F=Tc(),T=K(F);Te(T,{get icon(){return er}}),ke(),u(_,F)},$$slots:{default:!0}})};Q(h,C=>{e(m)||C(y)})}u(c,w)},children:(c,w)=>{var P=jc(),h=K(P);{var y=F=>{const T=G=>{var Z=zc(),ae=k(Z);{let E=j(()=>!e(a).svgHtml);$e(ae,{variant:"secondary",size:"sm",onclick:()=>$n("plot-holder",xr("residuals",e(a).selectedCases)),get disabled(){return e(E)},children:(R,H)=>{var D=Dc(),v=K(D);Te(v,{get icon(){return pr}}),ke(),u(R,D)},$$slots:{default:!0}})}p(Z),u(G,Z)};var q=Ic(),I=K(q);Sn(I,{prefix:"plot",get allCases(){return r.allCases},get selectedCases(){return e(a).selectedCases},onCasesChange:d,columnLabel:"Variables",get columns(){return e(a).columns},get selectedColumns(){return e(a).selectedColumns},onColumnsChange:b,get startFrom(){return e(a).startFrom},onStartFromChange:x,xMinLabel:"Iter min",get xMin(){return e(a).iterMin},onXMinChange:A,get extraSlot(){return T}});var O=$(I,2),V=k(O);{let G=j(()=>e(a).selectedCases.length===0?"Please select at least one case.":e(a).selectedColumns.length===0?"Please select at least one variable.":"No data to display.");Zt(V,{id:"plot-holder",get svgHtml(){return e(a).svgHtml},get emptyMessage(){return e(G)}})}p(O),u(F,q)},C=F=>{var T=Oc(),q=k(T);Zt(q,{id:"plot-holder",svgHtml:"",emptyMessage:"No data available. Please run a simulation first."}),p(T),u(F,T)};Q(h,F=>{e(a).columns.length>0?F(y):F(C,-1)})}var _=$(h,2);{var M=F=>{var T=Hc(),q=k(T,!0);p(T),J(()=>ne(q,e(n))),u(F,T)};Q(_,F=>{e(n)&&F(M)})}u(c,P)},$$slots:{actions:!0,default:!0}}),Ae()}function Da(t){const{scope:r,getState:a,setState:n,setHasData:s,getAxis:i}=t;async function o(){const m=a();if(m.selectedCases.length)try{let N=await Jr(m.selectedCases,r);if(t.filterFiles&&(N=t.filterFiles(N)),n({files:N}),s(N.length>0),N.length===0){n({file:"",columns:[],selectedColumns:[],positionText:"",svgHtml:""});return}(!m.file||!N.includes(m.file))&&(n({file:N[0]}),await l())}catch(N){console.error(`Failed to load ${r} files:`,N)}}async function l(){const m=a();if(!(!m.selectedCases.length||!m.file))try{const N=await vi(m.selectedCases,[m.file]),L=t.filterColumns?t.filterColumns(N):N;t.onColumnsLoaded?t.onColumnsLoaded(N):n({columns:L});const g=a();if(g.columns.length===0){n({selectedColumns:[],positionText:"",svgHtml:""});return}g.selectedColumns.length===0&&n({selectedColumns:[g.columns[0]]})}catch(N){console.error(`Failed to load ${r} columns:`,N)}}async function d(){let m=a();if(m.selectedCases.length){if(await o(),m=a(),!m.file){n({positionText:"",svgHtml:""});return}if((m.columns.length===0||m.selectedColumns.length===0)&&(await l(),m=a(),!m.selectedColumns.length)){n({positionText:"",svgHtml:""});return}try{let N;const L=a();if(L.startFrom==="restart"){const c=await wa(L.selectedCases),w=i().toLowerCase(),P=w==="t"||w==="time"?"time":"iteration",h=Object.values(c.origins).map(y=>y[P]).filter(y=>y!==void 0&&Number.isFinite(y));N=h.length>0?Math.min(...h):void 0}else L.startFrom==="custom"&&(N=L.xMin);const g=await hi({cases:L.selectedCases,probes:[L.file],columns:L.selectedColumns,axis:i(),timeMin:typeof N=="number"?N:void 0,xMin:N,includeHistory:!0});g&&n({svgHtml:g})}catch(N){console.error(`Failed to load ${r} plot:`,N)}}}async function b(m){if(n({selectedCases:m}),m.length===0){n({svgHtml:""});return}await o(),r==="monitoring"&&await d()}function x(m){if(n({selectedColumns:m}),m.length===0){n({svgHtml:""});return}d()}async function A(m){n({file:m}),await l(),await d()}return{loadFiles:o,loadColumns:l,loadPlot:d,handleCasesChange:b,handleColumnsChange:x,handleFileChange:A}}function za(){return{selectedCases:[],file:"",files:[],columns:[],selectedColumns:[],axis:"time",startFrom:"zero",xMin:0,positionText:"",svgHtml:"",autoRefresh:!0}}let Bt=z("time"),on=z(ie(za())),ln=z(ie({...za(),axis:""})),Uc=z(!0),Tr=z(!1),Fr=z(!1);function Bc(){return e(Bt)}function qc(t){f(Bt,t,!0)}function Kc(){return e(Tr)}function cn(t){f(Tr,t,!0)}function Gc(){return e(Fr)}function un(t){f(Fr,t,!0)}function Wc(){e(Bt)==="time"&&!e(Tr)&&e(Fr)?f(Bt,"profile"):e(Bt)==="profile"&&!e(Fr)&&e(Tr)&&f(Bt,"time")}function Qn(){return e(on)}function Yr(){return e(ln)}function kt(t){f(on,{...e(on),...t},!0)}function At(t){f(ln,{...e(ln),...t},!0)}function Xc(){return e(Uc)}var Yc=S(" Download as PNG",1),Qc=S('
        '),Zc=S("
        "),Jc=S('
        '),eu=S('
        ',1),tu=S('
        ');function ru(t,r){Me(r,!0);let a=me(r,"onRefresh",15),n=j(Qn);const s=new Set(["time","t","iteration","iter"]),i=Da({scope:"monitoring",getState:Qn,setState:kt,setHasData:cn,filterFiles:g=>g.filter(c=>{const w=c.replace(/\.csv$/i,"").toLowerCase();return w!=="coords"&&!w.includes("coordinates")}),filterColumns:g=>g.filter(c=>!s.has(c.toLowerCase())),onColumnsLoaded:g=>{const c=g.filter(w=>!s.has(w.toLowerCase()));kt({columns:c}),o()},getAxis:()=>"time"});async function o(){if(!(!e(n).selectedCases.length||!e(n).file||!e(n).selectedColumns.length))try{const g=[];for(const C of e(n).selectedColumns){const _=await gi(e(n).selectedCases[0],e(n).file,[C]);_.found&&g.push({col:C,x:_.x,y:_.y,z:_.z})}if(!g.length){kt({positionText:""});return}const c=C=>{let _=0;for(const M of C){if(M===void 0)continue;const F=String(M),T=F.indexOf(".");T>=0&&(_=Math.max(_,F.length-T-1))}return _},w=c(g.map(C=>C.x)),P=c(g.map(C=>C.y)),h=c(g.map(C=>C.z)),y=g.map(C=>{const _=[];return C.x!==void 0&&_.push(`x=${C.x.toFixed(w)}`),C.y!==void 0&&_.push(`y=${C.y.toFixed(P)}`),C.z!==void 0&&_.push(`z=${C.z.toFixed(h)}`),`Probe position [${C.col}] : ${_.join(" · ")}`});kt({positionText:y.join(` +`)})}catch{kt({positionText:""})}}function l(g){i.handleColumnsChange(g),g.length>0&&o()}let d=j(()=>e(n).files.map(g=>({value:g,label:g.replace(/\.csv$/i,"").replace(/^probes?_/i,"")}))),b=!1;Re(()=>{r.allCases.length>0&&!b&&(b=!0,kt({selectedCases:[...r.allCases]}),i.loadFiles().then(()=>i.loadPlot()))}),Re(()=>{a(i.loadPlot)});let x=j(()=>e(n).selectedCases.length===0?"Please select at least one case.":e(n).selectedColumns.length===0?"Please select at least one probe.":"No data to display.");var A=be(),m=K(A);{var N=g=>{const c=F=>{Ne(F,{text:"Quantity",children:(T,q)=>{lt(T,{class:"w-[160px]",get options(){return e(d)},get value(){return e(n).file},get onchange(){return i.handleFileChange}})}})},w=F=>{var T=Qc(),q=k(T);{let I=j(()=>!e(n).svgHtml);$e(q,{variant:"secondary",size:"sm",onclick:()=>$n("probe-plot-holder",xr("probe",e(n).selectedCases)),get disabled(){return e(I)},children:(O,V)=>{var G=Yc(),Z=K(G);Te(Z,{get icon(){return pr}}),ke(),u(O,G)},$$slots:{default:!0}})}p(T),u(F,T)};var P=eu(),h=K(P);Sn(h,{prefix:"probe",get allCases(){return r.allCases},get selectedCases(){return e(n).selectedCases},get onCasesChange(){return i.handleCasesChange},get middleSlot(){return c},columnLabel:"Probes",get columns(){return e(n).columns},get selectedColumns(){return e(n).selectedColumns},onColumnsChange:l,get startFrom(){return e(n).startFrom},onStartFromChange:F=>{kt({startFrom:F}),i.loadPlot()},xMinLabel:"Time min",get xMin(){return e(n).xMin},onXMinChange:F=>{kt({xMin:F}),i.loadPlot()},get extraSlot(){return w}});var y=$(h,2);{var C=F=>{var T=Jc();Ye(T,21,()=>e(n).positionText.split(` +`).sort(),fn,(q,I)=>{var O=Zc(),V=k(O,!0);p(O),J(()=>ne(V,e(I))),u(q,O)}),p(T),u(F,T)};Q(y,F=>{e(n).positionText&&F(C)})}var _=$(y,2),M=k(_);Zt(M,{id:"probe-plot-holder",get svgHtml(){return e(n).svgHtml},get emptyMessage(){return e(x)}}),p(_),u(g,P)},L=g=>{var c=tu(),w=k(c);Zt(w,{id:"probe-plot-holder",svgHtml:"",emptyMessage:"No probe data available. Please run a simulation first."}),p(c),u(g,c)};Q(m,g=>{e(n).files.length>0?g(N):g(L,-1)})}u(t,A),Ae()}var nu=S(" ",1),au=S(" Download as PNG",1),su=S('
        '),ou=S('
        ',1),iu=S('
        ');function lu(t,r){Me(r,!0);let a=me(r,"onRefresh",15),n=j(Yr);const s=["s","x","abscissa","distance","arclength","arc_length","curvilinear","length","r","y","z","coord","position"];function i(c){const w=c.map(P=>P.toLowerCase());for(const P of s){const h=w.indexOf(P);if(h>=0)return c[h]}return c[0]??""}const o=Da({scope:"profiles",getState:Yr,setState:At,setHasData:un,onColumnsLoaded:c=>{const w=e(n).axis||i(c),P=c.filter(h=>h!==w).toSorted((h,y)=>h.localeCompare(y));At({columns:P,axis:w,selectedColumns:e(n).selectedColumns.length?e(n).selectedColumns:P.length?[P[0]]:[]})},getAxis:()=>Yr().axis});function l(c){const w=e(n).axis;At({axis:c});const h=[...e(n).columns,...w?[w]:[]].filter(y=>y!==c).toSorted((y,C)=>y.localeCompare(C));At({columns:h}),o.loadPlot()}let d=j(()=>e(n).files.map(c=>({value:c,label:c.replace(/\.csv$/i,"").replace(/^profiles\//i,"").replace(/_/g," ")}))),b=j(()=>[...e(n).axis?[e(n).axis]:[],...e(n).columns].toSorted((c,w)=>c.localeCompare(w)).map(c=>({value:c,label:c}))),x=!1;Re(()=>{r.allCases.length>0&&!x&&(x=!0,At({selectedCases:[...r.allCases]}),o.loadFiles().then(()=>o.loadPlot()))}),Re(()=>{a(o.loadPlot)});let A=j(()=>e(n).selectedCases.length===0?"Please select at least one case.":e(n).selectedColumns.length===0?"Please select at least one value.":"No data to display.");var m=be(),N=K(m);{var L=c=>{const w=M=>{var F=nu(),T=K(F);Ne(T,{text:"Profile",children:(I,O)=>{lt(I,{class:"w-[160px]",get options(){return e(d)},get value(){return e(n).file},get onchange(){return o.handleFileChange}})}});var q=$(T,2);Ne(q,{text:"X axis",children:(I,O)=>{lt(I,{class:"w-[140px]",get options(){return e(b)},get value(){return e(n).axis},onchange:l})}}),u(M,F)},P=M=>{var F=su(),T=k(F);{let q=j(()=>!e(n).svgHtml);$e(T,{variant:"secondary",size:"sm",onclick:()=>$n("profile-plot-holder",xr("profile",e(n).selectedCases)),get disabled(){return e(q)},children:(I,O)=>{var V=au(),G=K(V);Te(G,{get icon(){return pr}}),ke(),u(I,V)},$$slots:{default:!0}})}p(F),u(M,F)};var h=ou(),y=K(h);Sn(y,{prefix:"profile",get allCases(){return r.allCases},get selectedCases(){return e(n).selectedCases},get onCasesChange(){return o.handleCasesChange},get middleSlot(){return w},columnLabel:"Values",get columns(){return e(n).columns},get selectedColumns(){return e(n).selectedColumns},get onColumnsChange(){return o.handleColumnsChange},get startFrom(){return e(n).startFrom},onStartFromChange:M=>{At({startFrom:M}),o.loadPlot()},xMinLabel:"X min",get xMin(){return e(n).xMin},onXMinChange:M=>{At({xMin:M}),o.loadPlot()},get extraSlot(){return P}});var C=$(y,2),_=k(C);Zt(_,{id:"profile-plot-holder",get svgHtml(){return e(n).svgHtml},get emptyMessage(){return e(A)}}),p(C),u(c,h)},g=c=>{var w=iu(),P=k(w);Zt(P,{id:"profile-plot-holder",svgHtml:"",emptyMessage:"No profile data available. Please run a simulation first."}),p(w),u(c,w)};Q(N,c=>{e(n).files.length>0?c(L):c(g,-1)})}u(t,m),Ae()}var cu=S('
        Diagnostics
        '),uu=S(" Refresh",1),du=S(" ",1);function fu(t,r){Me(r,!0);let a=j(Bc),n=j(Xc),s=j(Kc),i=j(Gc),o=z(ie(tr("probe")));Re(()=>{rr("probe",e(o))});let l=z(void 0);function d(){var L;(L=e(l))==null||L()}async function b(){if(r.allCases.length){try{const g=(await Jr(r.allCases,"monitoring")).filter(c=>{const w=c.replace(/\.csv$/i,"").toLowerCase();return w!=="coords"&&!w.includes("coordinates")});cn(g.length>0)}catch{cn(!1)}try{const L=await Jr(r.allCases,"profiles");un(L.length>0)}catch{un(!1)}}}Re(()=>{r.allCases.length>0&&b()}),_r(()=>{b(),d()}),Re(()=>{e(s),e(i),Wc()});function x(L){L==="time"&&!e(s)||L==="profile"&&!e(i)||qc(L)}var A=be(),m=K(A);{var N=L=>{{const g=w=>{var P=cu(),h=$(k(P),2),y=k(h),C=$(y,2);p(h),p(P),J(()=>{Se(y,1,`bg-transparent border-none p-0 m-0 text-lg font-bold tracking-tight transition-colors duration-150 + ${e(s)?e(a)==="time"?"text-edf-bleu-fonce cursor-pointer":"text-edf-gris-moyen cursor-pointer hover:text-muted":"text-edf-gris-moyen cursor-not-allowed opacity-50"}`),y.disabled=!e(s),we(y,"title",e(s)?"":"No probe data available. Run a simulation first."),Se(C,1,`bg-transparent border-none p-0 m-0 text-lg font-bold tracking-tight transition-colors duration-150 + ${e(i)?e(a)==="profile"?"text-edf-bleu-fonce cursor-pointer":"text-edf-gris-moyen cursor-pointer hover:text-muted":"text-edf-gris-moyen cursor-not-allowed opacity-50"}`),C.disabled=!e(i),we(C,"title",e(i)?"":"No profile data available. Run a simulation first.")}),le("click",y,()=>x("time")),le("click",C,()=>x("profile")),u(w,P)};Ht(L,{wide:!0,titleSlot:g,tabs:g,actions:w=>{var P=du(),h=K(P);{let _=j(()=>e(a)==="time"?"probePlot":"profilePlot"),M=j(Gi);nr(h,{get name(){return e(_)},get intervalMs(){return e(M)},onRefresh:d,get checked(){return e(o)},set checked(F){f(o,F,!0)}})}var y=$(h,2);{var C=_=>{$e(_,{variant:"primary",onclick:d,children:(M,F)=>{var T=uu(),q=K(T);Te(q,{get icon(){return er}}),ke(),u(M,T)},$$slots:{default:!0}})};Q(y,_=>{e(o)||_(C)})}u(w,P)},children:(w,P)=>{var h=be(),y=K(h);{var C=M=>{ru(M,{get allCases(){return r.allCases},get onRefresh(){return e(l)},set onRefresh(F){f(l,F,!0)}})},_=M=>{lu(M,{get allCases(){return r.allCases},get onRefresh(){return e(l)},set onRefresh(F){f(l,F,!0)}})};Q(y,M=>{e(a)==="time"?M(C):M(_,-1)})}u(w,h)},$$slots:{tabs:!0,actions:!0,default:!0}})}};Q(m,L=>{e(n)&&L(N)})}u(t,A),Ae()}Ke(["click"]);var vu=S(" Refresh",1),gu=S(" ",1),hu=S(" Download as CSV",1),pu=S('
        ',1),mu=S(" "),_u=S(' '),bu=S(' '),xu=S('
        Case
        '),yu=S('

        '),wu=S(" ",1);function ku(t,r){Me(r,!0);let a=z(ie([])),n=z(ie([])),s=z(!1),i=z(!1),o=z(ie(tr("perf")));Re(()=>{rr("perf",e(o))});const l=5e3;let b=z(ie([{key:"elapsed_time",label:"Elapsed (s)",kind:"time"},{key:"io_time",label:"I/O (s)",kind:"time"},{key:"linear_solver_time",label:"Linear Solver (s)",kind:"time"},{key:"gradients_time",label:"Gradients (s)",kind:"time"},{key:"balances_time",label:"Balances (s)",kind:"time"},{key:"mpi_ranks",label:"MPI Ranks",kind:"int"},{key:"threads",label:"Threads",kind:"int"}])),x=j(()=>r.allCases.map(P=>({value:P,label:P}))),A=j(()=>e(n).length>0);async function m(){var P;if(e(a).length){f(i,!0);try{const h=await In(e(a));(P=h.columns)!=null&&P.length&&f(b,h.columns,!0),f(n,h.records,!0),e(n).length>0&&f(s,!0)}catch(h){console.error("Failed to load perf:",h)}f(i,!1)}}function N(P){if(f(a,P,!0),P.length===0){f(n,[],!0);return}m()}function L(P,h){if(h==null||h==="")return"-";if(P==="text")return h;const y=Number(h);return Number.isFinite(y)?P==="int"?String(Math.round(y)):y.toFixed(3):h}async function g(){if(!e(n).length)return;const P=["case_id",...e(b).map(_=>_.key)],h=e(n).map(_=>[_.case_id,...e(b).map(M=>_[M.key]??"")].join(",")),y=[P.join(","),...h].join(` +`),C=xr("timing_snapshot",e(a),"csv");await Ea(y,C)}let c=!1;Re(()=>{r.allCases.length>0&&!c&&(c=!0,f(a,[...r.allCases],!0),In(r.allCases).then(P=>{var h;(h=P.columns)!=null&&h.length&&f(b,P.columns,!0),f(s,P.records.length>0),f(n,P.records,!0)}).catch(()=>{}))}),Re(()=>{e(o)?mr("perf",m,l):vt("perf")});const w=_r(()=>{c&&m()});vr(()=>{vt("perf"),w()}),Ht(t,{eyebrow:"Performance",title:"Timing Snapshot",wide:!0,actions:h=>{var y=gu(),C=K(y);nr(C,{name:"perf",intervalMs:l,onRefresh:m,get checked(){return e(o)},set checked(F){f(o,F,!0)}});var _=$(C,2);{var M=F=>{$e(F,{variant:"primary",onclick:m,children:(T,q)=>{var I=vu(),O=K(I);Te(O,{get icon(){return er}}),ke(),u(T,I)},$$slots:{default:!0}})};Q(_,F=>{e(o)||F(M)})}u(h,y)},children:(h,y)=>{var C=wu(),_=K(C);{var M=I=>{Qt(I,{children:(O,V)=>{var G=pu(),Z=K(G);Ne(Z,{text:"Cases",children:(R,H)=>{Gt(R,{class:"w-[160px]",get options(){return e(x)},get selected(){return e(a)},onchange:N,placeholder:"Select cases..."})}});var ae=$(Z,2),E=k(ae);{let R=j(()=>!e(A));$e(E,{variant:"secondary",size:"sm",onclick:g,get disabled(){return e(R)},children:(H,D)=>{var v=hu(),B=K(v);Te(B,{get icon(){return pr}}),ke(),u(H,v)},$$slots:{default:!0}})}p(ae),u(O,G)}})};Q(_,I=>{e(s)&&I(M)})}var F=$(_,2);{var T=I=>{var O=xu(),V=k(O),G=k(V),Z=k(G),ae=$(k(Z));Ye(ae,17,()=>e(b),R=>R.key,(R,H)=>{var D=mu(),v=k(D,!0);p(D),J(()=>ne(v,e(H).label)),u(R,D)}),p(Z),p(G);var E=$(G);Ye(E,21,()=>e(n),R=>R.case_id,(R,H)=>{var D=bu(),v=k(D),B=k(v,!0);p(v);var X=$(v);Ye(X,17,()=>e(b),ue=>ue.key,(ue,fe)=>{var W=_u(),te=k(W,!0);p(W),J(se=>ne(te,se),[()=>L(e(fe).kind,e(H)[e(fe).key])]),u(ue,W)}),p(D),J(()=>ne(B,e(H).case_id)),u(R,D)}),p(E),p(V),p(O),u(I,O)},q=I=>{var O=yu(),V=k(O);{var G=ae=>{var E=Ve("Select cases above to view timing information.");u(ae,E)},Z=ae=>{var E=Ve("No performance data available. Please run a simulation first.");u(ae,E)};Q(V,ae=>{e(s)?ae(G):ae(Z,-1)})}p(O),u(I,O)};Q(F,I=>{e(A)?I(T):I(q,-1)})}u(h,C)},$$slots:{actions:!0,default:!0}}),Ae()}const Cu={"&":"&","<":"<",">":">",'"':""","'":"'"};function Ia(t){return t.replace(/[&<>"']/g,r=>Cu[r]??r)}var Su=S("
        "),$u=S('
        ');function Pu(t,r){Me(r,!0);let a=z(void 0);function n(b){const x=Ia(b);if(!r.searchQuery.trim())return x;try{const A=new RegExp(`(${r.searchQuery})`,"gi");return x.replace(A,'$1')}catch{return x}}function s(b){return b==="error"?"tail-sev-error":b==="warn"?"tail-sev-warn":b==="info"?"tail-sev-info":""}function i(){return e(a)?e(a).scrollHeight-e(a).scrollTop-e(a).clientHeight<=24:!0}let o=z(!0);function l(){f(o,i(),!0)}Re(()=>{r.autoScroll&&r.lines.length>0&&e(a)&&e(o)&&Pt().then(()=>{e(a)&&(e(a).scrollTop=e(a).scrollHeight)})});var d=$u();Ye(d,21,()=>r.lines,b=>b.index,(b,x)=>{var A=Su();zr(A,()=>n(e(x).text),!0),p(A),J(m=>Se(A,1,`tail-line ${m??""} ${e(x).isNew?"tail-new":""}`),[()=>s(e(x).severity)]),u(b,A)}),p(d),nt(d,b=>f(a,b),()=>e(a)),tt("scroll",d,l),u(t,d),Ae()}const Eu=/(fatal error|error detected|error reading|error writing|segmentation fault|sigterm|sigsegv|sigkill|abort|killed|terminated|core dumped|traceback|exception|errno)/i,Ru=/(warning|divergence|non-convergence|clipping|negative|nan detected|overflow|underflow)/i;function Nu(t){return Eu.test(t)?"error":Ru.test(t)?"warn":"none"}function Mu(t,r){return r==="all"||r===""?!0:r==="info"?t!=="none":t===r}var Au=S(" Refresh",1),Lu=S(" ",1),Tu=S(''),Fu=S(''),Du=S("    ",1),zu=Ot(''),Iu=Ot(''),Ou=Ot(''),Hu=S(" Resume",1),ju=S(" Pause",1),Vu=S('Case not running'),Uu=S(' 
        ',1),Bu=S('

        No log data available. Please run a simulation first.

        '),qu=S('

        '),Ku=S(" ",1);function Gu(t,r){Me(r,!0);const a=80;let n=z(""),s=z(""),i=z(!1),o=z(ie([])),l=z(a),d=z(ie([])),b=z(ie(new Set)),x=z(!1),A=z(ie(tr("tail")));Re(()=>{rr("tail",e(A))});let m=z(!0),N=z("all"),L=z(""),g=z(""),c=z(void 0),w=j(()=>Cn(r.allCases)),P=j(()=>e(o).map(E=>{const R=E.split("/").pop()??E;return{value:E,label:R}})),h=[{value:"all",label:"All"},{value:"error",label:"Error"},{value:"warn",label:"Warn"}],y=j(()=>e(o).length>0),C=j(()=>yn().some(E=>{var R;return E.case_id===e(n)&&((R=E.status)==null?void 0:R.toUpperCase())==="RUNNING"}));const _={"run_solver.log":1,listing:2,"run_status.running":3,"csauto.stdout":4,"csauto.stderr":5,"performance.log":6};function M(E){const R=E.split("/").pop()??E;return _[R]??99}async function F(){if(e(n))try{const H=(await di(e(n))).filter(D=>{const v=D.split("/").pop()??D;return D.endsWith(".log")||D.endsWith("/summary")||v in _}).sort((D,v)=>M(D)-M(v));if(f(o,H,!0),H.length>0){const D=H[0];!e(s)||!H.includes(e(s))?(f(s,D,!0),f(i,!1)):!e(i)&&M(D)0&&H[H.length-1]===""?H.slice(0,-1):H;if(e(d).length>0){const v=q(e(d),D),B=new Set;for(let X=v;X{let E=e(d).map((R,H)=>({text:R,index:H,severity:Nu(R),isNew:e(b).has(H)}));if(e(N)!=="all"&&(E=E.filter(R=>Mu(R.severity,e(N)))),e(L).trim())try{const R=new RegExp(e(L),"i");E=E.filter(H=>R.test(H.text))}catch{}return E});function O(E){f(n,E,!0),f(s,""),f(i,!1),f(d,[],!0),F().then(()=>T(!0))}function V(E){f(s,E,!0),f(i,!0),f(d,[],!0),T(!0)}function G(){f(x,!e(x)),e(x)||T(!0)}function Z(E){(E.ctrlKey||E.metaKey)&&E.key==="f"&&e(c)&&(E.preventDefault(),e(c).focus())}Re(()=>{r.allCases.length>0&&!e(n)&&(f(n,r.allCases[0],!0),F().then(()=>T(!0)))}),Re(()=>{e(A)&&!e(x)&&e(n)?mr("tail",()=>T(!1),Hn()):vt("tail")});const ae=_r(()=>{e(n)&&F().then(()=>T(!0))});vr(()=>{vt("tail"),ae()}),tt("keydown",it,Z),Ht(t,{eyebrow:"Live",title:"Log Tail",wide:!0,actions:R=>{var H=Lu(),D=K(H);{let X=j(Hn);nr(D,{name:"tail",get intervalMs(){return e(X)},onRefresh:()=>T(!1),get checked(){return e(A)},set checked(ue){f(A,ue,!0)}})}var v=$(D,2);{var B=X=>{$e(X,{variant:"primary",onclick:()=>T(!0),children:(ue,fe)=>{var W=Au(),te=K(W);Te(te,{get icon(){return er}}),ke(),u(ue,W)},$$slots:{default:!0}})};Q(v,X=>{e(A)||X(B)})}u(R,H)},children:(R,H)=>{var D=Ku(),v=K(D);{var B=se=>{Qt(se,{children:(de,ce)=>{var re=Du(),xe=K(re);Ne(xe,{text:"Case",children:(ze,Qe)=>{lt(ze,{class:"w-[130px]",get options(){return e(w)},get value(){return e(n)},onchange:O})}});var he=$(xe,2);Ne(he,{text:"File",children:(ze,Qe)=>{lt(ze,{class:"w-[150px]",get options(){return e(P)},get value(){return e(s)},onchange:V})}});var Ee=$(he,2);Ne(Ee,{text:"Lines",children:(ze,Qe)=>{var je=Tu();Xe(je),le("change",je,()=>T(!0)),et(je,()=>e(l),rt=>f(l,rt)),u(ze,je)}});var pe=$(Ee,2);Ne(pe,{text:"Filter",children:(ze,Qe)=>{var je=Fu();Xe(je),nt(je,rt=>f(c,rt),()=>e(c)),et(je,()=>e(L),rt=>f(L,rt)),u(ze,je)}});var Fe=$(pe,2);Ne(Fe,{text:"Severity",children:(ze,Qe)=>{lt(ze,{class:"w-[90px]",get options(){return h},get value(){return e(N)},onchange:je=>f(N,je,!0)})}}),u(de,re)}})};Q(v,se=>{e(y)&&se(B)})}var X=$(v,2);{var ue=se=>{var de=Uu(),ce=K(de);Pu(ce,{get lines(){return e(I)},get searchQuery(){return e(L)},get autoScroll(){return e(m)}});var re=$(ce,2),xe=k(re),he=k(xe);{var Ee=Y=>{var U=zu();u(Y,U)},pe=Y=>{var U=Iu();u(Y,U)},Fe=Y=>{var U=Ou();u(Y,U)};Q(he,Y=>{e(x)?Y(Ee):e(C)?Y(pe,1):Y(Fe,-1)})}var ze=$(he);p(xe);var Qe=$(xe,2);{var je=Y=>{$e(Y,{variant:"secondary",size:"sm",onclick:G,children:(U,ee)=>{var oe=be(),ve=K(oe);{var ye=_e=>{var Ce=Hu(),Ie=K(Ce);Te(Ie,{get icon(){return _a}}),ke(),u(_e,Ce)},ge=_e=>{var Ce=ju(),Ie=K(Ce);Te(Ie,{get icon(){return Bo}}),ke(),u(_e,Ce)};Q(ve,_e=>{e(x)?_e(ye):_e(ge,-1)})}u(U,oe)},$$slots:{default:!0}})},rt=Y=>{var U=Vu();u(Y,U)};Q(Qe,Y=>{e(C)?Y(je):Y(rt,-1)})}var Le=$(Qe,2),Pe=k(Le);It(Pe,{get checked(){return e(m)},onchange:Y=>f(m,Y,!0),size:14,label:"Auto-scroll",labelFirst:!0}),p(Le),p(re),J(()=>ne(ze,` ${e(I).length??""} / ${e(d).length??""}`)),u(se,de)},fe=se=>{var de=Bu();u(se,de)};Q(X,se=>{e(d).length>0?se(ue):se(fe,-1)})}var W=$(X,2);{var te=se=>{var de=qu(),ce=k(de,!0);p(de),J(()=>ne(ce,e(g))),u(se,de)};Q(W,se=>{e(g)&&se(te)})}u(R,D)},$$slots:{actions:!0,default:!0}}),Ae()}Ke(["change"]);function Wu(t,r=3){var N,L;const a=t.split(` +`),n=[];let s=0,i=0,o=!1;for(const g of a){if(g.startsWith("===")||g.startsWith("---")||g.startsWith("+++"))continue;const c=g.match(/^@@ -(\d+),?\d* \+(\d+),?\d* @@/);if(c){s=parseInt(c[1],10)-1,i=parseInt(c[2],10)-1,o=!0;continue}if(o)if(g.startsWith("-"))s++,n.push({type:"del",leftNum:s,rightNum:null,leftContent:g.slice(1),rightContent:""});else if(g.startsWith("+"))i++,n.push({type:"add",leftNum:null,rightNum:i,leftContent:"",rightContent:g.slice(1)});else{s++,i++;const w=g.startsWith(" ")?g.slice(1):g;n.push({type:"equal",leftNum:s,rightNum:i,leftContent:w,rightContent:w})}}const l=[];let d=0;for(;d=0&&g-A>1&&x.push({kind:"separator",skipped:g-A-1});const c=l[g].type!=="equal",w=c&&!m;x.push({kind:"line",row:l[g],hunkStart:w}),m=c,A=g}if(A=0&&x.push({kind:"separator",skipped:l.length-1-A}),x.length>0&&x[0].kind==="line"){const g=((N=x[0].row)==null?void 0:N.leftNum)??0,c=((L=x[0].row)==null?void 0:L.rightNum)??0,w=Math.max(g,c)-1;w>0&&x.unshift({kind:"separator",skipped:w})}return x}var Xu=S('
        '),Yu=S('
        '),Qu=S(' ',1),Zu=S('No matches'),Ju=S('
        '),ed=S('

        Files are identical.

        '),td=S('
        Loading...
        '),rd=S('
        ');function nd(t,r){Me(r,!0);let a=me(r,"loading",3,!1),n=z(void 0),s=j(()=>Wu(r.diffText)),i=j(()=>{const Y=[];return e(s).forEach((U,ee)=>{U.hunkStart&&Y.push(ee)}),Y}),o=j(()=>e(i).length>0),l=j(()=>{var U;const Y=new Array(e(s).length).fill(-1);for(let ee=0;ee{r.diffText!==b&&(b=r.diffText,f(d,-1))});let x=j(()=>{if(!r.search.trim())return[];try{const Y=new RegExp(r.search,"i"),U=[];return e(s).forEach((ee,oe)=>{ee.kind==="line"&&ee.row&&(Y.test(ee.row.leftContent)||Y.test(ee.row.rightContent))&&U.push(oe)}),U}catch{return[]}}),A=z(-1),m="";Re(()=>{r.search!==m&&(m=r.search,f(A,e(x).length>0?0:-1,!0))});async function N(Y){var oe;f(A,Y,!0),await Pt();const U=e(x)[Y],ee=(oe=e(h))==null?void 0:oe.querySelector(`[data-item-idx="${U}"]`);if(ee&&e(h)&&e(y)){const ve=e(h).getBoundingClientRect(),ge=ee.getBoundingClientRect().top-ve.top+e(h).scrollTop-e(h).clientHeight/3;_=!0,e(h).scrollTop=ge,e(y).scrollTop=ge,requestAnimationFrame(()=>{_=!1})}}function L(){e(A)>0&&N(e(A)-1)}function g(){e(A)<0&&e(x).length>0?N(0):e(A)$1`)}catch{return ee}}function w(Y,U){return Y==="equal"?"":Y==="del"&&U==="left"?"bg-[rgba(214,67,10,0.08)] text-edf-orange-fonce":Y==="del"&&U==="right"?"bg-[rgba(48,122,16,0.08)] text-edf-vert-fonce":Y==="add"&&U==="left"?"bg-edf-gris-clair":Y==="add"&&U==="right"?"bg-[rgba(48,122,16,0.08)] text-edf-vert-fonce":""}function P(Y,U){return Y==="del"&&U==="left"?"rgb(251,237,233)":Y==="del"&&U==="right"?"rgb(238,247,236)":Y==="add"&&U==="left"?"var(--color-edf-gris-clair)":Y==="add"&&U==="right"?"rgb(238,247,236)":"white"}let h=z(void 0),y=z(void 0),C=!1,_=!1;function M(Y){C||_||!e(h)||!e(y)||(C=!0,Y==="left"?(e(y).scrollTop=e(h).scrollTop,e(y).scrollLeft=e(h).scrollLeft):(e(h).scrollTop=e(y).scrollTop,e(h).scrollLeft=e(y).scrollLeft),requestAnimationFrame(()=>{C=!1}))}async function F(Y){var ee;f(d,Y,!0),await Pt();const U=(ee=e(h))==null?void 0:ee.querySelector(`[data-hunk-start="${Y}"]`);if(U&&e(h)&&e(y)){_=!0;const oe=e(h).getBoundingClientRect(),ye=U.getBoundingClientRect().top-oe.top+e(h).scrollTop-e(h).clientHeight/3;e(h).scrollTop=ye,e(y).scrollTop=ye,requestAnimationFrame(()=>{_=!1})}}function T(){e(d)>0&&F(e(d)-1)}function q(){e(d)<0?F(0):e(d)=0&&f(d,U,!0)}function O(Y){Y.target instanceof HTMLInputElement||(Y.key==="n"&&!Y.shiftKey?(Y.preventDefault(),q()):Y.key==="N"||Y.key==="n"&&Y.shiftKey?(Y.preventDefault(),T()):Y.key==="j"?(Y.preventDefault(),g()):(Y.key==="J"||Y.key==="j"&&Y.shiftKey)&&(Y.preventDefault(),L()))}var V=rd();{const Y=(U,ee=ws)=>{var oe=be(),ve=K(oe);Ye(ve,17,()=>e(s),fn,(ye,ge,_e)=>{const Ce=j(()=>e(i).indexOf(_e)),Ie=j(()=>e(l)[_e]>=0&&e(l)[_e]===e(d)),Ge=j(()=>{var at,qe;return ee()==="left"?(at=e(ge).row)==null?void 0:at.leftNum:(qe=e(ge).row)==null?void 0:qe.rightNum}),gt=j(()=>{var at,qe;return ee()==="left"?((at=e(ge).row)==null?void 0:at.leftContent)??"":((qe=e(ge).row)==null?void 0:qe.rightContent)??""});var jt=be(),jr=K(jt);{var Je=at=>{var qe=Xu(),Nt=$(k(qe),2),Vr=k(Nt);p(Nt),p(qe),J(()=>ne(Vr,`... ${e(ge).skipped??""} lines hidden ...`)),u(at,qe)},ut=at=>{var qe=Yu(),Nt=k(qe),Vr=k(Nt,!0);p(Nt);var Pn=$(Nt,2);zr(Pn,()=>c(e(gt),e(A)>=0&&e(x)[e(A)]===_e),!0),p(Pn),p(qe),J((yt,Mt,yr,Oa,Ha)=>{Se(qe,1,`flex w-full ${yt??""} ${Mt??""}`),Ze(qe,e(Ie)?"background-color: rgba(16,87,200,0.12); color: rgb(16,87,200);":""),we(qe,"role",yr),we(qe,"tabindex",Oa),we(qe,"data-hunk-start",ee()==="left"&&e(Ce)>=0?e(Ce):void 0),we(qe,"data-item-idx",ee()==="left"?_e:void 0),Ze(Nt,`background: ${Ha??""}; color: ${e(Ie)?"white":"var(--color-muted)"};`),ne(Vr,e(Ge)??"")},[()=>w(e(ge).row.type,ee()),()=>e(ge).row.type!=="equal"||e(x).includes(_e)?"cursor-pointer":"",()=>e(ge).row.type!=="equal"||e(x).includes(_e)?"button":void 0,()=>e(ge).row.type!=="equal"||e(x).includes(_e)?0:void 0,()=>e(Ie)?"rgb(16,87,200)":P(e(ge).row.type,ee())]),le("click",qe,()=>{var Mt;((Mt=e(ge).row)==null?void 0:Mt.type)!=="equal"&&I(_e);const yt=e(x).indexOf(_e);yt>=0&&f(A,yt,!0)}),le("keydown",qe,yt=>{var Mt;if(yt.key==="Enter"||yt.key===" "){yt.preventDefault(),((Mt=e(ge).row)==null?void 0:Mt.type)!=="equal"&&I(_e);const yr=e(x).indexOf(_e);yr>=0&&f(A,yr,!0)}}),u(at,qe)};Q(jr,at=>{e(ge).kind==="separator"?at(Je):e(ge).row&&at(ut,1)})}u(ye,jt)}),u(U,oe)};var G=k(V),Z=k(G),ae=k(Z),E=k(ae,!0);p(ae);var R=$(ae,2),H=k(R,!0);p(R),p(Z);var D=$(Z,2),v=k(D),B=k(v,!0);p(v);var X=$(v,2),ue=k(X,!0);p(X),p(D),p(G);var fe=$(G,2),W=k(fe),te=k(W);Xe(te);var se=$(te,2);{var de=U=>{var ee=Qu(),oe=K(ee);{let _e=j(()=>e(A)<=0);$e(oe,{variant:"secondary",size:"sm",onclick:L,get disabled(){return e(_e)},children:(Ce,Ie)=>{ke();var Ge=Ve("Prev");u(Ce,Ge)},$$slots:{default:!0}})}var ve=$(oe,2),ye=k(ve);p(ve);var ge=$(ve,2);{let _e=j(()=>e(A)>=e(x).length-1);$e(ge,{variant:"secondary",size:"sm",onclick:g,get disabled(){return e(_e)},children:(Ce,Ie)=>{ke();var Ge=Ve("Next");u(Ce,Ge)},$$slots:{default:!0}})}J(()=>ne(ye,`${e(A)>=0?e(A)+1:"–"} / ${e(x).length??""} occurrence${e(x).length!==1?"s":""}`)),u(U,ee)},ce=j(()=>r.search.trim()&&e(x).length>0),re=U=>{var ee=Zu();u(U,ee)},xe=j(()=>r.search.trim());Q(se,U=>{e(ce)?U(de):e(xe)&&U(re,1)})}p(W);var he=$(W,2),Ee=k(he);{let U=j(()=>e(i).length===0||e(d)<=0);$e(Ee,{variant:"secondary",size:"sm",onclick:T,get disabled(){return e(U)},children:(ee,oe)=>{ke();var ve=Ve("Prev");u(ee,ve)},$$slots:{default:!0}})}var pe=$(Ee,2),Fe=k(pe);p(pe);var ze=$(pe,2);{let U=j(()=>e(i).length===0||e(d)>=e(i).length-1);$e(ze,{variant:"secondary",size:"sm",onclick:q,get disabled(){return e(U)},children:(ee,oe)=>{ke();var ve=Ve("Next");u(ee,ve)},$$slots:{default:!0}})}p(he),p(fe);var Qe=$(fe,2);{var je=U=>{var ee=Ju(),oe=k(ee),ve=k(oe),ye=k(ve);Y(ye,()=>"left"),p(ve),p(oe),nt(oe,Ie=>f(h,Ie),()=>e(h));var ge=$(oe,2),_e=k(ge),Ce=k(_e);Y(Ce,()=>"right"),p(_e),p(ge),nt(ge,Ie=>f(y,Ie),()=>e(y)),p(ee),tt("scroll",oe,()=>M("left")),tt("scroll",ge,()=>M("right")),u(U,ee)},rt=U=>{var ee=ed();u(U,ee)};Q(Qe,U=>{e(o)?U(je):U(rt,-1)})}var Le=$(Qe,2);{var Pe=U=>{var ee=td();u(U,ee)};Q(Le,U=>{a()&&U(Pe)})}p(V),nt(V,U=>f(n,U),()=>e(n)),J(()=>{ne(E,r.leftLabel),ne(H,r.kind),ne(B,r.rightLabel),ne(ue,r.kind),vn(te,r.search),ne(Fe,`${e(d)>=0?e(d)+1:"–"} / ${e(i).length??""} diff${e(i).length!==1?"s":""}`)}),le("input",te,U=>r.onSearchChange(U.target.value)),le("keydown",te,U=>{U.key==="Enter"&&(U.preventDefault(),g())})}le("keydown",V,O),u(t,V),Ae()}Ke(["keydown","click","input"]);var ad=S(" ",1),sd=S('

        Please select two different cases to compare.

        '),od=S('

        Select two cases to compare.

        '),id=S(' '),ld=S('
        Parameter
        '),cd=S('

        All parameters are identical.

        '),ud=S('
        ',1),dd=S('

        '),fd=S('

        Loading...

        '),vd=S(" ",1),gd=S(" ",1);function hd(t,r){Me(r,!0);let a=z(""),n=z(""),s=z(""),i=z(""),o=z(""),l=z(!1),d=z(!1),b=z(""),x=j(()=>r.allCases.map(_=>({value:_,label:_})));const A=[{value:"setup.xml",label:"setup.xml"},{value:"doe_row.csv",label:"doe_row.csv"},{value:"run_solver.log",label:"run_solver.log"},{value:"performance.log",label:"performance.log"}];let m=j(()=>{var _;return((_=Ft())==null?void 0:_.compare_kinds)??A});Re(()=>{var _;e(m).some(M=>M.value===e(s))||f(s,((_=e(m)[0])==null?void 0:_.value)??"",!0)});let N=z(!1),L=j(()=>e(a)&&e(n)&&e(a)!==e(n));function g(){const _=e(a);f(a,e(n),!0),f(n,_,!0)}async function c(){if(e(L)){f(l,!0),f(b,"");try{const _=await pi({cases:[e(a),e(n)],base:e(a),kind:e(s)});f(o,_,!0),f(d,!0)}catch(_){console.error("Failed to load diff:",_),f(o,""),f(d,!1);const M=_ instanceof Error?_.message:String(_);f(b,M.includes("404")?`File "${e(s)}" not found for one of the selected cases. It may not have been run yet.`:"Failed to load comparison.",!0)}f(l,!1)}}Re(()=>{e(a)&&e(n)&&e(a)!==e(n)&&e(s)?c():e(a)&&e(n)&&e(a)===e(n)&&(f(o,""),f(d,!0))});let w=!1;Re(()=>{r.allCases.length>=2&&!w?(w=!0,f(a,r.allCases[0],!0),f(n,r.allCases[1],!0)):r.allCases.length===1&&!w&&(w=!0,f(a,r.allCases[0],!0))});let P=j(wn),h=j(()=>{if(!e(a)||!e(n)||e(a)===e(n)||e(P).length===0)return[];const _=yn(),M=_.find(T=>T.case_id===e(a)),F=_.find(T=>T.case_id===e(n));return!M&&!F?[]:e(P).map(T=>{var O,V;const q=((O=M==null?void 0:M.doe)==null?void 0:O[T])!=null&&String(M.doe[T])!==""?String(M.doe[T]):"—",I=((V=F==null?void 0:F.doe)==null?void 0:V[T])!=null&&String(F.doe[T])!==""?String(F.doe[T]):"—";return{param:T,left:q,right:I,differs:q!==I}})}),y=j(()=>e(N)?e(h):e(h).filter(_=>_.differs)),C=j(()=>e(h).filter(_=>_.differs).length);Ht(t,{eyebrow:"Compare",title:"Side-by-Side Comparison",wide:!0,children:(_,M)=>{var F=gd(),T=K(F);Qt(T,{children:(G,Z)=>{var ae=ad(),E=K(ae);Ne(E,{text:"First case",children:(D,v)=>{lt(D,{class:"w-32.5",get options(){return e(x)},get value(){return e(a)},onchange:B=>f(a,B,!0),placeholder:"Select..."})}});var R=$(E,2);{let D=j(()=>!e(a)&&!e(n));$e(R,{variant:"secondary",size:"sm",onclick:g,get disabled(){return e(D)},children:(v,B)=>{Te(v,{get icon(){return Fo}})},$$slots:{default:!0}})}var H=$(R,2);Ne(H,{text:"Second case",children:(D,v)=>{lt(D,{class:"w-32.5",get options(){return e(x)},get value(){return e(n)},onchange:B=>f(n,B,!0),placeholder:"Select..."})}}),u(G,ae)}});var q=$(T,2);{var I=G=>{var Z=sd();u(G,Z)},O=G=>{var Z=od();u(G,Z)},V=G=>{var Z=vd(),ae=K(Z);{var E=X=>{var ue=ud(),fe=K(ue),W=k(fe),te=k(W);p(W);var se=$(W,2),de=k(se,!0);p(se),p(fe);var ce=$(fe,2);{var re=he=>{var Ee=ld(),pe=k(Ee),Fe=k(pe),ze=k(Fe),Qe=k(ze),je=k(Qe,!0);p(Qe);var rt=$(Qe,2),Le=k(rt,!0);p(rt),p(ze),p(Fe);var Pe=$(Fe);Ye(Pe,21,()=>e(y),Y=>Y.param,(Y,U)=>{var ee=id(),oe=k(ee),ve=k(oe,!0);p(oe);var ye=$(oe),ge=k(ye,!0);p(ye);var _e=$(ye),Ce=k(_e,!0);p(_e),p(ee),J(()=>{Se(oe,1,dt(e(U).differs?"text-edf-orange-fonce bg-[rgba(214,67,10,0.04)]":"")),ne(ve,e(U).left),ne(ge,e(U).param),Se(_e,1,dt(e(U).differs?"text-edf-vert-fonce bg-[rgba(48,122,16,0.04)]":"")),ne(Ce,e(U).right)}),u(Y,ee)}),p(Pe),p(pe),p(Ee),J(()=>{ne(je,e(a)),ne(Le,e(n))}),u(he,Ee)},xe=he=>{var Ee=cd();u(he,Ee)};Q(ce,he=>{e(y).length>0?he(re):he(xe,-1)})}J(()=>{ne(te,`${e(C)??""} difference${e(C)!==1?"s":""} out of ${e(h).length??""} + parameters`),ne(de,e(N)?"Show differences only":"Show all parameters")}),le("click",se,()=>f(N,!e(N))),u(X,ue)};Q(ae,X=>{e(h).length>0&&X(E)})}var R=$(ae,2);Qt(R,{children:(X,ue)=>{Ne(X,{text:"File",children:(fe,W)=>{lt(fe,{class:"w-37.5",get options(){return e(m)},get value(){return e(s)},onchange:te=>f(s,te,!0)})}})}});var H=$(R,2);{var D=X=>{var ue=dd(),fe=k(ue,!0);p(ue),J(()=>ne(fe,e(b))),u(X,ue)},v=X=>{nd(X,{get diffText(){return e(o)},get leftLabel(){return e(a)},get rightLabel(){return e(n)},get kind(){return e(s)},get search(){return e(i)},get loading(){return e(l)},onSearchChange:ue=>f(i,ue,!0)})},B=X=>{var ue=fd();u(X,ue)};Q(H,X=>{e(b)?X(D):e(d)?X(v,1):e(l)&&X(B,2)})}u(G,Z)};Q(q,G=>{e(a)&&e(n)&&e(a)===e(n)?G(I):!e(a)||!e(n)?G(O,1):G(V,-1)})}u(_,F)},$$slots:{default:!0}}),Ae()}Ke(["click"]);var pd=S(" Refresh",1),md=S(" ",1),_d=S(''),bd=S(''),xd=S(" Download as CSV",1),yd=S('
        ',1),wd=S(" ",1),kd=S(""),Cd=S('
        Sort by:
        '),Sd=S('

        No errors found. Select cases and adjust filters above.

        '),$d=S(' '),Pd=S('NEW'),Ed=S('
        '),Rd=S('
        '),Nd=S(' '),Md=S('
        '),Ad=S('

        '),Ld=S("
        ",1);function Td(t,r){Me(r,!0);const a=6,n=["csauto.stderr","run_solver.log","listing"];let s=z(ie([])),i=z(ie([...n])),o=!1;Re(()=>{var te;const W=(te=Ft())==null?void 0:te.error_files;W!=null&&W.length&&!o&&f(i,[...W],!0)});let l=z("all"),d=z(""),b=z(a),x=z(!1),A=z(""),m=z(ie(tr("errors")));Re(()=>{rr("errors",e(m))});let N=z(ie([])),L=z(ie(new Set));function g(W){return W.toLowerCase().replace(/[0-9]+/g,"#").replace(/0x[0-9a-f]+/gi,"#").replace(/\s+/g," ").trim()}function c(W){const te=W.line_html.replace(/<[^>]*>/g,"").slice(0,120);return`${W.case_id}|${W.file}|${W.severity}|${g(te)}`}function w(W){const te=new Map;for(const se of W){const de=c(se),ce=te.get(de);ce?ce.count++:te.set(de,{...se,count:1,fingerprint:de,isNew:!e(L).has(de)})}return Array.from(te.values())}async function P(){if(!(!e(s).length||!e(i).length)){f(x,!0);try{const W=await ci({cases:e(s),files:e(i),context:e(b),sev:e(l)==="all"?"":e(l),q:e(d)});f(A,"");const te=w(W.items);f(N,W.items,!0);const se=new Set(te.map(de=>de.fingerprint));f(L,se,!0),f(h,te,!0)}catch(W){f(A,"Failed to load errors"),console.error("Failed to load errors:",W)}finally{f(x,!1)}}}let h=z(ie([])),y=null;function C(){y&&clearTimeout(y),y=setTimeout(P,250)}function _(W){return W==="error"?"error-sev-error":W==="warn"?"error-sev-warn":"error-sev-info"}let M=j(()=>Cn(r.allCases));const F=["csauto.stderr","run_solver.log","listing","csauto.stdout"];let T=j(()=>{var W;return(((W=Ft())==null?void 0:W.error_files)??F).map(te=>({value:te,label:te}))}),q=[{value:"all",label:"All"},{value:"error",label:"Error"},{value:"warn",label:"Warn"},{value:"info",label:"Info"}];function I(W){if(f(s,W,!0),W.length===0){f(h,[],!0),f(N,[],!0);return}P()}function O(W){if(o=!0,f(i,W,!0),W.length===0){f(h,[],!0),f(N,[],!0);return}P()}function V(W){f(l,W,!0),P()}function G(){P()}let Z=!1;Re(()=>{r.allCases.length>0&&!Z&&(Z=!0,f(s,[...r.allCases],!0),P())}),Re(()=>{e(m)?mr("errors",P,Vn()):vt("errors")});const ae=_r(()=>{Z&&P()});vr(()=>{vt("errors"),ae()});let E=z(ie(new Set));function R(W){const te=new Set(e(E));te.has(W)?te.delete(W):te.add(W),f(E,te,!0)}let H=z("severity"),D=z("desc");const v={info:0,warn:1,error:2};let B=j(()=>{const W=[...e(h)];return W.sort((te,se)=>{let de=0;return e(H)==="severity"?de=(v[te.severity]??9)-(v[se.severity]??9):e(H)==="count"?de=te.count-se.count:de=te[e(H)].localeCompare(se[e(H)]),e(D)==="asc"?de:-de}),W});const X={severity:"desc",count:"desc",case_id:"asc",file:"asc"};function ue(W){e(H)===W?f(D,e(D)==="asc"?"desc":"asc",!0):(f(H,W,!0),f(D,X[W],!0))}function fe(){if(!e(h).length)return;const W=["case_id","file","severity","count","is_new","line_text"],te=e(B).map(ce=>[ce.case_id,ce.file,ce.severity,ce.count,ce.isNew?"yes":"no",`"${ce.line_html.replace(/<[^>]*>/g,"").replace(/"/g,'""')}"`].join(",")),se=[W.join(","),...te].join(` +`),de=xr("errors",e(s),"csv");Ea(se,de)}Ht(t,{eyebrow:"Diagnostics",title:"Recent Errors",wide:!0,actions:te=>{var se=md(),de=K(se);{let xe=j(Vn);nr(de,{name:"errors",get intervalMs(){return e(xe)},onRefresh:P,get checked(){return e(m)},set checked(he){f(m,he,!0)}})}var ce=$(de,2);{var re=xe=>{$e(xe,{variant:"primary",onclick:P,children:(he,Ee)=>{var pe=pd(),Fe=K(pe);Te(Fe,{get icon(){return er}}),ke(),u(he,pe)},$$slots:{default:!0}})};Q(ce,xe=>{e(m)||xe(re)})}u(te,se)},children:(te,se)=>{var de=Ld(),ce=K(de);Qt(ce,{children:(Le,Pe)=>{var Y=yd(),U=K(Y);Ne(U,{text:"Cases",children:(Ce,Ie)=>{Gt(Ce,{class:"w-[160px]",get options(){return e(M)},get selected(){return e(s)},onchange:I,placeholder:"Select cases..."})}});var ee=$(U,2);Ne(ee,{text:"Files",children:(Ce,Ie)=>{Gt(Ce,{class:"w-[160px]",get options(){return e(T)},get selected(){return e(i)},onchange:O,placeholder:"Select files..."})}});var oe=$(ee,2);Ne(oe,{text:"Severity",children:(Ce,Ie)=>{lt(Ce,{class:"w-[90px]",get options(){return q},get value(){return e(l)},onchange:V})}});var ve=$(oe,2);Ne(ve,{text:"Search",children:(Ce,Ie)=>{var Ge=_d();Xe(Ge),le("input",Ge,C),et(Ge,()=>e(d),gt=>f(d,gt)),u(Ce,Ge)}});var ye=$(ve,2);Ne(ye,{text:"Context",children:(Ce,Ie)=>{var Ge=bd();Xe(Ge),le("change",Ge,G),et(Ge,()=>e(b),gt=>f(b,gt)),u(Ce,Ge)}});var ge=$(ye,2),_e=k(ge);{let Ce=j(()=>e(h).length===0);$e(_e,{variant:"secondary",size:"sm",onclick:fe,get disabled(){return e(Ce)},children:(Ie,Ge)=>{var gt=xd(),jt=K(gt);Te(jt,{get icon(){return pr}}),ke(),u(Ie,gt)},$$slots:{default:!0}})}p(ge),u(Le,Y)}});var re=$(ce,2);{var xe=Le=>{var Pe=Cd(),Y=$(k(Pe),2);Ye(Y,16,()=>[{key:"severity",label:"Severity"},{key:"count",label:"Count"},{key:"case_id",label:"Case"},{key:"file",label:"File"}],U=>U.key,(U,ee)=>{var oe=kd(),ve=k(oe,!0),ye=$(ve);{var ge=_e=>{var Ce=wd(),Ie=$(K(Ce));{let Ge=j(()=>e(D)==="asc"?Do:To);Te(Ie,{get icon(){return e(Ge)},size:12})}u(_e,Ce)};Q(ye,_e=>{e(H)===ee.key&&_e(ge)})}p(oe),J(()=>{Se(oe,1,`cursor-pointer bg-transparent border-none text-xs hover:underline ${e(H)===ee.key?"text-edf-bleu-fonce font-bold":"text-muted"}`),ne(ve,ee.label)}),le("click",oe,()=>ue(ee.key)),u(U,oe)}),p(Pe),u(Le,Pe)};Q(re,Le=>{e(B).length>0&&Le(xe)})}var he=$(re,2),Ee=k(he);{var pe=Le=>{var Pe=Sd();u(Le,Pe)};Q(Ee,Le=>{e(B).length===0&&Le(pe)})}var Fe=$(Ee,2);Ye(Fe,17,()=>e(B),Le=>Le.fingerprint,(Le,Pe)=>{var Y=Rd(),U=k(Y),ee=k(U),oe=k(ee);{let Je=j(()=>e(E).has(e(Pe).fingerprint)?pn:zo);Te(oe,{get icon(){return e(Je)},size:14})}p(ee);var ve=$(ee,2),ye=k(ve);p(ve);var ge=$(ve,2),_e=k(ge);{var Ce=Je=>{var ut=$d(),at=k(ut);p(ut),J(()=>ne(at,`${e(Pe).count??""}x`)),u(Je,ut)};Q(_e,Je=>{e(Pe).count>1&&Je(Ce)})}var Ie=$(_e,2);{var Ge=Je=>{var ut=Pd();u(Je,ut)};Q(Ie,Je=>{e(Pe).isNew&&Je(Ge)})}p(ge),p(U);var gt=$(U,2);{var jt=Je=>{var ut=Ed();zr(ut,()=>e(Pe).line_html,!0),p(ut),u(Je,ut)},jr=j(()=>e(E).has(e(Pe).fingerprint));Q(gt,Je=>{e(jr)&&Je(jt)})}p(Y),J(Je=>{Se(Y,1,`error-item ${Je??""}`),ne(ye,`${e(Pe).case_id??""} / ${e(Pe).file??""} : ${e(Pe).severity??""}`)},[()=>_(e(Pe).severity)]),le("click",U,()=>R(e(Pe).fingerprint)),u(Le,Y)}),p(he);var ze=$(he,2);{var Qe=Le=>{var Pe=Md(),Y=k(Pe),U=k(Y);p(Y);var ee=$(Y,2);{var oe=ye=>{var ge=Nd(),_e=k(ge);p(ge),J(Ce=>ne(_e,`${Ce??""} new`),[()=>e(h).filter(Ce=>Ce.isNew).length]),u(ye,ge)},ve=j(()=>e(h).some(ye=>ye.isNew));Q(ee,ye=>{e(ve)&&ye(oe)})}p(Pe),J(()=>ne(U,`${e(h).length??""} unique / ${e(N).length??""} total`)),u(Le,Pe)};Q(ze,Le=>{e(B).length>0&&Le(Qe)})}var je=$(ze,2);{var rt=Le=>{var Pe=Ad(),Y=k(Pe,!0);p(Pe),J(()=>ne(Y,e(A))),u(Le,Pe)};Q(je,Le=>{e(A)&&Le(rt)})}J(()=>Se(he,1,`error-list ${e(x)?"opacity-50 pointer-events-none":""}`)),u(te,de)},$$slots:{actions:!0,default:!0}}),Ae()}Ke(["input","change","click"]);var Fd=S('
        Developed by Simvia
        ',1);function Bd(t,r){Me(r,!0);let a=z(ie({totalCases:0,shownCases:0,totalRunning:0,shownRunning:0,totalConverged:0,shownConverged:0})),n=z(ie([])),s=z(null);const i=v=>e(s)===null||e(s).includes(v);async function o(v){var ue;const B=`/favicon-${v}.svg`;try{const fe=await fetch(B);if(!fe.ok||!((ue=fe.headers.get("content-type"))!=null&&ue.includes("svg")))return}catch{return}const X=document.querySelector('link[rel="icon"]');X&&(X.href=B)}async function l(){try{const v=await si();Rl(v.rows),Nl(v.doe_columns),f(n,v.rows.map(B=>B.case_id),!0),f(a,Ul($a(),yn()),!0)}catch(v){console.error("Failed to load status:",v)}}Zn(()=>{l(),oi().then(v=>{rl(v),f(s,v.panels,!0),o(v.solver)}).catch(()=>{})});var d=Fd(),b=K(d);Mi(b,{});var x=$(b,2);Di(x,{});var A=$(x,2);ll(A,{get totalCases(){return e(a).totalCases},get shownCases(){return e(a).shownCases},get totalRunning(){return e(a).totalRunning},get shownRunning(){return e(a).shownRunning},get totalConverged(){return e(a).totalConverged},get shownConverged(){return e(a).shownConverged}});var m=$(A,2),N=k(m);{var L=v=>{xc(v,{onRefresh:l})},g=j(()=>i("status"));Q(N,v=>{e(g)&&v(L)})}var c=$(N,2);{var w=v=>{Vc(v,{get allCases(){return e(n)}})},P=j(()=>i("residuals"));Q(c,v=>{e(P)&&v(w)})}var h=$(c,2);{var y=v=>{fu(v,{get allCases(){return e(n)}})},C=j(()=>i("probes"));Q(h,v=>{e(C)&&v(y)})}var _=$(h,2);{var M=v=>{ku(v,{get allCases(){return e(n)}})},F=j(()=>i("performance"));Q(_,v=>{e(F)&&v(M)})}var T=$(_,2);{var q=v=>{hd(v,{get allCases(){return e(n)}})},I=j(()=>i("compare"));Q(T,v=>{e(I)&&v(q)})}var O=$(T,2);{var V=v=>{Gu(v,{get allCases(){return e(n)}})},G=j(()=>i("tail"));Q(O,v=>{e(G)&&v(V)})}var Z=$(O,2);{var ae=v=>{Td(v,{get allCases(){return e(n)}})},E=j(()=>i("errors"));Q(Z,v=>{e(E)&&v(ae)})}p(m);var R=$(m,2),H=$(k(R),2),D=k(H);p(H),p(R),J(()=>we(D,"src",cl)),u(t,d),Ae()}export{Bd as component}; diff --git a/frontend/dist/_app/version.json b/frontend/dist/_app/version.json index 223df18..5535285 100644 --- a/frontend/dist/_app/version.json +++ b/frontend/dist/_app/version.json @@ -1 +1 @@ -{"version":"1785259782195"} \ No newline at end of file +{"version":"1789130391568"} \ No newline at end of file diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 7db76cd..c32cd83 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -5,11 +5,11 @@ csauto by Simvia - - + + - + @@ -20,15 +20,15 @@