From 108f08645cc2cd5e6a9792ff6c0fcc440ad839a8 Mon Sep 17 00:00:00 2001 From: space Date: Sun, 10 May 2026 12:46:33 +0200 Subject: [PATCH] initial Commit --- .gitignore | 29 + Box.f3d | Bin 0 -> 234655 bytes Insert (first test).f3d | Bin 0 -> 110651 bytes README.md | 100 ++ backend/__init__.py | 2 + backend/database.py | 366 +++++ backend/main.py | 251 +++ backend/models.py | 62 + backend/services/actions.py | 155 ++ backend/services/apps.py | 141 ++ backend/services/pico.py | 47 + backend/services/plugins.py | 119 ++ backend/services/serial_service.py | 78 + backend/services/websocket_manager.py | 37 + button_log.txt | 2068 +++++++++++++++++++++++++ exports/box.stl | 702 +++++++++ exports/insert first test .stl | Bin 0 -> 10684 bytes frontend/index.html | 13 + frontend/package-lock.json | 1901 +++++++++++++++++++++++ frontend/package.json | 27 + frontend/src/App.tsx | 970 ++++++++++++ frontend/src/api.ts | 36 + frontend/src/lucide-react.d.ts | 26 + frontend/src/main.tsx | 11 + frontend/src/styles.css | 469 ++++++ frontend/src/types.ts | 89 ++ frontend/tsconfig.json | 22 + frontend/vite.config.ts | 18 + pc/listen_buttons.py | 69 + pico/main.py | 43 + plugins/clipboard_tools.py | 279 ++++ plugins/http_requests.py | 134 ++ plugins/media_controls.py | 90 ++ plugins/obs_integration.py | 40 + requirements.txt | 8 + tests/test_backend.py | 286 ++++ 36 files changed, 8688 insertions(+) create mode 100644 .gitignore create mode 100644 Box.f3d create mode 100644 Insert (first test).f3d create mode 100644 README.md create mode 100644 backend/__init__.py create mode 100644 backend/database.py create mode 100644 backend/main.py create mode 100644 backend/models.py create mode 100644 backend/services/actions.py create mode 100644 backend/services/apps.py create mode 100644 backend/services/pico.py create mode 100644 backend/services/plugins.py create mode 100644 backend/services/serial_service.py create mode 100644 backend/services/websocket_manager.py create mode 100644 button_log.txt create mode 100644 exports/box.stl create mode 100644 exports/insert first test .stl create mode 100644 frontend/index.html create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/src/App.tsx create mode 100644 frontend/src/api.ts create mode 100644 frontend/src/lucide-react.d.ts create mode 100644 frontend/src/main.tsx create mode 100644 frontend/src/styles.css create mode 100644 frontend/src/types.ts create mode 100644 frontend/tsconfig.json create mode 100644 frontend/vite.config.ts create mode 100644 pc/listen_buttons.py create mode 100644 pico/main.py create mode 100644 plugins/clipboard_tools.py create mode 100644 plugins/http_requests.py create mode 100644 plugins/media_controls.py create mode 100644 plugins/obs_integration.py create mode 100644 requirements.txt create mode 100644 tests/test_backend.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ff4cb2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# Python +__pycache__/ +*.py[cod] +*.pyd +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +.coverage +.coverage.* +.venv/ +venv/ +env/ + +# Local app data +data/ + +# Frontend +frontend/node_modules/ +frontend/dist/ +frontend/.vite/ +frontend/*.tsbuildinfo + +# Logs +*.log +!button_log.txt + +# OS / editors +.DS_Store +Thumbs.db diff --git a/Box.f3d b/Box.f3d new file mode 100644 index 0000000000000000000000000000000000000000..e8fe44b151cd62a59fe5d47fc3cd745c95171158 GIT binary patch literal 234655 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

  • Gv-36Nc}8sJb!7}`W4 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

    GC-MJ&c!e01q)6^xdK>{ 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

    ~DzINbBK>a{fW_a!s3z#z2(BgTsra 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 PkM;FZuMzwj9{~RgU%ERz literal 0 HcmV?d00001 diff --git a/Insert (first test).f3d b/Insert (first test).f3d new file mode 100644 index 0000000000000000000000000000000000000000..ce1dfc626a1329a0256c4afd878e70e3a45614f8 GIT binary patch literal 110651 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 KcQere81P@Pl+FVH literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff5e71d --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# Custom Streamdeck Button Prototype + +This project is now a local Stream Deck-style control app for the 10-button Pico prototype. + +The Pico firmware still prints the same USB serial JSON events. The new backend consumes those events, stores configuration in SQLite, executes actions, loads backend plugins, and serves the built React UI. + +## Button Wiring + +Button order is the order you gave: + +1. GP28 +2. GP27 +3. GP26 +4. GP22 +5. GP21 +6. GP20 +7. GP18 +8. GP19 +9. GP17 +10. GP16 + +The other leg of every button goes to GND. The Pico script uses internal pull-ups, so a pressed button reads as LOW. + +## Files + +- `pico/main.py`: MicroPython code that runs on the Pico and prints button events over USB serial. +- `pc/listen_buttons.py`: PC listener that reads serial events and appends them to `button_log.txt`. +- `backend/`: FastAPI backend, WebSocket events, SQLite state, action engine, app discovery, plugin loading. +- `frontend/`: React + Vite + Tailwind UI. +- `plugins/`: Backend Python plugins. Each plugin exposes a top-level `PLUGIN` object. + +## Run The App + +Install Python dependencies: + +```powershell +python -m pip install -r requirements.txt +``` + +Install and build the UI: + +```powershell +cd frontend +npm install +npm run build +cd .. +``` + +Start the backend and open `http://127.0.0.1:8000/`: + +```powershell +python -m uvicorn backend.main:app --host 127.0.0.1 --port 8000 +``` + +For frontend dev mode, run the backend above and then: + +```powershell +cd frontend +npm run dev +``` + +## Legacy Listener + +```powershell +python .\pc\listen_buttons.py +``` + +If auto-detect fails: + +```powershell +python .\pc\listen_buttons.py --port COM5 +``` + +## Plugin Shape + +Backend plugins live in `plugins/` and expose `PLUGIN`. + +```python +class MyPlugin: + name = "My Plugin" + desc = "Does a thing" + actions = [ + { + "id": "do_thing", + "name": "Do Thing", + "fields": [{"id": "value", "label": "Value", "type": "text"}], + } + ] + + def on_load(self, ctx): + pass + + def on_event(self, ctx, event): + pass + + def execute_action(self, ctx, action_id, config, event): + pass + +PLUGIN = MyPlugin() +``` diff --git a/backend/__init__.py b/backend/__init__.py new file mode 100644 index 0000000..f716bc1 --- /dev/null +++ b/backend/__init__.py @@ -0,0 +1,2 @@ +"""Custom Streamdeck backend package.""" + diff --git a/backend/database.py b/backend/database.py new file mode 100644 index 0000000..76b31a3 --- /dev/null +++ b/backend/database.py @@ -0,0 +1,366 @@ +from __future__ import annotations + +import json +import sqlite3 +import uuid +from datetime import UTC, datetime +from pathlib import Path +from typing import Any + + +ROOT = Path(__file__).resolve().parent.parent +DEFAULT_DB = ROOT / "data" / "streamdeck.sqlite" + + +def utc_now() -> str: + return datetime.now(UTC).isoformat(timespec="seconds").replace("+00:00", "Z") + + +class Database: + def __init__(self, path: Path = DEFAULT_DB): + self.path = path + self.path.parent.mkdir(parents=True, exist_ok=True) + self.conn = sqlite3.connect(self.path, check_same_thread=False) + self.conn.row_factory = sqlite3.Row + self.conn.execute("PRAGMA foreign_keys = ON") + self.migrate() + self.ensure_defaults() + + def migrate(self) -> None: + self.conn.executescript( + """ + CREATE TABLE IF NOT EXISTS settings ( + key TEXT PRIMARY KEY, + value TEXT NOT NULL + ); + + CREATE TABLE IF NOT EXISTS profiles ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + created_at TEXT NOT NULL + ); + + CREATE TABLE IF NOT EXISTS folders ( + id TEXT PRIMARY KEY, + profile_id TEXT NOT NULL, + parent_id TEXT, + name TEXT NOT NULL, + is_root INTEGER NOT NULL DEFAULT 0, + created_at TEXT NOT NULL, + FOREIGN KEY(profile_id) REFERENCES profiles(id) ON DELETE CASCADE, + FOREIGN KEY(parent_id) REFERENCES folders(id) ON DELETE CASCADE + ); + + CREATE TABLE IF NOT EXISTS buttons ( + id TEXT PRIMARY KEY, + profile_id TEXT NOT NULL, + folder_id TEXT NOT NULL, + position INTEGER NOT NULL, + physical_button INTEGER NOT NULL, + label TEXT NOT NULL DEFAULT '', + color TEXT NOT NULL DEFAULT '#111827', + icon TEXT NOT NULL DEFAULT '', + trigger_mode TEXT NOT NULL DEFAULT 'down', + action_type TEXT NOT NULL DEFAULT 'noop', + action_config TEXT NOT NULL DEFAULT '{}', + updated_at TEXT NOT NULL, + UNIQUE(folder_id, position), + UNIQUE(folder_id, physical_button), + FOREIGN KEY(profile_id) REFERENCES profiles(id) ON DELETE CASCADE, + FOREIGN KEY(folder_id) REFERENCES folders(id) ON DELETE CASCADE + ); + + CREATE TABLE IF NOT EXISTS manual_apps ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + path TEXT NOT NULL, + args TEXT, + created_at TEXT NOT NULL + ); + + CREATE TABLE IF NOT EXISTS event_history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + created_at TEXT NOT NULL, + event_type TEXT NOT NULL, + payload TEXT NOT NULL + ); + """ + ) + self.conn.commit() + + def ensure_defaults(self) -> None: + if not self.get_setting("click_check"): + self.set_setting("click_check", False) + if not self.get_setting("serial_port"): + self.set_setting("serial_port", None) + profile = self.conn.execute("SELECT * FROM profiles LIMIT 1").fetchone() + if profile is None: + profile_id = self.create_profile("Default", make_active=False) + self.set_setting("active_profile_id", profile_id) + root_id = self.get_root_folder(profile_id)["id"] + self.set_setting("active_folder_id", root_id) + else: + active_profile = self.get_setting("active_profile_id") or profile["id"] + self.set_setting("active_profile_id", active_profile) + active_folder = self.get_setting("active_folder_id") or self.get_root_folder(active_profile)["id"] + self.set_setting("active_folder_id", active_folder) + self.sync_physical_layouts() + + def row_to_dict(self, row: sqlite3.Row | None) -> dict[str, Any] | None: + return dict(row) if row else None + + def get_setting(self, key: str) -> Any: + row = self.conn.execute("SELECT value FROM settings WHERE key = ?", (key,)).fetchone() + return json.loads(row["value"]) if row else None + + def set_setting(self, key: str, value: Any) -> None: + self.conn.execute( + "INSERT INTO settings(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value", + (key, json.dumps(value)), + ) + self.conn.commit() + + def settings(self) -> dict[str, Any]: + rows = self.conn.execute("SELECT key, value FROM settings").fetchall() + return {row["key"]: json.loads(row["value"]) for row in rows} + + def create_profile(self, name: str, make_active: bool = True) -> str: + profile_id = str(uuid.uuid4()) + self.conn.execute( + "INSERT INTO profiles(id, name, created_at) VALUES(?, ?, ?)", + (profile_id, name, utc_now()), + ) + root_id = str(uuid.uuid4()) + self.conn.execute( + "INSERT INTO folders(id, profile_id, parent_id, name, is_root, created_at) VALUES(?, ?, NULL, ?, 1, ?)", + (root_id, profile_id, "Root", utc_now()), + ) + self._seed_buttons(profile_id, root_id) + self.conn.commit() + self.sync_physical_layouts() + if make_active: + self.set_setting("active_profile_id", profile_id) + self.set_setting("active_folder_id", root_id) + return profile_id + + def update_profile(self, profile_id: str, name: str | None = None, active: bool | None = None) -> None: + if name is not None: + self.conn.execute("UPDATE profiles SET name = ? WHERE id = ?", (name, profile_id)) + if active: + self.set_setting("active_profile_id", profile_id) + self.set_setting("active_folder_id", self.get_root_folder(profile_id)["id"]) + self.conn.commit() + + def delete_profile(self, profile_id: str) -> None: + if profile_id == self.first_profile()["id"]: + raise ValueError("Cannot delete the first profile because it owns the hardware layout.") + count = self.conn.execute("SELECT COUNT(*) AS count FROM profiles").fetchone()["count"] + if count <= 1: + raise ValueError("Cannot delete the only profile.") + self.conn.execute("DELETE FROM profiles WHERE id = ?", (profile_id,)) + if self.get_setting("active_profile_id") == profile_id: + next_profile = self.conn.execute("SELECT id FROM profiles LIMIT 1").fetchone()["id"] + self.set_setting("active_profile_id", next_profile) + self.set_setting("active_folder_id", self.get_root_folder(next_profile)["id"]) + self.conn.commit() + + def create_folder(self, profile_id: str, parent_id: str | None, name: str) -> str: + parent_id = parent_id or self.get_root_folder(profile_id)["id"] + folder_id = str(uuid.uuid4()) + self.conn.execute( + "INSERT INTO folders(id, profile_id, parent_id, name, is_root, created_at) VALUES(?, ?, ?, ?, 0, ?)", + (folder_id, profile_id, parent_id, name, utc_now()), + ) + self._seed_buttons(profile_id, folder_id) + self.conn.commit() + self.sync_physical_layouts() + return folder_id + + def update_folder(self, folder_id: str, name: str | None = None, parent_id: str | None = None) -> None: + if name is not None: + self.conn.execute("UPDATE folders SET name = ? WHERE id = ?", (name, folder_id)) + if parent_id is not None: + self.conn.execute("UPDATE folders SET parent_id = ? WHERE id = ? AND is_root = 0", (parent_id, folder_id)) + self.conn.commit() + + def delete_folder(self, folder_id: str) -> None: + row = self.conn.execute("SELECT is_root, profile_id FROM folders WHERE id = ?", (folder_id,)).fetchone() + if not row: + return + if row["is_root"]: + raise ValueError("Cannot delete the root folder.") + self.conn.execute("DELETE FROM folders WHERE id = ?", (folder_id,)) + if self.get_setting("active_folder_id") == folder_id: + self.set_setting("active_folder_id", self.get_root_folder(row["profile_id"])["id"]) + self.conn.commit() + + def update_button(self, button_id: str, changes: dict[str, Any]) -> dict[str, Any]: + physical_button = changes.pop("physical_button", None) + current = self.get_button(button_id) + if physical_button is not None and int(physical_button) != current["physical_button"]: + if not self.can_edit_physical_layout(current["folder_id"]): + raise ValueError("Physical button layout can only be changed in the first profile's root folder.") + allowed = {"label", "color", "icon", "trigger_mode", "action_type"} + sets: list[str] = [] + values: list[Any] = [] + for key in allowed: + if key in changes and changes[key] is not None: + sets.append(f"{key} = ?") + values.append(changes[key]) + if "action_config" in changes and changes["action_config"] is not None: + sets.append("action_config = ?") + values.append(json.dumps(changes["action_config"])) + if sets: + sets.append("updated_at = ?") + values.append(utc_now()) + values.append(button_id) + self.conn.execute(f"UPDATE buttons SET {', '.join(sets)} WHERE id = ?", values) + self.conn.commit() + if physical_button is not None and int(physical_button) != current["physical_button"]: + self.move_physical_button(current["folder_id"], current["position"], int(physical_button)) + return self.get_button(button_id) + + def move_physical_button(self, folder_id: str, position: int, physical_button: int) -> None: + if not self.can_edit_physical_layout(folder_id): + raise ValueError("Physical button layout can only be changed in the first profile's root folder.") + if position < 1 or position > 10 or physical_button < 1 or physical_button > 10: + raise ValueError("Position and physical button must be between 1 and 10.") + + mapping = self.physical_layout_mapping() + old_physical = mapping[position] + old_position = next((slot for slot, physical in mapping.items() if physical == physical_button), None) + mapping[position] = physical_button + if old_position and old_position != position: + mapping[old_position] = old_physical + self.sync_physical_layouts(mapping) + + def get_button(self, button_id: str) -> dict[str, Any]: + row = self.conn.execute("SELECT * FROM buttons WHERE id = ?", (button_id,)).fetchone() + button = dict(row) + button["action_config"] = json.loads(button["action_config"]) + return button + + def find_button_for_event(self, profile_id: str, folder_id: str, physical_button: int) -> dict[str, Any] | None: + row = self.conn.execute( + "SELECT * FROM buttons WHERE profile_id = ? AND folder_id = ? AND physical_button = ?", + (profile_id, folder_id, physical_button), + ).fetchone() + if not row: + return None + button = dict(row) + button["action_config"] = json.loads(button["action_config"]) + return button + + def add_manual_app(self, name: str, path: str, args: str | None = None) -> dict[str, Any]: + app_id = str(uuid.uuid4()) + self.conn.execute( + "INSERT INTO manual_apps(id, name, path, args, created_at) VALUES(?, ?, ?, ?, ?)", + (app_id, name, path, args, utc_now()), + ) + self.conn.commit() + return {"id": app_id, "name": name, "path": path, "args": args, "source": "manual"} + + def manual_apps(self) -> list[dict[str, Any]]: + return [dict(row) | {"source": "manual"} for row in self.conn.execute("SELECT * FROM manual_apps ORDER BY name").fetchall()] + + def add_event(self, event_type: str, payload: dict[str, Any]) -> None: + self.conn.execute( + "INSERT INTO event_history(created_at, event_type, payload) VALUES(?, ?, ?)", + (utc_now(), event_type, json.dumps(payload)), + ) + self.conn.commit() + + def state(self) -> dict[str, Any]: + settings = self.settings() + profiles = [dict(row) for row in self.conn.execute("SELECT * FROM profiles ORDER BY created_at").fetchall()] + folders = [dict(row) for row in self.conn.execute("SELECT * FROM folders ORDER BY is_root DESC, created_at").fetchall()] + buttons = [] + for row in self.conn.execute("SELECT * FROM buttons ORDER BY folder_id, position").fetchall(): + button = dict(row) + button["action_config"] = json.loads(button["action_config"]) + buttons.append(button) + return { + "settings": settings, + "profiles": profiles, + "folders": folders, + "buttons": buttons, + "layout": { + "canonical_profile_id": self.first_profile()["id"], + "canonical_folder_id": self.canonical_layout_folder()["id"], + "mapping": self.physical_layout_mapping(), + }, + } + + def get_root_folder(self, profile_id: str) -> dict[str, Any]: + row = self.conn.execute("SELECT * FROM folders WHERE profile_id = ? AND is_root = 1", (profile_id,)).fetchone() + return dict(row) + + def first_profile(self) -> dict[str, Any]: + row = self.conn.execute("SELECT * FROM profiles ORDER BY created_at LIMIT 1").fetchone() + if row is None: + raise ValueError("No profiles exist.") + return dict(row) + + def canonical_layout_folder(self) -> dict[str, Any]: + return self.get_root_folder(self.first_profile()["id"]) + + def can_edit_physical_layout(self, folder_id: str) -> bool: + return folder_id == self.canonical_layout_folder()["id"] + + def physical_layout_mapping(self) -> dict[int, int]: + folder_id = self.canonical_layout_folder()["id"] + rows = self.conn.execute( + "SELECT position, physical_button FROM buttons WHERE folder_id = ? ORDER BY position", + (folder_id,), + ).fetchall() + mapping = {int(row["position"]): int(row["physical_button"]) for row in rows} + for position in range(1, 11): + mapping.setdefault(position, position) + return mapping + + def sync_physical_layouts(self, mapping: dict[int, int] | None = None) -> None: + if self.conn.execute("SELECT COUNT(*) AS count FROM profiles").fetchone()["count"] == 0: + return + mapping = mapping or self.physical_layout_mapping() + now = utc_now() + folders = self.conn.execute("SELECT id FROM folders").fetchall() + for folder in folders: + folder_id = folder["id"] + for position in range(1, 11): + self.conn.execute( + "UPDATE buttons SET physical_button = ?, updated_at = ? WHERE folder_id = ? AND position = ?", + (-position, now, folder_id, position), + ) + for position, physical_button in mapping.items(): + self.conn.execute( + "UPDATE buttons SET physical_button = ?, updated_at = ? WHERE folder_id = ? AND position = ?", + (physical_button, now, folder_id, position), + ) + self.conn.commit() + + def next_folder_id(self, profile_id: str, current_folder_id: str, direction: str = "next") -> str | None: + rows = self.conn.execute( + "SELECT id FROM folders WHERE profile_id = ? ORDER BY is_root DESC, created_at, name", + (profile_id,), + ).fetchall() + folder_ids = [row["id"] for row in rows] + if not folder_ids: + return None + if current_folder_id not in folder_ids: + return folder_ids[0] + offset = -1 if direction == "previous" else 1 + current_index = folder_ids.index(current_folder_id) + return folder_ids[(current_index + offset) % len(folder_ids)] + + def _seed_buttons(self, profile_id: str, folder_id: str) -> None: + now = utc_now() + for position in range(1, 11): + self.conn.execute( + """ + INSERT INTO buttons( + id, profile_id, folder_id, position, physical_button, label, + color, icon, trigger_mode, action_type, action_config, updated_at + ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, 'down', 'noop', '{}', ?) + """, + (str(uuid.uuid4()), profile_id, folder_id, position, position, f"Button {position}", "#111827", "", now), + ) diff --git a/backend/main.py b/backend/main.py new file mode 100644 index 0000000..c94e58a --- /dev/null +++ b/backend/main.py @@ -0,0 +1,251 @@ +from __future__ import annotations + +from contextlib import asynccontextmanager +from pathlib import Path +from typing import Any + +from fastapi import FastAPI, HTTPException, WebSocket, WebSocketDisconnect +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import FileResponse +from fastapi.staticfiles import StaticFiles + +from backend.database import Database +from backend.models import ( + ActionTest, + ButtonUpdate, + FolderCreate, + FolderUpdate, + ManualAppCreate, + ProfileCreate, + ProfileUpdate, + SettingsUpdate, + WebSocketCommand, +) +from backend.services.actions import ActionEngine +from backend.services.apps import AppDiscovery +from backend.services.plugins import PluginContext, PluginManager +from backend.services.serial_service import SerialService +from backend.services.websocket_manager import WebSocketManager + + +ROOT = Path(__file__).resolve().parent.parent +FRONTEND_DIST = ROOT / "frontend" / "dist" +PLUGINS_ROOT = ROOT / "plugins" + + +class Runtime: + def __init__(self) -> None: + self.db = Database() + self.ws = WebSocketManager() + self.plugins = PluginManager(PLUGINS_ROOT) + self.actions = ActionEngine(self) + self.serial = SerialService(self) + self.apps = AppDiscovery(self.db) + + def load_plugins(self) -> None: + self.plugins.load_all(PluginContext(self)) + + def public_state(self) -> dict[str, Any]: + state = self.db.state() + state["plugins"] = self.plugins.public_plugins() + state["apps"] = self.apps.discover() + state["device"] = {"connected_port": self.serial.connected_port} + return state + + +runtime = Runtime() + + +@asynccontextmanager +async def lifespan(app: FastAPI): + runtime.load_plugins() + runtime.serial.start() + await runtime.ws.broadcast("plugins.loaded", {"plugins": runtime.plugins.public_plugins()}) + try: + yield + finally: + await runtime.serial.stop() + + +app = FastAPI(title="Custom Streamdeck", lifespan=lifespan) +app.add_middleware( + CORSMiddleware, + allow_origins=["http://localhost:5173", "http://127.0.0.1:5173"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + + +@app.get("/api/state") +def get_state() -> dict[str, Any]: + return runtime.public_state() + + +@app.put("/api/settings") +async def update_settings(payload: SettingsUpdate) -> dict[str, Any]: + restart_serial = False + for key, value in payload.model_dump(exclude_unset=True).items(): + if value is not None: + runtime.db.set_setting(key, value) + if key == "serial_port": + restart_serial = True + if restart_serial: + await runtime.serial.restart() + state = runtime.public_state() + await runtime.ws.broadcast("state.updated", state) + return state + + +@app.get("/api/apps") +def get_apps() -> list[dict[str, Any]]: + return runtime.apps.discover() + + +@app.post("/api/apps/manual") +async def add_manual_app(payload: ManualAppCreate) -> dict[str, Any]: + app_entry = runtime.db.add_manual_app(payload.name, payload.path, payload.args) + await runtime.ws.broadcast("state.updated", runtime.public_state()) + return app_entry + + +@app.get("/api/plugins") +def get_plugins() -> list[dict[str, Any]]: + return runtime.plugins.public_plugins() + + +@app.post("/api/plugins/reload") +async def reload_plugins() -> list[dict[str, Any]]: + runtime.load_plugins() + plugins = runtime.plugins.public_plugins() + await runtime.ws.broadcast("plugins.loaded", {"plugins": plugins}) + await runtime.ws.broadcast("state.updated", runtime.public_state()) + return plugins + + +@app.post("/api/profiles") +async def create_profile(payload: ProfileCreate) -> dict[str, Any]: + runtime.db.create_profile(payload.name) + state = runtime.public_state() + await runtime.ws.broadcast("state.updated", state) + return state + + +@app.put("/api/profiles/{profile_id}") +async def update_profile(profile_id: str, payload: ProfileUpdate) -> dict[str, Any]: + runtime.db.update_profile(profile_id, payload.name, payload.active) + state = runtime.public_state() + await runtime.ws.broadcast("state.updated", state) + return state + + +@app.delete("/api/profiles/{profile_id}") +async def delete_profile(profile_id: str) -> dict[str, Any]: + try: + runtime.db.delete_profile(profile_id) + except ValueError as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + state = runtime.public_state() + await runtime.ws.broadcast("state.updated", state) + return state + + +@app.post("/api/folders") +async def create_folder(payload: FolderCreate) -> dict[str, Any]: + runtime.db.create_folder(payload.profile_id, payload.parent_id, payload.name) + state = runtime.public_state() + await runtime.ws.broadcast("state.updated", state) + return state + + +@app.put("/api/folders/{folder_id}") +async def update_folder(folder_id: str, payload: FolderUpdate) -> dict[str, Any]: + runtime.db.update_folder(folder_id, payload.name, payload.parent_id) + state = runtime.public_state() + await runtime.ws.broadcast("state.updated", state) + return state + + +@app.delete("/api/folders/{folder_id}") +async def delete_folder(folder_id: str) -> dict[str, Any]: + try: + runtime.db.delete_folder(folder_id) + except ValueError as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + state = runtime.public_state() + await runtime.ws.broadcast("state.updated", state) + return state + + +@app.put("/api/buttons/{button_id}") +async def update_button(button_id: str, payload: ButtonUpdate) -> dict[str, Any]: + try: + button = runtime.db.update_button(button_id, payload.model_dump(exclude_unset=True)) + except Exception as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + await runtime.ws.broadcast("state.updated", runtime.public_state()) + return button + + +@app.post("/api/actions/test") +async def test_action(payload: ActionTest) -> dict[str, str]: + if runtime.db.get_setting("click_check"): + raise HTTPException(status_code=409, detail="Click-check mode is enabled; actions are blocked.") + await runtime.actions.execute(payload.action_type, payload.action_config) + return {"status": "ok"} + + +@app.websocket("/ws") +async def websocket_endpoint(websocket: WebSocket) -> None: + await runtime.ws.connect(websocket) + await websocket.send_json({"type": "state.updated", "payload": runtime.public_state()}) + try: + while True: + command = WebSocketCommand.model_validate(await websocket.receive_json()) + await handle_ws_command(command) + except WebSocketDisconnect: + await runtime.ws.disconnect(websocket) + + +async def handle_ws_command(command: WebSocketCommand) -> None: + payload = command.payload + if command.type == "set_active_profile": + runtime.db.update_profile(str(payload["profile_id"]), active=True) + elif command.type == "set_active_folder": + runtime.db.set_setting("active_folder_id", str(payload["folder_id"])) + elif command.type == "move_button": + folder_id = str(payload.get("folder_id") or runtime.db.get_setting("active_folder_id")) + try: + runtime.db.move_physical_button(folder_id, int(payload["position"]), int(payload["physical_button"])) + except ValueError as exc: + await runtime.ws.broadcast("action.failed", {"error": str(exc)}) + else: + await runtime.ws.broadcast("button.mapped", payload) + elif command.type == "toggle_click_check": + runtime.db.set_setting("click_check", bool(payload["enabled"])) + elif command.type == "test_action": + if runtime.db.get_setting("click_check"): + await runtime.ws.broadcast("action.failed", {"error": "Click-check mode is enabled; actions are blocked."}) + else: + await runtime.actions.execute(str(payload["action_type"]), payload.get("action_config", {})) + await runtime.ws.broadcast("state.updated", runtime.public_state()) + + +if FRONTEND_DIST.exists(): + assets = FRONTEND_DIST / "assets" + if assets.exists(): + app.mount("/assets", StaticFiles(directory=assets), name="assets") + + +@app.get("/{full_path:path}") +def serve_frontend(full_path: str): + index = FRONTEND_DIST / "index.html" + target = FRONTEND_DIST / full_path + if full_path and target.is_file(): + return FileResponse(target) + if index.exists(): + return FileResponse(index) + return { + "message": "Frontend has not been built yet. Run npm install and npm run build in frontend/.", + "api": "/api/state", + } diff --git a/backend/models.py b/backend/models.py new file mode 100644 index 0000000..cad63be --- /dev/null +++ b/backend/models.py @@ -0,0 +1,62 @@ +from __future__ import annotations + +from typing import Any, Literal + +from pydantic import BaseModel, Field + + +TriggerMode = Literal["down", "up"] +ActionType = Literal["noop", "key_combo", "chain", "app_launch", "folder", "folder_rotation", "plugin"] + + +class SettingsUpdate(BaseModel): + serial_port: str | None = None + click_check: bool | None = None + active_profile_id: str | None = None + active_folder_id: str | None = None + + +class ProfileCreate(BaseModel): + name: str = Field(min_length=1, max_length=80) + + +class ProfileUpdate(BaseModel): + name: str | None = Field(default=None, min_length=1, max_length=80) + active: bool | None = None + + +class FolderCreate(BaseModel): + profile_id: str + parent_id: str | None = None + name: str = Field(min_length=1, max_length=80) + + +class FolderUpdate(BaseModel): + name: str | None = Field(default=None, min_length=1, max_length=80) + parent_id: str | None = None + + +class ButtonUpdate(BaseModel): + label: str | None = None + color: str | None = None + icon: str | None = None + physical_button: int | None = Field(default=None, ge=1, le=10) + trigger_mode: TriggerMode | None = None + action_type: ActionType | None = None + action_config: dict[str, Any] | None = None + + +class ManualAppCreate(BaseModel): + name: str = Field(min_length=1, max_length=160) + path: str = Field(min_length=1) + args: str | None = None + + +class ActionTest(BaseModel): + action_type: ActionType + action_config: dict[str, Any] = Field(default_factory=dict) + + +class WebSocketCommand(BaseModel): + type: str + payload: dict[str, Any] = Field(default_factory=dict) diff --git a/backend/services/actions.py b/backend/services/actions.py new file mode 100644 index 0000000..5a29fe8 --- /dev/null +++ b/backend/services/actions.py @@ -0,0 +1,155 @@ +from __future__ import annotations + +import asyncio +from typing import Any + +from backend.services.apps import AppDiscovery +from backend.services.plugins import PluginContext + + +SPECIAL_KEYS = { + "ctrl": "ctrl", + "control": "ctrl", + "shift": "shift", + "alt": "alt", + "cmd": "cmd", + "win": "cmd", + "enter": "enter", + "return": "enter", + "esc": "esc", + "escape": "esc", + "tab": "tab", + "space": "space", + "backspace": "backspace", + "delete": "delete", + "up": "up", + "down": "down", + "left": "left", + "right": "right", +} + + +class KeyPresser: + def __init__(self) -> None: + self._controller = None + self._key = None + + def _ensure(self) -> None: + if self._controller is not None: + return + try: + from pynput.keyboard import Controller, Key + except ImportError as exc: + raise RuntimeError("pynput is not installed. Run: python -m pip install -r requirements.txt") from exc + self._controller = Controller() + self._key = Key + + async def press_combo(self, combo: str) -> None: + await asyncio.to_thread(self._press_combo_sync, combo) + + def _press_combo_sync(self, combo: str) -> None: + self._ensure() + parts = [part.strip().lower() for part in combo.replace(" ", "").split("+") if part.strip()] + if not parts: + raise ValueError("Key combo is empty.") + keys = [self._resolve_key(part) for part in parts] + for key in keys[:-1]: + self._controller.press(key) + self._controller.press(keys[-1]) + self._controller.release(keys[-1]) + for key in reversed(keys[:-1]): + self._controller.release(key) + + def _resolve_key(self, name: str) -> Any: + mapped = SPECIAL_KEYS.get(name, name) + if len(mapped) == 1: + return mapped + key = getattr(self._key, mapped, None) + if key is None: + raise ValueError(f"Unknown key '{name}'.") + return key + + +class ActionEngine: + def __init__(self, app: Any): + self.app = app + self.keys = KeyPresser() + self.apps = AppDiscovery(app.db) + + async def handle_button_event(self, event: dict[str, Any]) -> None: + settings = self.app.db.settings() + profile_id = settings.get("active_profile_id") + folder_id = settings.get("active_folder_id") + if not profile_id or not folder_id: + return + + button = self.app.db.find_button_for_event(profile_id, folder_id, int(event["button"])) + payload = {"event": event, "button": button} + await self.app.ws.broadcast(f"button.{event['event']}", payload) + + await self.app.plugins.on_event(PluginContext(self.app), {"type": f"button.{event['event']}", "payload": payload}) + + if settings.get("click_check"): + await self.app.ws.broadcast("click_check.event", payload) + return + + if not button or button["trigger_mode"] != event["event"]: + return + await self.execute(button["action_type"], button["action_config"], event, source_button=button) + + async def execute(self, action_type: str, config: dict[str, Any], event: dict[str, Any] | None = None, source_button: dict[str, Any] | None = None) -> None: + action_id = config.get("id") or action_type + payload = {"action_type": action_type, "action_config": config, "button": source_button, "event": event} + await self.app.ws.broadcast("action.started", payload) + try: + await self._execute(action_type, config, event) + except Exception as exc: + await self.app.ws.broadcast("action.failed", payload | {"error": str(exc)}) + raise + await self.app.ws.broadcast("action.finished", payload | {"id": action_id}) + + async def _execute(self, action_type: str, config: dict[str, Any], event: dict[str, Any] | None) -> None: + if action_type == "noop": + return + if action_type == "key_combo": + await self.keys.press_combo(str(config.get("combo", ""))) + return + if action_type == "chain": + for step in config.get("steps", []): + await self._execute(step.get("action_type", "noop"), step.get("action_config", {}), event) + delay_ms = int(step.get("delay_ms", 0) or 0) + if delay_ms > 0: + await asyncio.sleep(delay_ms / 1000) + return + if action_type == "app_launch": + await asyncio.to_thread(self.apps.launch, config) + return + if action_type == "folder": + folder_id = config.get("folder_id") + if not folder_id: + raise ValueError("Folder action requires folder_id.") + self.app.db.set_setting("active_folder_id", folder_id) + await self.app.ws.broadcast("state.updated", self.app.public_state()) + return + if action_type == "folder_rotation": + settings = self.app.db.settings() + profile_id = settings.get("active_profile_id") + folder_id = settings.get("active_folder_id") + if not profile_id or not folder_id: + raise ValueError("Folder rotation requires an active profile and folder.") + next_folder_id = self.app.db.next_folder_id(profile_id, folder_id, str(config.get("direction", "next"))) + if not next_folder_id: + raise ValueError("No folders are available for rotation.") + self.app.db.set_setting("active_folder_id", next_folder_id) + await self.app.ws.broadcast("state.updated", self.app.public_state()) + return + if action_type == "plugin": + await self.app.plugins.execute_action( + PluginContext(self.app), + str(config.get("plugin_id", "")), + str(config.get("action_id", "")), + config.get("fields", {}), + event, + ) + return + raise ValueError(f"Unknown action type '{action_type}'.") diff --git a/backend/services/apps.py b/backend/services/apps.py new file mode 100644 index 0000000..5db9846 --- /dev/null +++ b/backend/services/apps.py @@ -0,0 +1,141 @@ +from __future__ import annotations + +import os +import subprocess +from pathlib import Path +from typing import Any + +from backend.database import Database + + +def _start_menu_dirs() -> list[Path]: + paths = [ + Path(os.environ.get("ProgramData", "")) / "Microsoft" / "Windows" / "Start Menu" / "Programs", + Path(os.environ.get("APPDATA", "")) / "Microsoft" / "Windows" / "Start Menu" / "Programs", + ] + return [path for path in paths if path.exists()] + + +class AppDiscovery: + def __init__(self, db: Database): + self.db = db + + def discover(self) -> list[dict[str, Any]]: + apps: list[dict[str, Any]] = [] + apps.extend(self._start_menu_apps()) + apps.extend(self._registry_apps()) + apps.extend(self.db.manual_apps()) + return self._dedupe(apps) + + def launch(self, config: dict[str, Any]) -> None: + path = config.get("path") + args = config.get("args") or "" + if not path: + raise ValueError("App launch action requires a path.") + if path.lower().endswith((".lnk", ".url", ".bat", ".cmd")): + os.startfile(path) # type: ignore[attr-defined] + return + if Path(path).suffix.lower() == ".exe": + subprocess.Popen([path, *self._split_args(args)], close_fds=True) + return + os.startfile(path) # type: ignore[attr-defined] + + def _start_menu_apps(self) -> list[dict[str, Any]]: + apps: list[dict[str, Any]] = [] + for root in _start_menu_dirs(): + for shortcut in root.rglob("*.lnk"): + apps.append( + { + "id": f"shortcut:{shortcut}", + "name": shortcut.stem, + "path": str(shortcut), + "args": None, + "source": "start_menu", + } + ) + return apps + + def _registry_apps(self) -> list[dict[str, Any]]: + apps: list[dict[str, Any]] = [] + try: + import winreg + except ImportError: + return apps + + roots = [ + (winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"), + (winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"), + (winreg.HKEY_CURRENT_USER, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"), + ] + for hive, key_path in roots: + try: + key = winreg.OpenKey(hive, key_path) + except OSError: + continue + with key: + for index in range(winreg.QueryInfoKey(key)[0]): + try: + sub_name = winreg.EnumKey(key, index) + sub_key = winreg.OpenKey(key, sub_name) + except OSError: + continue + with sub_key: + name = self._reg_value(sub_key, "DisplayName") + if not name: + continue + path = self._best_registry_path(sub_key) + if not path: + continue + apps.append( + { + "id": f"registry:{sub_name}", + "name": name, + "path": path, + "args": None, + "source": "registry", + } + ) + return apps + + def _best_registry_path(self, key: Any) -> str | None: + candidates = [ + self._reg_value(key, "InstallLocation"), + self._reg_value(key, "DisplayIcon"), + ] + for candidate in candidates: + if not candidate: + continue + cleaned = candidate.strip('"').split(",")[0] + path = Path(cleaned) + if path.is_file() and path.suffix.lower() == ".exe": + return str(path) + if path.is_dir(): + exes = sorted(path.glob("*.exe")) + if exes: + return str(exes[0]) + return None + + def _reg_value(self, key: Any, name: str) -> str | None: + try: + value, _ = __import__("winreg").QueryValueEx(key, name) + except OSError: + return None + return str(value) if value else None + + def _dedupe(self, apps: list[dict[str, Any]]) -> list[dict[str, Any]]: + seen: set[tuple[str, str]] = set() + result: list[dict[str, Any]] = [] + for app in sorted(apps, key=lambda item: item["name"].lower()): + key = (app["name"].lower(), str(app["path"]).lower()) + if key in seen: + continue + seen.add(key) + result.append(app) + return result + + def _split_args(self, args: str) -> list[str]: + if not args: + return [] + import shlex + + return shlex.split(args, posix=False) diff --git a/backend/services/pico.py b/backend/services/pico.py new file mode 100644 index 0000000..76a9126 --- /dev/null +++ b/backend/services/pico.py @@ -0,0 +1,47 @@ +from __future__ import annotations + +import json +from dataclasses import dataclass +from typing import Any + + +@dataclass(frozen=True) +class PicoEvent: + button: int + pin: int + event: str + pressed: bool + + def to_dict(self) -> dict[str, Any]: + return { + "button": self.button, + "pin": self.pin, + "event": self.event, + "pressed": self.pressed, + } + + +def parse_pico_line(raw_line: str) -> PicoEvent | None: + try: + payload = json.loads(raw_line) + except json.JSONDecodeError: + return None + + if not isinstance(payload, dict): + return None + if not {"button", "pin", "event", "pressed"}.issubset(payload): + return None + if payload["event"] not in {"down", "up"}: + return None + + try: + button = int(payload["button"]) + pin = int(payload["pin"]) + except (TypeError, ValueError): + return None + + if button < 1 or button > 10: + return None + + return PicoEvent(button=button, pin=pin, event=payload["event"], pressed=bool(payload["pressed"])) + diff --git a/backend/services/plugins.py b/backend/services/plugins.py new file mode 100644 index 0000000..50637b2 --- /dev/null +++ b/backend/services/plugins.py @@ -0,0 +1,119 @@ +from __future__ import annotations + +import importlib.util +import sys +from dataclasses import dataclass +from pathlib import Path +from typing import Any + + +@dataclass +class LoadedPlugin: + id: str + name: str + desc: str + version: str + actions: list[dict[str, Any]] + instance: Any | None + enabled: bool + error: str | None = None + + def public(self) -> dict[str, Any]: + return { + "id": self.id, + "name": self.name, + "desc": self.desc, + "version": self.version, + "actions": self.actions, + "enabled": self.enabled, + "error": self.error, + } + + +class PluginContext: + def __init__(self, app: Any): + self.app = app + self.db = app.db + self.broadcast = app.ws.broadcast + + +class PluginManager: + def __init__(self, root: Path): + self.root = root + self.plugins: dict[str, LoadedPlugin] = {} + + def load_all(self, ctx: PluginContext) -> None: + self.root.mkdir(parents=True, exist_ok=True) + self.plugins = {} + for path in sorted(self.root.iterdir()): + if path.name.startswith("_"): + continue + if path.is_file() and path.suffix == ".py": + self._load_path(path.stem, path, ctx) + elif path.is_dir() and (path / "__init__.py").exists(): + self._load_path(path.name, path / "__init__.py", ctx) + + def public_plugins(self) -> list[dict[str, Any]]: + return [plugin.public() for plugin in self.plugins.values()] + + async def on_event(self, ctx: PluginContext, event: dict[str, Any]) -> None: + for plugin in self.plugins.values(): + if not plugin.enabled or plugin.instance is None: + continue + hook = getattr(plugin.instance, "on_event", None) + if not hook: + continue + try: + result = hook(ctx, event) + if hasattr(result, "__await__"): + await result + except Exception as exc: + plugin.enabled = False + plugin.error = f"on_event failed: {exc}" + + async def execute_action(self, ctx: PluginContext, plugin_id: str, action_id: str, config: dict[str, Any], event: dict[str, Any] | None) -> None: + plugin = self.plugins.get(plugin_id) + if not plugin or not plugin.enabled or plugin.instance is None: + raise ValueError(f"Plugin '{plugin_id}' is not available.") + hook = getattr(plugin.instance, "execute_action", None) + if not hook: + raise ValueError(f"Plugin '{plugin_id}' does not expose execute_action.") + result = hook(ctx, action_id, config, event) + if hasattr(result, "__await__"): + await result + + def _load_path(self, plugin_id: str, path: Path, ctx: PluginContext) -> None: + try: + module_name = f"streamdeck_plugin_{plugin_id}" + spec = importlib.util.spec_from_file_location(module_name, path) + if spec is None or spec.loader is None: + raise RuntimeError("Could not create import spec.") + module = importlib.util.module_from_spec(spec) + sys.modules[module_name] = module + spec.loader.exec_module(module) + instance = getattr(module, "PLUGIN") + plugin = LoadedPlugin( + id=plugin_id, + name=str(getattr(instance, "name")), + desc=str(getattr(instance, "desc", "")), + version=str(getattr(instance, "version", "0.1.0")), + actions=list(getattr(instance, "actions", [])), + instance=instance, + enabled=True, + ) + on_load = getattr(instance, "on_load", None) + if on_load: + on_load(ctx) + self.plugins[plugin_id] = plugin + except Exception as exc: + self.plugins[plugin_id] = LoadedPlugin( + id=plugin_id, + name=plugin_id, + desc="Plugin failed to load.", + version="unknown", + actions=[], + instance=None, + enabled=False, + error=str(exc), + ) + diff --git a/backend/services/serial_service.py b/backend/services/serial_service.py new file mode 100644 index 0000000..60b3049 --- /dev/null +++ b/backend/services/serial_service.py @@ -0,0 +1,78 @@ +from __future__ import annotations + +import asyncio +from typing import Any + +import serial +import serial.tools.list_ports + +from backend.services.pico import parse_pico_line + + +DEFAULT_BAUD = 115200 + + +def find_pico_port() -> str | None: + for port in serial.tools.list_ports.comports(): + vid = port.vid + manufacturer = (port.manufacturer or "").lower() + description = (port.description or "").lower() + if vid == 0x2E8A or "pico" in description or "raspberry" in manufacturer: + return port.device + return None + + +class SerialService: + def __init__(self, app: Any): + self.app = app + self.task: asyncio.Task[None] | None = None + self.stop_event = asyncio.Event() + self.connected_port: str | None = None + + def start(self) -> None: + if self.task is None or self.task.done(): + self.stop_event.clear() + self.task = asyncio.create_task(self._run()) + + async def stop(self) -> None: + self.stop_event.set() + if self.task: + await asyncio.wait([self.task], timeout=2) + + async def restart(self) -> None: + await self.stop() + self.task = None + self.start() + + async def _run(self) -> None: + while not self.stop_event.is_set(): + port = self.app.db.get_setting("serial_port") or find_pico_port() + if not port: + self.connected_port = None + await self.app.ws.broadcast("serial.disconnected", {"reason": "Pico not found"}) + await asyncio.sleep(2) + continue + try: + await self._read_port(port) + except Exception as exc: + self.connected_port = None + await self.app.ws.broadcast("serial.disconnected", {"port": port, "error": str(exc)}) + await asyncio.sleep(2) + + async def _read_port(self, port: str) -> None: + with serial.Serial(port, DEFAULT_BAUD, timeout=1) as ser: + self.connected_port = port + await self.app.ws.broadcast("serial.connected", {"port": port, "baud": DEFAULT_BAUD}) + while not self.stop_event.is_set(): + raw = await asyncio.to_thread(ser.readline) + line = raw.decode("utf-8", errors="replace").strip() + if not line: + continue + event = parse_pico_line(line) + if event is None: + await self.app.ws.broadcast("serial.diagnostic", {"line": line}) + continue + payload = event.to_dict() + self.app.db.add_event(f"button.{payload['event']}", payload) + await self.app.actions.handle_button_event(payload) + diff --git a/backend/services/websocket_manager.py b/backend/services/websocket_manager.py new file mode 100644 index 0000000..e8ed367 --- /dev/null +++ b/backend/services/websocket_manager.py @@ -0,0 +1,37 @@ +from __future__ import annotations + +import asyncio +from typing import Any + +from fastapi import WebSocket + + +class WebSocketManager: + def __init__(self) -> None: + self._clients: set[WebSocket] = set() + self._lock = asyncio.Lock() + + async def connect(self, websocket: WebSocket) -> None: + await websocket.accept() + async with self._lock: + self._clients.add(websocket) + + async def disconnect(self, websocket: WebSocket) -> None: + async with self._lock: + self._clients.discard(websocket) + + async def broadcast(self, event_type: str, payload: dict[str, Any] | None = None) -> None: + message = {"type": event_type, "payload": payload or {}} + async with self._lock: + clients = list(self._clients) + stale: list[WebSocket] = [] + for client in clients: + try: + await client.send_json(message) + except Exception: + stale.append(client) + if stale: + async with self._lock: + for client in stale: + self._clients.discard(client) + diff --git a/button_log.txt b/button_log.txt new file mode 100644 index 0000000..b8c7762 --- /dev/null +++ b/button_log.txt @@ -0,0 +1,2068 @@ +2026-05-09T22:59:52 button=2 pin=GP27 event=down +2026-05-09T22:59:53 button=2 pin=GP27 event=up +2026-05-09T22:59:54 button=3 pin=GP26 event=down +2026-05-09T22:59:54 button=3 pin=GP26 event=up +2026-05-09T22:59:55 button=4 pin=GP22 event=down +2026-05-09T22:59:55 button=4 pin=GP22 event=up +2026-05-09T22:59:55 button=5 pin=GP21 event=down +2026-05-09T22:59:56 button=5 pin=GP21 event=up +2026-05-09T22:59:56 button=6 pin=GP20 event=down +2026-05-09T22:59:56 button=6 pin=GP20 event=up +2026-05-09T22:59:57 button=8 pin=GP19 event=down +2026-05-09T22:59:57 button=8 pin=GP19 event=up +2026-05-09T23:00:00 button=10 pin=GP16 event=down +2026-05-09T23:00:00 button=10 pin=GP16 event=up +2026-05-09T23:00:01 button=1 pin=GP28 event=down +2026-05-09T23:00:01 button=1 pin=GP28 event=up +2026-05-09T23:00:02 button=10 pin=GP16 event=down +2026-05-09T23:00:02 button=10 pin=GP16 event=up +2026-05-09T23:00:04 button=8 pin=GP19 event=down +2026-05-09T23:00:04 button=8 pin=GP19 event=up +2026-05-09T23:00:09 button=1 pin=GP28 event=down +2026-05-09T23:00:09 button=1 pin=GP28 event=up +2026-05-09T23:00:10 button=10 pin=GP16 event=down +2026-05-09T23:00:10 button=10 pin=GP16 event=up +2026-05-09T23:00:10 button=1 pin=GP28 event=down +2026-05-09T23:00:10 button=1 pin=GP28 event=up +2026-05-09T23:00:11 button=10 pin=GP16 event=down +2026-05-09T23:00:11 button=10 pin=GP16 event=up +2026-05-09T23:00:12 button=8 pin=GP19 event=down +2026-05-09T23:00:13 button=8 pin=GP19 event=up +2026-05-09T23:00:13 button=6 pin=GP20 event=down +2026-05-09T23:00:13 button=6 pin=GP20 event=up +2026-05-09T23:00:14 button=5 pin=GP21 event=down +2026-05-09T23:00:14 button=5 pin=GP21 event=up +2026-05-09T23:00:14 button=4 pin=GP22 event=down +2026-05-09T23:00:14 button=4 pin=GP22 event=up +2026-05-09T23:00:15 button=3 pin=GP26 event=down +2026-05-09T23:00:15 button=3 pin=GP26 event=up +2026-05-09T23:00:15 button=2 pin=GP27 event=down +2026-05-09T23:00:16 button=2 pin=GP27 event=up +2026-05-09T23:00:19 button=10 pin=GP16 event=down +2026-05-09T23:00:19 button=10 pin=GP16 event=up +2026-05-09T23:00:20 button=10 pin=GP16 event=down +2026-05-09T23:00:20 button=10 pin=GP16 event=up +2026-05-09T23:00:38 button=10 pin=GP16 event=down +2026-05-09T23:00:38 button=10 pin=GP16 event=up +2026-05-09T23:00:38 button=10 pin=GP16 event=down +2026-05-09T23:00:38 button=10 pin=GP16 event=up +2026-05-09T23:01:06 button=2 pin=GP27 event=down +2026-05-09T23:01:06 button=2 pin=GP27 event=up +2026-05-09T23:01:33 button=3 pin=GP26 event=down +2026-05-09T23:01:33 button=3 pin=GP26 event=up +2026-05-09T23:01:33 button=4 pin=GP22 event=down +2026-05-09T23:01:33 button=4 pin=GP22 event=up +2026-05-09T23:01:34 button=3 pin=GP26 event=down +2026-05-09T23:01:34 button=3 pin=GP26 event=up +2026-05-09T23:01:35 button=3 pin=GP26 event=down +2026-05-09T23:01:35 button=3 pin=GP26 event=up +2026-05-09T23:01:35 button=4 pin=GP22 event=down +2026-05-09T23:01:36 button=4 pin=GP22 event=up +2026-05-09T23:01:36 button=5 pin=GP21 event=down +2026-05-09T23:01:36 button=5 pin=GP21 event=up +2026-05-09T23:01:36 button=6 pin=GP20 event=down +2026-05-09T23:01:37 button=6 pin=GP20 event=up +2026-05-09T23:01:37 button=8 pin=GP19 event=down +2026-05-09T23:01:37 button=8 pin=GP19 event=up +2026-05-09T23:01:38 button=7 pin=GP18 event=down +2026-05-09T23:01:39 button=7 pin=GP18 event=up +2026-05-09T23:01:40 button=10 pin=GP16 event=down +2026-05-09T23:01:40 button=10 pin=GP16 event=up +2026-05-09T23:01:50 button=1 pin=GP28 event=down +2026-05-09T23:01:51 button=1 pin=GP28 event=up +2026-05-09T23:01:52 button=1 pin=GP28 event=down +2026-05-09T23:01:52 button=1 pin=GP28 event=up +2026-05-09T23:01:52 button=1 pin=GP28 event=down +2026-05-09T23:01:52 button=1 pin=GP28 event=up +2026-05-09T23:01:52 button=1 pin=GP28 event=down +2026-05-09T23:01:52 button=1 pin=GP28 event=up +2026-05-09T23:01:52 button=1 pin=GP28 event=down +2026-05-09T23:01:53 button=1 pin=GP28 event=up +2026-05-09T23:04:39 button=1 pin=GP28 event=down +2026-05-09T23:04:39 button=1 pin=GP28 event=up +2026-05-09T23:04:39 button=1 pin=GP28 event=down +2026-05-09T23:04:39 button=1 pin=GP28 event=up +2026-05-09T23:04:40 button=10 pin=GP16 event=down +2026-05-09T23:04:40 button=10 pin=GP16 event=up +2026-05-09T23:04:41 button=10 pin=GP16 event=down +2026-05-09T23:04:41 button=10 pin=GP16 event=up +2026-05-09T23:05:05 button=9 pin=GP17 event=down +2026-05-09T23:05:05 button=9 pin=GP17 event=up +2026-05-09T23:05:08 button=1 pin=GP28 event=down +2026-05-09T23:05:09 button=1 pin=GP28 event=up +2026-05-09T23:06:03 button=10 pin=GP16 event=down +2026-05-09T23:06:03 button=10 pin=GP16 event=up +2026-05-09T23:06:04 button=10 pin=GP16 event=down +2026-05-09T23:06:05 button=10 pin=GP16 event=up +2026-05-09T23:06:06 button=1 pin=GP28 event=down +2026-05-09T23:06:06 button=1 pin=GP28 event=up +2026-05-09T23:06:16 button=1 pin=GP28 event=down +2026-05-09T23:06:16 button=1 pin=GP28 event=up +2026-05-09T23:06:16 button=1 pin=GP28 event=down +2026-05-09T23:06:16 button=1 pin=GP28 event=up +2026-05-09T23:06:17 button=10 pin=GP16 event=down +2026-05-09T23:06:17 button=10 pin=GP16 event=up +2026-05-09T23:06:17 button=10 pin=GP16 event=down +2026-05-09T23:06:17 button=10 pin=GP16 event=up +2026-05-09T23:06:32 button=7 pin=GP18 event=down +2026-05-09T23:06:32 button=7 pin=GP18 event=up +2026-05-09T23:06:32 button=7 pin=GP18 event=down +2026-05-09T23:06:32 button=7 pin=GP18 event=up +2026-05-09T23:06:36 button=9 pin=GP17 event=down +2026-05-09T23:06:36 button=9 pin=GP17 event=up +2026-05-09T23:06:36 button=9 pin=GP17 event=down +2026-05-09T23:06:37 button=9 pin=GP17 event=up +2026-05-09T23:06:37 button=9 pin=GP17 event=down +2026-05-09T23:06:38 button=9 pin=GP17 event=up +2026-05-09T23:06:40 button=9 pin=GP17 event=down +2026-05-09T23:06:40 button=9 pin=GP17 event=up +2026-05-09T23:06:41 button=9 pin=GP17 event=down +2026-05-09T23:06:41 button=9 pin=GP17 event=up +2026-05-09T23:06:45 button=9 pin=GP17 event=down +2026-05-09T23:06:45 button=9 pin=GP17 event=up +2026-05-09T23:06:45 button=9 pin=GP17 event=down +2026-05-09T23:06:46 button=9 pin=GP17 event=up +2026-05-09T23:07:31 button=10 pin=GP16 event=down +2026-05-09T23:07:31 button=1 pin=GP28 event=down +2026-05-09T23:07:34 button=1 pin=GP28 event=up +2026-05-09T23:07:34 button=1 pin=GP28 event=down +2026-05-09T23:07:34 button=1 pin=GP28 event=up +2026-05-09T23:07:43 button=10 pin=GP16 event=up +2026-05-09T23:07:44 button=10 pin=GP16 event=down +2026-05-09T23:07:47 button=10 pin=GP16 event=up +2026-05-09T23:07:52 button=9 pin=GP17 event=down +2026-05-09T23:07:53 button=9 pin=GP17 event=up +2026-05-09T23:07:54 button=9 pin=GP17 event=down +2026-05-09T23:07:55 button=9 pin=GP17 event=up +2026-05-09T23:07:55 button=9 pin=GP17 event=down +2026-05-09T23:07:55 button=9 pin=GP17 event=up +2026-05-09T23:07:55 button=9 pin=GP17 event=down +2026-05-09T23:07:55 button=9 pin=GP17 event=up +2026-05-09T23:07:56 button=7 pin=GP18 event=down +2026-05-09T23:07:56 button=7 pin=GP18 event=up +2026-05-09T23:07:57 button=8 pin=GP19 event=down +2026-05-09T23:07:57 button=8 pin=GP19 event=up +2026-05-09T23:07:58 button=6 pin=GP20 event=down +2026-05-09T23:07:58 button=6 pin=GP20 event=up +2026-05-09T23:07:58 button=5 pin=GP21 event=down +2026-05-09T23:07:58 button=5 pin=GP21 event=up +2026-05-09T23:07:59 button=4 pin=GP22 event=down +2026-05-09T23:07:59 button=4 pin=GP22 event=up +2026-05-09T23:08:00 button=4 pin=GP22 event=down +2026-05-09T23:08:00 button=4 pin=GP22 event=up +2026-05-09T23:08:00 button=3 pin=GP26 event=down +2026-05-09T23:08:01 button=3 pin=GP26 event=up +2026-05-09T23:08:05 button=2 pin=GP27 event=down +2026-05-09T23:08:05 button=3 pin=GP26 event=down +2026-05-09T23:08:05 button=2 pin=GP27 event=up +2026-05-09T23:08:05 button=2 pin=GP27 event=down +2026-05-09T23:08:05 button=2 pin=GP27 event=up +2026-05-09T23:08:05 button=2 pin=GP27 event=down +2026-05-09T23:08:06 button=3 pin=GP26 event=up +2026-05-09T23:08:06 button=3 pin=GP26 event=down +2026-05-09T23:08:06 button=3 pin=GP26 event=up +2026-05-09T23:08:06 button=2 pin=GP27 event=up +2026-05-09T23:08:06 button=2 pin=GP27 event=down +2026-05-09T23:08:06 button=2 pin=GP27 event=up +2026-05-09T23:08:06 button=2 pin=GP27 event=down +2026-05-09T23:08:06 button=2 pin=GP27 event=up +2026-05-09T23:08:06 button=2 pin=GP27 event=down +2026-05-09T23:08:07 button=2 pin=GP27 event=up +2026-05-09T23:08:07 button=2 pin=GP27 event=down +2026-05-09T23:08:07 button=2 pin=GP27 event=up +2026-05-09T23:08:07 button=2 pin=GP27 event=down +2026-05-09T23:08:07 button=2 pin=GP27 event=up +2026-05-09T23:08:07 button=2 pin=GP27 event=down +2026-05-09T23:08:07 button=2 pin=GP27 event=up +2026-05-09T23:08:07 button=2 pin=GP27 event=down +2026-05-09T23:08:08 button=2 pin=GP27 event=up +2026-05-09T23:08:08 button=2 pin=GP27 event=down +2026-05-09T23:08:08 button=2 pin=GP27 event=up +2026-05-09T23:08:08 button=2 pin=GP27 event=down +2026-05-09T23:08:08 button=2 pin=GP27 event=up +2026-05-09T23:08:08 button=2 pin=GP27 event=down +2026-05-09T23:08:08 button=2 pin=GP27 event=up +2026-05-09T23:08:08 button=2 pin=GP27 event=down +2026-05-09T23:08:08 button=2 pin=GP27 event=up +2026-05-09T23:08:08 button=2 pin=GP27 event=down +2026-05-09T23:08:08 button=2 pin=GP27 event=up +2026-05-09T23:08:09 button=2 pin=GP27 event=down +2026-05-09T23:08:09 button=2 pin=GP27 event=up +2026-05-09T23:08:20 button=2 pin=GP27 event=down +2026-05-09T23:08:20 button=2 pin=GP27 event=up +2026-05-09T23:08:20 button=2 pin=GP27 event=down +2026-05-09T23:08:20 button=2 pin=GP27 event=up +2026-05-09T23:08:21 button=2 pin=GP27 event=down +2026-05-09T23:08:21 button=2 pin=GP27 event=up +2026-05-09T23:08:21 button=2 pin=GP27 event=down +2026-05-09T23:08:21 button=2 pin=GP27 event=up +2026-05-09T23:08:36 button=1 pin=GP28 event=down +2026-05-09T23:08:36 button=1 pin=GP28 event=up +2026-05-09T23:08:36 button=10 pin=GP16 event=down +2026-05-09T23:08:36 button=10 pin=GP16 event=up +2026-05-09T23:08:36 button=9 pin=GP17 event=down +2026-05-09T23:08:37 button=9 pin=GP17 event=up +2026-05-09T23:08:40 button=8 pin=GP19 event=down +2026-05-09T23:08:40 button=8 pin=GP19 event=up +2026-05-09T23:08:41 button=6 pin=GP20 event=down +2026-05-09T23:08:41 button=6 pin=GP20 event=up +2026-05-09T23:08:41 button=5 pin=GP21 event=down +2026-05-09T23:08:42 button=5 pin=GP21 event=up +2026-05-09T23:08:48 button=8 pin=GP19 event=down +2026-05-09T23:08:48 button=8 pin=GP19 event=up +2026-05-09T23:08:48 button=6 pin=GP20 event=down +2026-05-09T23:08:48 button=6 pin=GP20 event=up +2026-05-09T23:08:49 button=5 pin=GP21 event=down +2026-05-09T23:08:49 button=5 pin=GP21 event=up +2026-05-09T23:08:50 button=3 pin=GP26 event=down +2026-05-09T23:08:51 button=3 pin=GP26 event=up +2026-05-09T23:08:51 button=2 pin=GP27 event=down +2026-05-09T23:08:52 button=2 pin=GP27 event=up +2026-05-09T23:12:41 button=5 pin=GP21 event=down +2026-05-09T23:12:41 button=5 pin=GP21 event=up +2026-05-09T23:12:43 button=3 pin=GP26 event=down +2026-05-09T23:12:43 button=3 pin=GP26 event=up +2026-05-09T23:12:43 button=3 pin=GP26 event=down +2026-05-09T23:12:43 button=3 pin=GP26 event=up +2026-05-09T23:12:46 button=2 pin=GP27 event=down +2026-05-09T23:12:46 button=2 pin=GP27 event=up +2026-05-09T23:12:46 button=3 pin=GP26 event=down +2026-05-09T23:12:46 button=3 pin=GP26 event=up +2026-05-09T23:13:04 button=6 pin=GP20 event=down +2026-05-09T23:13:04 button=4 pin=GP22 event=down +2026-05-09T23:13:05 button=4 pin=GP22 event=up +2026-05-09T23:13:05 button=4 pin=GP22 event=down +2026-05-09T23:13:06 button=4 pin=GP22 event=up +2026-05-09T23:13:06 button=4 pin=GP22 event=down +2026-05-09T23:13:07 button=4 pin=GP22 event=up +2026-05-09T23:13:07 button=6 pin=GP20 event=up +2026-05-09T23:13:07 button=4 pin=GP22 event=down +2026-05-09T23:13:07 button=4 pin=GP22 event=up +2026-05-09T23:13:07 button=4 pin=GP22 event=down +2026-05-09T23:13:08 button=4 pin=GP22 event=up +2026-05-09T23:13:08 button=4 pin=GP22 event=down +2026-05-09T23:13:08 button=4 pin=GP22 event=up +2026-05-09T23:13:08 button=4 pin=GP22 event=down +2026-05-09T23:13:08 button=4 pin=GP22 event=up +2026-05-09T23:13:08 button=4 pin=GP22 event=down +2026-05-09T23:13:09 button=4 pin=GP22 event=up +2026-05-09T23:13:09 button=4 pin=GP22 event=down +2026-05-09T23:13:09 button=4 pin=GP22 event=up +2026-05-09T23:13:09 button=4 pin=GP22 event=down +2026-05-09T23:13:09 button=4 pin=GP22 event=up +2026-05-09T23:13:09 button=4 pin=GP22 event=down +2026-05-09T23:13:09 button=4 pin=GP22 event=up +2026-05-09T23:13:09 button=4 pin=GP22 event=down +2026-05-09T23:13:09 button=4 pin=GP22 event=up +2026-05-09T23:13:09 button=4 pin=GP22 event=down +2026-05-09T23:13:09 button=4 pin=GP22 event=up +2026-05-09T23:13:10 button=4 pin=GP22 event=down +2026-05-09T23:13:10 button=4 pin=GP22 event=up +2026-05-09T23:13:10 button=4 pin=GP22 event=down +2026-05-09T23:13:10 button=4 pin=GP22 event=up +2026-05-09T23:13:10 button=4 pin=GP22 event=down +2026-05-09T23:13:10 button=4 pin=GP22 event=up +2026-05-09T23:13:11 button=4 pin=GP22 event=down +2026-05-09T23:13:11 button=4 pin=GP22 event=up +2026-05-09T23:13:11 button=5 pin=GP21 event=down +2026-05-09T23:13:12 button=5 pin=GP21 event=up +2026-05-09T23:13:12 button=4 pin=GP22 event=down +2026-05-09T23:13:12 button=4 pin=GP22 event=up +2026-05-09T23:13:12 button=4 pin=GP22 event=down +2026-05-09T23:13:12 button=4 pin=GP22 event=up +2026-05-09T23:13:12 button=4 pin=GP22 event=down +2026-05-09T23:13:12 button=4 pin=GP22 event=up +2026-05-09T23:13:12 button=5 pin=GP21 event=down +2026-05-09T23:13:13 button=5 pin=GP21 event=up +2026-05-09T23:13:13 button=4 pin=GP22 event=down +2026-05-09T23:13:13 button=4 pin=GP22 event=up +2026-05-09T23:13:13 button=3 pin=GP26 event=down +2026-05-09T23:13:14 button=3 pin=GP26 event=up +2026-05-09T23:13:14 button=2 pin=GP27 event=down +2026-05-09T23:13:14 button=2 pin=GP27 event=up +2026-05-09T23:13:14 button=5 pin=GP21 event=down +2026-05-09T23:13:14 button=5 pin=GP21 event=up +2026-05-09T23:13:14 button=2 pin=GP27 event=down +2026-05-09T23:13:14 button=2 pin=GP27 event=up +2026-05-09T23:13:15 button=5 pin=GP21 event=down +2026-05-09T23:13:15 button=5 pin=GP21 event=up +2026-05-09T23:13:15 button=5 pin=GP21 event=down +2026-05-09T23:13:15 button=5 pin=GP21 event=up +2026-05-09T23:13:15 button=5 pin=GP21 event=down +2026-05-09T23:13:15 button=5 pin=GP21 event=up +2026-05-09T23:13:15 button=6 pin=GP20 event=down +2026-05-09T23:13:15 button=6 pin=GP20 event=up +2026-05-09T23:13:16 button=6 pin=GP20 event=down +2026-05-09T23:13:16 button=6 pin=GP20 event=up +2026-05-09T23:13:16 button=6 pin=GP20 event=down +2026-05-09T23:13:16 button=6 pin=GP20 event=up +2026-05-09T23:13:16 button=8 pin=GP19 event=down +2026-05-09T23:13:16 button=8 pin=GP19 event=up +2026-05-09T23:13:16 button=8 pin=GP19 event=down +2026-05-09T23:13:16 button=8 pin=GP19 event=up +2026-05-09T23:13:17 button=8 pin=GP19 event=down +2026-05-09T23:13:17 button=8 pin=GP19 event=up +2026-05-09T23:13:17 button=7 pin=GP18 event=down +2026-05-09T23:13:17 button=7 pin=GP18 event=up +2026-05-09T23:13:17 button=7 pin=GP18 event=down +2026-05-09T23:13:17 button=7 pin=GP18 event=up +2026-05-09T23:13:17 button=7 pin=GP18 event=down +2026-05-09T23:13:17 button=7 pin=GP18 event=up +2026-05-09T23:13:29 button=9 pin=GP17 event=down +2026-05-09T23:13:29 button=9 pin=GP17 event=up +2026-05-09T23:13:29 button=9 pin=GP17 event=down +2026-05-09T23:13:29 button=9 pin=GP17 event=up +2026-05-09T23:15:30 button=9 pin=GP17 event=down +2026-05-09T23:15:50 button=9 pin=GP17 event=up +2026-05-09T23:19:54 button=10 pin=GP16 event=down +2026-05-09T23:19:54 button=10 pin=GP16 event=up +2026-05-09T23:19:54 button=10 pin=GP16 event=down +2026-05-09T23:19:54 button=10 pin=GP16 event=up +2026-05-09T23:19:55 button=1 pin=GP28 event=down +2026-05-09T23:19:55 button=1 pin=GP28 event=up +2026-05-09T23:19:55 button=1 pin=GP28 event=down +2026-05-09T23:19:55 button=1 pin=GP28 event=up +2026-05-09T23:19:56 button=7 pin=GP18 event=down +2026-05-09T23:19:56 button=7 pin=GP18 event=up +2026-05-09T23:19:57 button=8 pin=GP19 event=down +2026-05-09T23:19:57 button=8 pin=GP19 event=up +2026-05-09T23:19:57 button=6 pin=GP20 event=down +2026-05-09T23:19:57 button=6 pin=GP20 event=up +2026-05-09T23:19:58 button=5 pin=GP21 event=down +2026-05-09T23:19:58 button=5 pin=GP21 event=up +2026-05-09T23:19:58 button=4 pin=GP22 event=down +2026-05-09T23:19:58 button=4 pin=GP22 event=up +2026-05-09T23:19:59 button=3 pin=GP26 event=down +2026-05-09T23:19:59 button=3 pin=GP26 event=up +2026-05-09T23:20:03 button=2 pin=GP27 event=down +2026-05-09T23:20:03 button=3 pin=GP26 event=down +2026-05-09T23:20:03 button=3 pin=GP26 event=up +2026-05-09T23:20:03 button=2 pin=GP27 event=up +2026-05-09T23:20:11 button=2 pin=GP27 event=down +2026-05-09T23:20:11 button=3 pin=GP26 event=down +2026-05-09T23:20:12 button=3 pin=GP26 event=up +2026-05-09T23:20:12 button=2 pin=GP27 event=up +2026-05-09T23:20:13 button=2 pin=GP27 event=down +2026-05-09T23:20:13 button=2 pin=GP27 event=up +2026-05-09T23:20:13 button=2 pin=GP27 event=down +2026-05-09T23:20:13 button=2 pin=GP27 event=up +2026-05-09T23:20:13 button=2 pin=GP27 event=down +2026-05-09T23:20:13 button=2 pin=GP27 event=up +2026-05-09T23:20:14 button=2 pin=GP27 event=down +2026-05-09T23:20:14 button=2 pin=GP27 event=up +2026-05-09T23:20:14 button=2 pin=GP27 event=down +2026-05-09T23:20:14 button=2 pin=GP27 event=up +2026-05-09T23:20:15 button=2 pin=GP27 event=down +2026-05-09T23:20:15 button=2 pin=GP27 event=up +2026-05-09T23:20:16 button=10 pin=GP16 event=down +2026-05-09T23:20:17 button=10 pin=GP16 event=up +2026-05-09T23:20:17 button=1 pin=GP28 event=down +2026-05-09T23:20:17 button=1 pin=GP28 event=up +2026-05-09T23:22:24 button=9 pin=GP17 event=down +2026-05-09T23:22:25 button=9 pin=GP17 event=up +2026-05-09T23:22:25 button=9 pin=GP17 event=down +2026-05-09T23:22:25 button=9 pin=GP17 event=up +2026-05-09T23:22:25 button=9 pin=GP17 event=down +2026-05-09T23:22:25 button=9 pin=GP17 event=up +2026-05-09T23:23:42 button=9 pin=GP17 event=down +2026-05-09T23:23:43 button=9 pin=GP17 event=up +2026-05-09T23:23:43 button=9 pin=GP17 event=down +2026-05-09T23:23:43 button=9 pin=GP17 event=up +2026-05-09T23:23:43 button=9 pin=GP17 event=down +2026-05-09T23:23:43 button=9 pin=GP17 event=up +2026-05-09T23:25:58 button=9 pin=GP17 event=down +2026-05-09T23:25:58 button=9 pin=GP17 event=up +2026-05-09T23:25:59 button=9 pin=GP17 event=down +2026-05-09T23:25:59 button=9 pin=GP17 event=up +2026-05-09T23:25:59 button=9 pin=GP17 event=down +2026-05-09T23:25:59 button=9 pin=GP17 event=up +2026-05-09T23:25:59 button=9 pin=GP17 event=down +2026-05-09T23:25:59 button=9 pin=GP17 event=up +2026-05-09T23:27:21 button=9 pin=GP17 event=down +2026-05-09T23:27:22 button=9 pin=GP17 event=up +2026-05-09T23:27:22 button=9 pin=GP17 event=down +2026-05-09T23:27:22 button=10 pin=GP16 event=down +2026-05-09T23:27:22 button=10 pin=GP16 event=up +2026-05-09T23:27:22 button=9 pin=GP17 event=up +2026-05-09T23:27:22 button=9 pin=GP17 event=down +2026-05-09T23:27:22 button=9 pin=GP17 event=up +2026-05-09T23:27:23 button=9 pin=GP17 event=down +2026-05-09T23:27:23 button=9 pin=GP17 event=up +2026-05-09T23:27:23 button=9 pin=GP17 event=down +2026-05-09T23:27:23 button=9 pin=GP17 event=up +2026-05-09T23:27:23 button=9 pin=GP17 event=down +2026-05-09T23:27:23 button=9 pin=GP17 event=up +2026-05-09T23:27:23 button=9 pin=GP17 event=down +2026-05-09T23:27:23 button=9 pin=GP17 event=up +2026-05-09T23:27:23 button=9 pin=GP17 event=down +2026-05-09T23:27:24 button=9 pin=GP17 event=up +2026-05-09T23:27:24 button=9 pin=GP17 event=down +2026-05-09T23:27:24 button=9 pin=GP17 event=up +2026-05-09T23:27:24 button=9 pin=GP17 event=down +2026-05-09T23:27:24 button=9 pin=GP17 event=up +2026-05-09T23:31:00 button=9 pin=GP17 event=down +2026-05-09T23:31:00 button=9 pin=GP17 event=up +2026-05-09T23:31:00 button=9 pin=GP17 event=down +2026-05-09T23:31:00 button=9 pin=GP17 event=up +2026-05-09T23:31:00 button=9 pin=GP17 event=down +2026-05-09T23:31:00 button=9 pin=GP17 event=up +2026-05-09T23:31:01 button=9 pin=GP17 event=down +2026-05-09T23:31:01 button=9 pin=GP17 event=up +2026-05-09T23:31:01 button=9 pin=GP17 event=down +2026-05-09T23:31:01 button=9 pin=GP17 event=up +2026-05-09T23:31:09 button=9 pin=GP17 event=down +2026-05-09T23:31:09 button=10 pin=GP16 event=down +2026-05-09T23:31:11 button=10 pin=GP16 event=up +2026-05-09T23:31:11 button=9 pin=GP17 event=up +2026-05-09T23:31:11 button=9 pin=GP17 event=down +2026-05-09T23:31:12 button=9 pin=GP17 event=up +2026-05-09T23:31:12 button=9 pin=GP17 event=down +2026-05-09T23:31:12 button=9 pin=GP17 event=up +2026-05-09T23:31:12 button=9 pin=GP17 event=down +2026-05-09T23:31:12 button=9 pin=GP17 event=up +2026-05-09T23:31:12 button=9 pin=GP17 event=down +2026-05-09T23:31:12 button=9 pin=GP17 event=up +2026-05-09T23:31:12 button=7 pin=GP18 event=down +2026-05-09T23:31:13 button=7 pin=GP18 event=up +2026-05-09T23:31:13 button=9 pin=GP17 event=down +2026-05-09T23:31:13 button=9 pin=GP17 event=up +2026-05-09T23:31:13 button=10 pin=GP16 event=down +2026-05-09T23:31:14 button=10 pin=GP16 event=up +2026-05-09T23:31:14 button=1 pin=GP28 event=down +2026-05-09T23:31:14 button=1 pin=GP28 event=up +2026-05-09T23:31:15 button=7 pin=GP18 event=down +2026-05-09T23:31:15 button=7 pin=GP18 event=up +2026-05-09T23:31:15 button=8 pin=GP19 event=down +2026-05-09T23:31:16 button=8 pin=GP19 event=up +2026-05-09T23:31:16 button=6 pin=GP20 event=down +2026-05-09T23:31:16 button=6 pin=GP20 event=up +2026-05-09T23:31:17 button=6 pin=GP20 event=down +2026-05-09T23:31:17 button=6 pin=GP20 event=up +2026-05-09T23:31:17 button=5 pin=GP21 event=down +2026-05-09T23:31:17 button=5 pin=GP21 event=up +2026-05-09T23:31:18 button=4 pin=GP22 event=down +2026-05-09T23:31:18 button=4 pin=GP22 event=up +2026-05-09T23:31:19 button=3 pin=GP26 event=down +2026-05-09T23:31:19 button=3 pin=GP26 event=up +2026-05-09T23:31:19 button=2 pin=GP27 event=down +2026-05-09T23:31:19 button=2 pin=GP27 event=up +2026-05-09T23:31:45 button=5 pin=GP21 event=down +2026-05-09T23:31:45 button=6 pin=GP20 event=down +2026-05-09T23:31:45 button=6 pin=GP20 event=up +2026-05-09T23:31:45 button=5 pin=GP21 event=up +2026-05-09T23:31:46 button=6 pin=GP20 event=down +2026-05-09T23:31:46 button=9 pin=GP17 event=down +2026-05-09T23:31:46 button=6 pin=GP20 event=up +2026-05-09T23:31:46 button=9 pin=GP17 event=up +2026-05-09T23:31:46 button=1 pin=GP28 event=down +2026-05-09T23:31:46 button=1 pin=GP28 event=up +2026-05-09T23:31:47 button=10 pin=GP16 event=down +2026-05-09T23:31:47 button=10 pin=GP16 event=up +2026-05-09T23:31:47 button=9 pin=GP17 event=down +2026-05-09T23:31:47 button=9 pin=GP17 event=up +2026-05-09T23:31:54 button=7 pin=GP18 event=down +2026-05-09T23:31:54 button=7 pin=GP18 event=up +2026-05-09T23:31:54 button=7 pin=GP18 event=down +2026-05-09T23:31:54 button=7 pin=GP18 event=up +2026-05-09T23:31:54 button=7 pin=GP18 event=down +2026-05-09T23:31:54 button=7 pin=GP18 event=up +2026-05-09T23:31:54 button=7 pin=GP18 event=down +2026-05-09T23:31:54 button=7 pin=GP18 event=up +2026-05-09T23:31:55 button=7 pin=GP18 event=down +2026-05-09T23:31:55 button=7 pin=GP18 event=up +2026-05-09T23:31:55 button=7 pin=GP18 event=down +2026-05-09T23:31:55 button=7 pin=GP18 event=up +2026-05-09T23:31:56 button=7 pin=GP18 event=down +2026-05-09T23:31:56 button=9 pin=GP17 event=down +2026-05-09T23:31:58 button=9 pin=GP17 event=up +2026-05-09T23:31:58 button=7 pin=GP18 event=up +2026-05-09T23:31:58 button=7 pin=GP18 event=down +2026-05-09T23:31:58 button=9 pin=GP17 event=down +2026-05-09T23:31:59 button=7 pin=GP18 event=up +2026-05-09T23:31:59 button=9 pin=GP17 event=up +2026-05-09T23:32:00 button=7 pin=GP18 event=down +2026-05-09T23:32:00 button=7 pin=GP18 event=up +2026-05-09T23:32:00 button=7 pin=GP18 event=down +2026-05-09T23:32:00 button=7 pin=GP18 event=up +2026-05-09T23:32:00 button=7 pin=GP18 event=down +2026-05-09T23:32:00 button=7 pin=GP18 event=up +2026-05-09T23:32:01 button=7 pin=GP18 event=down +2026-05-09T23:32:01 button=7 pin=GP18 event=up +2026-05-09T23:32:01 button=8 pin=GP19 event=down +2026-05-09T23:32:02 button=8 pin=GP19 event=up +2026-05-09T23:32:02 button=6 pin=GP20 event=down +2026-05-09T23:32:02 button=6 pin=GP20 event=up +2026-05-09T23:32:02 button=5 pin=GP21 event=down +2026-05-09T23:32:03 button=5 pin=GP21 event=up +2026-05-09T23:32:06 button=4 pin=GP22 event=down +2026-05-09T23:32:06 button=4 pin=GP22 event=up +2026-05-09T23:32:06 button=4 pin=GP22 event=down +2026-05-09T23:32:09 button=4 pin=GP22 event=up +2026-05-09T23:32:09 button=4 pin=GP22 event=down +2026-05-09T23:32:09 button=4 pin=GP22 event=up +2026-05-09T23:32:10 button=4 pin=GP22 event=down +2026-05-09T23:32:10 button=4 pin=GP22 event=up +2026-05-09T23:32:10 button=4 pin=GP22 event=down +2026-05-09T23:32:10 button=4 pin=GP22 event=up +2026-05-09T23:32:10 button=4 pin=GP22 event=down +2026-05-09T23:32:10 button=4 pin=GP22 event=up +2026-05-09T23:32:10 button=4 pin=GP22 event=down +2026-05-09T23:32:11 button=4 pin=GP22 event=up +2026-05-09T23:32:11 button=4 pin=GP22 event=down +2026-05-09T23:32:11 button=4 pin=GP22 event=up +2026-05-09T23:32:11 button=3 pin=GP26 event=down +2026-05-09T23:32:11 button=3 pin=GP26 event=up +2026-05-09T23:32:11 button=3 pin=GP26 event=down +2026-05-09T23:32:11 button=3 pin=GP26 event=up +2026-05-09T23:32:11 button=3 pin=GP26 event=down +2026-05-09T23:32:11 button=3 pin=GP26 event=up +2026-05-09T23:32:12 button=2 pin=GP27 event=down +2026-05-09T23:32:12 button=2 pin=GP27 event=up +2026-05-09T23:32:12 button=2 pin=GP27 event=down +2026-05-09T23:32:12 button=2 pin=GP27 event=up +2026-05-09T23:32:15 button=1 pin=GP28 event=down +2026-05-09T23:32:15 button=1 pin=GP28 event=up +2026-05-09T23:32:19 button=3 pin=GP26 event=down +2026-05-09T23:32:19 button=10 pin=GP16 event=down +2026-05-09T23:32:19 button=10 pin=GP16 event=up +2026-05-09T23:32:20 button=2 pin=GP27 event=down +2026-05-09T23:32:20 button=3 pin=GP26 event=up +2026-05-09T23:32:20 button=8 pin=GP19 event=down +2026-05-09T23:32:20 button=1 pin=GP28 event=down +2026-05-09T23:32:20 button=3 pin=GP26 event=down +2026-05-09T23:32:20 button=5 pin=GP21 event=down +2026-05-09T23:32:20 button=4 pin=GP22 event=down +2026-05-09T23:32:20 button=10 pin=GP16 event=down +2026-05-09T23:32:20 button=9 pin=GP17 event=down +2026-05-09T23:32:20 button=4 pin=GP22 event=up +2026-05-09T23:32:20 button=3 pin=GP26 event=up +2026-05-09T23:32:20 button=9 pin=GP17 event=up +2026-05-09T23:32:20 button=10 pin=GP16 event=up +2026-05-09T23:32:20 button=1 pin=GP28 event=up +2026-05-09T23:32:20 button=2 pin=GP27 event=up +2026-05-09T23:32:20 button=5 pin=GP21 event=up +2026-05-09T23:32:20 button=8 pin=GP19 event=up +2026-05-09T23:32:22 button=1 pin=GP28 event=down +2026-05-09T23:32:22 button=1 pin=GP28 event=up +2026-05-09T23:32:22 button=10 pin=GP16 event=down +2026-05-09T23:32:22 button=10 pin=GP16 event=up +2026-05-09T23:32:23 button=1 pin=GP28 event=down +2026-05-09T23:32:23 button=1 pin=GP28 event=up +2026-05-09T23:32:23 button=10 pin=GP16 event=down +2026-05-09T23:32:23 button=10 pin=GP16 event=up +2026-05-09T23:32:24 button=9 pin=GP17 event=down +2026-05-09T23:32:24 button=9 pin=GP17 event=up +2026-05-09T23:32:25 button=8 pin=GP19 event=down +2026-05-09T23:32:26 button=8 pin=GP19 event=up +2026-05-09T23:32:26 button=6 pin=GP20 event=down +2026-05-09T23:32:26 button=6 pin=GP20 event=up +2026-05-09T23:32:27 button=5 pin=GP21 event=down +2026-05-09T23:32:27 button=5 pin=GP21 event=up +2026-05-09T23:32:27 button=4 pin=GP22 event=down +2026-05-09T23:32:27 button=4 pin=GP22 event=up +2026-05-09T23:32:28 button=3 pin=GP26 event=down +2026-05-09T23:32:28 button=3 pin=GP26 event=up +2026-05-09T23:32:28 button=2 pin=GP27 event=down +2026-05-09T23:32:28 button=2 pin=GP27 event=up +2026-05-09T23:32:29 button=6 pin=GP20 event=down +2026-05-09T23:32:29 button=6 pin=GP20 event=up +2026-05-09T23:32:29 button=8 pin=GP19 event=down +2026-05-09T23:32:29 button=8 pin=GP19 event=up +2026-05-09T23:32:48 button=7 pin=GP18 event=down +2026-05-09T23:32:48 button=7 pin=GP18 event=up +2026-05-09T23:32:49 button=9 pin=GP17 event=down +2026-05-09T23:32:49 button=9 pin=GP17 event=up +2026-05-09T23:32:49 button=10 pin=GP16 event=down +2026-05-09T23:32:49 button=10 pin=GP16 event=up +2026-05-09T23:32:50 button=1 pin=GP28 event=down +2026-05-09T23:32:50 button=1 pin=GP28 event=up +2026-05-09T23:32:53 button=7 pin=GP18 event=down +2026-05-09T23:32:53 button=8 pin=GP19 event=down +2026-05-09T23:32:53 button=6 pin=GP20 event=down +2026-05-09T23:32:54 button=6 pin=GP20 event=up +2026-05-09T23:32:54 button=7 pin=GP18 event=up +2026-05-09T23:32:54 button=8 pin=GP19 event=up +2026-05-09T23:32:59 button=9 pin=GP17 event=down +2026-05-09T23:32:59 button=7 pin=GP18 event=down +2026-05-09T23:33:01 button=9 pin=GP17 event=up +2026-05-09T23:33:01 button=7 pin=GP18 event=up +2026-05-09T23:33:01 button=7 pin=GP18 event=down +2026-05-09T23:33:01 button=7 pin=GP18 event=up +2026-05-09T23:33:01 button=7 pin=GP18 event=down +2026-05-09T23:33:01 button=7 pin=GP18 event=up +2026-05-09T23:33:01 button=7 pin=GP18 event=down +2026-05-09T23:33:01 button=7 pin=GP18 event=up +2026-05-09T23:33:01 button=7 pin=GP18 event=down +2026-05-09T23:33:01 button=7 pin=GP18 event=up +2026-05-09T23:33:08 button=2 pin=GP27 event=down +2026-05-09T23:33:08 button=2 pin=GP27 event=up +2026-05-09T23:33:10 button=2 pin=GP27 event=down +2026-05-09T23:33:10 button=8 pin=GP19 event=down +2026-05-09T23:33:10 button=2 pin=GP27 event=up +2026-05-09T23:33:10 button=8 pin=GP19 event=up +2026-05-09T23:33:10 button=8 pin=GP19 event=down +2026-05-09T23:33:11 button=8 pin=GP19 event=up +2026-05-09T23:33:11 button=8 pin=GP19 event=down +2026-05-09T23:33:11 button=8 pin=GP19 event=up +2026-05-09T23:33:18 button=7 pin=GP18 event=down +2026-05-09T23:33:18 button=7 pin=GP18 event=up +2026-05-09T23:33:18 button=7 pin=GP18 event=down +2026-05-09T23:33:18 button=7 pin=GP18 event=up +2026-05-09T23:33:18 button=7 pin=GP18 event=down +2026-05-09T23:33:18 button=7 pin=GP18 event=up +2026-05-09T23:33:18 button=7 pin=GP18 event=down +2026-05-09T23:33:19 button=7 pin=GP18 event=up +2026-05-09T23:33:19 button=7 pin=GP18 event=down +2026-05-09T23:33:19 button=10 pin=GP16 event=down +2026-05-09T23:33:19 button=7 pin=GP18 event=up +2026-05-09T23:33:19 button=2 pin=GP27 event=down +2026-05-09T23:33:19 button=7 pin=GP18 event=down +2026-05-09T23:33:20 button=2 pin=GP27 event=up +2026-05-09T23:33:20 button=10 pin=GP16 event=up +2026-05-09T23:33:20 button=7 pin=GP18 event=up +2026-05-09T23:33:20 button=7 pin=GP18 event=down +2026-05-09T23:33:21 button=7 pin=GP18 event=up +2026-05-09T23:33:21 button=7 pin=GP18 event=down +2026-05-09T23:33:21 button=7 pin=GP18 event=up +2026-05-09T23:33:21 button=7 pin=GP18 event=down +2026-05-09T23:33:22 button=7 pin=GP18 event=up +2026-05-09T23:33:22 button=7 pin=GP18 event=down +2026-05-09T23:33:22 button=7 pin=GP18 event=up +2026-05-09T23:33:22 button=7 pin=GP18 event=down +2026-05-09T23:33:22 button=7 pin=GP18 event=up +2026-05-09T23:33:22 button=7 pin=GP18 event=down +2026-05-09T23:33:22 button=7 pin=GP18 event=up +2026-05-09T23:33:23 button=7 pin=GP18 event=down +2026-05-09T23:33:23 button=7 pin=GP18 event=up +2026-05-09T23:33:28 button=1 pin=GP28 event=down +2026-05-09T23:33:28 button=7 pin=GP18 event=down +2026-05-09T23:33:28 button=9 pin=GP17 event=down +2026-05-09T23:33:28 button=8 pin=GP19 event=down +2026-05-09T23:33:28 button=6 pin=GP20 event=down +2026-05-09T23:33:28 button=10 pin=GP16 event=down +2026-05-09T23:33:29 button=5 pin=GP21 event=down +2026-05-09T23:33:30 button=5 pin=GP21 event=up +2026-05-09T23:33:30 button=10 pin=GP16 event=up +2026-05-09T23:33:31 button=9 pin=GP17 event=up +2026-05-09T23:33:31 button=6 pin=GP20 event=up +2026-05-09T23:33:31 button=7 pin=GP18 event=up +2026-05-09T23:33:31 button=8 pin=GP19 event=up +2026-05-09T23:33:32 button=1 pin=GP28 event=up +2026-05-09T23:33:36 button=7 pin=GP18 event=down +2026-05-09T23:33:36 button=8 pin=GP19 event=down +2026-05-09T23:33:36 button=9 pin=GP17 event=down +2026-05-09T23:33:36 button=6 pin=GP20 event=down +2026-05-09T23:33:36 button=10 pin=GP16 event=down +2026-05-09T23:33:36 button=5 pin=GP21 event=down +2026-05-09T23:33:36 button=5 pin=GP21 event=up +2026-05-09T23:33:36 button=9 pin=GP17 event=up +2026-05-09T23:33:36 button=10 pin=GP16 event=up +2026-05-09T23:33:36 button=7 pin=GP18 event=up +2026-05-09T23:33:36 button=6 pin=GP20 event=up +2026-05-09T23:33:36 button=8 pin=GP19 event=up +2026-05-09T23:33:40 button=7 pin=GP18 event=down +2026-05-09T23:33:40 button=7 pin=GP18 event=up +2026-05-09T23:33:40 button=7 pin=GP18 event=down +2026-05-09T23:33:40 button=7 pin=GP18 event=up +2026-05-09T23:33:40 button=7 pin=GP18 event=down +2026-05-09T23:33:40 button=7 pin=GP18 event=up +2026-05-09T23:33:41 button=7 pin=GP18 event=down +2026-05-09T23:33:41 button=7 pin=GP18 event=up +2026-05-09T23:33:41 button=7 pin=GP18 event=down +2026-05-09T23:33:41 button=7 pin=GP18 event=up +2026-05-09T23:33:41 button=7 pin=GP18 event=down +2026-05-09T23:33:41 button=7 pin=GP18 event=up +2026-05-09T23:33:41 button=7 pin=GP18 event=down +2026-05-09T23:33:42 button=7 pin=GP18 event=up +2026-05-09T23:33:42 button=7 pin=GP18 event=down +2026-05-09T23:33:42 button=7 pin=GP18 event=up +2026-05-09T23:33:42 button=7 pin=GP18 event=down +2026-05-09T23:33:42 button=7 pin=GP18 event=up +2026-05-09T23:33:43 button=7 pin=GP18 event=down +2026-05-09T23:33:43 button=7 pin=GP18 event=up +2026-05-09T23:33:43 button=7 pin=GP18 event=down +2026-05-09T23:33:43 button=7 pin=GP18 event=up +2026-05-09T23:33:43 button=7 pin=GP18 event=down +2026-05-09T23:33:44 button=7 pin=GP18 event=up +2026-05-09T23:33:58 button=7 pin=GP18 event=down +2026-05-09T23:34:05 button=7 pin=GP18 event=up +2026-05-09T23:34:05 button=7 pin=GP18 event=down +2026-05-09T23:34:05 button=7 pin=GP18 event=up +2026-05-09T23:34:06 button=7 pin=GP18 event=down +2026-05-09T23:34:06 button=7 pin=GP18 event=up +2026-05-09T23:34:06 button=7 pin=GP18 event=down +2026-05-09T23:34:06 button=7 pin=GP18 event=up +2026-05-09T23:34:06 button=7 pin=GP18 event=down +2026-05-09T23:34:06 button=7 pin=GP18 event=up +2026-05-09T23:34:06 button=7 pin=GP18 event=down +2026-05-09T23:34:06 button=7 pin=GP18 event=up +2026-05-09T23:34:06 button=7 pin=GP18 event=down +2026-05-09T23:34:07 button=7 pin=GP18 event=up +2026-05-09T23:34:07 button=7 pin=GP18 event=down +2026-05-09T23:34:07 button=7 pin=GP18 event=up +2026-05-09T23:34:07 button=7 pin=GP18 event=down +2026-05-09T23:34:07 button=7 pin=GP18 event=up +2026-05-09T23:34:07 button=7 pin=GP18 event=down +2026-05-09T23:34:07 button=7 pin=GP18 event=up +2026-05-09T23:34:09 button=10 pin=GP16 event=down +2026-05-09T23:34:09 button=10 pin=GP16 event=up +2026-05-09T23:34:09 button=10 pin=GP16 event=down +2026-05-09T23:34:10 button=2 pin=GP27 event=down +2026-05-09T23:34:10 button=1 pin=GP28 event=down +2026-05-09T23:34:10 button=10 pin=GP16 event=up +2026-05-09T23:34:10 button=2 pin=GP27 event=up +2026-05-09T23:34:10 button=1 pin=GP28 event=up +2026-05-09T23:34:10 button=1 pin=GP28 event=down +2026-05-09T23:34:10 button=2 pin=GP27 event=down +2026-05-09T23:34:10 button=1 pin=GP28 event=up +2026-05-09T23:34:11 button=2 pin=GP27 event=up +2026-05-09T23:34:12 button=2 pin=GP27 event=down +2026-05-09T23:34:12 button=2 pin=GP27 event=up +2026-05-09T23:34:13 button=7 pin=GP18 event=down +2026-05-09T23:34:13 button=7 pin=GP18 event=up +2026-05-09T23:34:13 button=7 pin=GP18 event=down +2026-05-09T23:34:13 button=7 pin=GP18 event=up +2026-05-09T23:34:13 button=7 pin=GP18 event=down +2026-05-09T23:34:13 button=7 pin=GP18 event=up +2026-05-09T23:34:14 button=7 pin=GP18 event=down +2026-05-09T23:34:14 button=7 pin=GP18 event=up +2026-05-09T23:34:14 button=7 pin=GP18 event=down +2026-05-09T23:34:14 button=7 pin=GP18 event=up +2026-05-09T23:34:14 button=7 pin=GP18 event=down +2026-05-09T23:34:14 button=7 pin=GP18 event=up +2026-05-09T23:34:15 button=9 pin=GP17 event=down +2026-05-09T23:34:15 button=9 pin=GP17 event=up +2026-05-09T23:34:15 button=9 pin=GP17 event=down +2026-05-09T23:34:15 button=9 pin=GP17 event=up +2026-05-09T23:34:15 button=9 pin=GP17 event=down +2026-05-09T23:34:15 button=9 pin=GP17 event=up +2026-05-09T23:34:15 button=10 pin=GP16 event=down +2026-05-09T23:34:15 button=10 pin=GP16 event=up +2026-05-09T23:34:15 button=10 pin=GP16 event=down +2026-05-09T23:34:15 button=10 pin=GP16 event=up +2026-05-09T23:34:15 button=10 pin=GP16 event=down +2026-05-09T23:34:16 button=10 pin=GP16 event=up +2026-05-09T23:34:16 button=1 pin=GP28 event=down +2026-05-09T23:34:16 button=1 pin=GP28 event=up +2026-05-09T23:34:16 button=1 pin=GP28 event=down +2026-05-09T23:34:16 button=1 pin=GP28 event=up +2026-05-09T23:34:17 button=1 pin=GP28 event=down +2026-05-09T23:34:17 button=1 pin=GP28 event=up +2026-05-09T23:34:17 button=1 pin=GP28 event=down +2026-05-09T23:34:17 button=1 pin=GP28 event=up +2026-05-09T23:34:19 button=8 pin=GP19 event=down +2026-05-09T23:34:19 button=8 pin=GP19 event=up +2026-05-09T23:34:19 button=8 pin=GP19 event=down +2026-05-09T23:34:19 button=8 pin=GP19 event=up +2026-05-09T23:34:19 button=8 pin=GP19 event=down +2026-05-09T23:34:19 button=8 pin=GP19 event=up +2026-05-09T23:34:20 button=6 pin=GP20 event=down +2026-05-09T23:34:20 button=6 pin=GP20 event=up +2026-05-09T23:34:20 button=6 pin=GP20 event=down +2026-05-09T23:34:20 button=6 pin=GP20 event=up +2026-05-09T23:34:20 button=6 pin=GP20 event=down +2026-05-09T23:34:20 button=6 pin=GP20 event=up +2026-05-09T23:34:20 button=5 pin=GP21 event=down +2026-05-09T23:34:20 button=5 pin=GP21 event=up +2026-05-09T23:34:20 button=5 pin=GP21 event=down +2026-05-09T23:34:20 button=5 pin=GP21 event=up +2026-05-09T23:34:20 button=5 pin=GP21 event=down +2026-05-09T23:34:21 button=5 pin=GP21 event=up +2026-05-09T23:34:26 button=5 pin=GP21 event=down +2026-05-09T23:34:27 button=4 pin=GP22 event=down +2026-05-09T23:34:27 button=4 pin=GP22 event=up +2026-05-09T23:34:27 button=4 pin=GP22 event=down +2026-05-09T23:34:27 button=4 pin=GP22 event=up +2026-05-09T23:34:28 button=4 pin=GP22 event=down +2026-05-09T23:34:28 button=4 pin=GP22 event=up +2026-05-09T23:34:29 button=4 pin=GP22 event=down +2026-05-09T23:34:29 button=4 pin=GP22 event=up +2026-05-09T23:34:29 button=2 pin=GP27 event=down +2026-05-09T23:34:29 button=4 pin=GP22 event=down +2026-05-09T23:34:29 button=4 pin=GP22 event=up +2026-05-09T23:34:29 button=2 pin=GP27 event=up +2026-05-09T23:34:29 button=5 pin=GP21 event=up +2026-05-09T23:34:30 button=4 pin=GP22 event=down +2026-05-09T23:34:30 button=4 pin=GP22 event=up +2026-05-09T23:34:30 button=4 pin=GP22 event=down +2026-05-09T23:34:30 button=4 pin=GP22 event=up +2026-05-09T23:34:31 button=4 pin=GP22 event=down +2026-05-09T23:34:31 button=4 pin=GP22 event=up +2026-05-09T23:34:31 button=4 pin=GP22 event=down +2026-05-09T23:34:31 button=4 pin=GP22 event=up +2026-05-09T23:34:31 button=4 pin=GP22 event=down +2026-05-09T23:34:31 button=4 pin=GP22 event=up +2026-05-09T23:34:31 button=4 pin=GP22 event=down +2026-05-09T23:34:31 button=4 pin=GP22 event=up +2026-05-09T23:34:32 button=4 pin=GP22 event=down +2026-05-09T23:34:32 button=4 pin=GP22 event=up +2026-05-09T23:34:32 button=4 pin=GP22 event=down +2026-05-09T23:34:32 button=4 pin=GP22 event=up +2026-05-09T23:34:32 button=4 pin=GP22 event=down +2026-05-09T23:34:33 button=4 pin=GP22 event=up +2026-05-09T23:34:33 button=4 pin=GP22 event=down +2026-05-09T23:34:33 button=4 pin=GP22 event=up +2026-05-09T23:34:33 button=3 pin=GP26 event=down +2026-05-09T23:34:33 button=3 pin=GP26 event=up +2026-05-09T23:34:33 button=3 pin=GP26 event=down +2026-05-09T23:34:33 button=3 pin=GP26 event=up +2026-05-09T23:34:34 button=3 pin=GP26 event=down +2026-05-09T23:34:34 button=3 pin=GP26 event=up +2026-05-09T23:34:34 button=3 pin=GP26 event=down +2026-05-09T23:34:34 button=3 pin=GP26 event=up +2026-05-09T23:34:34 button=2 pin=GP27 event=down +2026-05-09T23:34:34 button=2 pin=GP27 event=up +2026-05-09T23:34:34 button=2 pin=GP27 event=down +2026-05-09T23:34:34 button=2 pin=GP27 event=up +2026-05-09T23:34:38 button=2 pin=GP27 event=down +2026-05-09T23:34:38 button=2 pin=GP27 event=up +2026-05-09T23:34:42 button=1 pin=GP28 event=down +2026-05-09T23:34:42 button=1 pin=GP28 event=up +2026-05-09T23:34:43 button=10 pin=GP16 event=down +2026-05-09T23:34:43 button=10 pin=GP16 event=up +2026-05-09T23:34:44 button=9 pin=GP17 event=down +2026-05-09T23:34:44 button=9 pin=GP17 event=up +2026-05-09T23:34:44 button=9 pin=GP17 event=down +2026-05-09T23:34:44 button=9 pin=GP17 event=up +2026-05-09T23:34:44 button=9 pin=GP17 event=down +2026-05-09T23:34:45 button=9 pin=GP17 event=up +2026-05-09T23:34:45 button=9 pin=GP17 event=down +2026-05-09T23:34:45 button=9 pin=GP17 event=up +2026-05-09T23:34:45 button=9 pin=GP17 event=down +2026-05-09T23:34:45 button=9 pin=GP17 event=up +2026-05-09T23:34:45 button=9 pin=GP17 event=down +2026-05-09T23:34:45 button=9 pin=GP17 event=up +2026-05-09T23:34:45 button=9 pin=GP17 event=down +2026-05-09T23:34:46 button=9 pin=GP17 event=up +2026-05-09T23:34:46 button=9 pin=GP17 event=down +2026-05-09T23:34:46 button=9 pin=GP17 event=up +2026-05-09T23:34:46 button=9 pin=GP17 event=down +2026-05-09T23:34:46 button=9 pin=GP17 event=up +2026-05-09T23:34:46 button=9 pin=GP17 event=down +2026-05-09T23:34:47 button=9 pin=GP17 event=up +2026-05-09T23:34:47 button=9 pin=GP17 event=down +2026-05-09T23:34:47 button=9 pin=GP17 event=up +2026-05-09T23:34:47 button=7 pin=GP18 event=down +2026-05-09T23:34:47 button=7 pin=GP18 event=up +2026-05-09T23:34:48 button=8 pin=GP19 event=down +2026-05-09T23:34:48 button=8 pin=GP19 event=up +2026-05-09T23:34:48 button=6 pin=GP20 event=down +2026-05-09T23:34:49 button=6 pin=GP20 event=up +2026-05-09T23:34:49 button=5 pin=GP21 event=down +2026-05-09T23:34:49 button=5 pin=GP21 event=up +2026-05-09T23:34:56 button=3 pin=GP26 event=down +2026-05-09T23:34:56 button=3 pin=GP26 event=up +2026-05-09T23:34:56 button=3 pin=GP26 event=down +2026-05-09T23:34:56 button=3 pin=GP26 event=up +2026-05-09T23:34:57 button=2 pin=GP27 event=down +2026-05-09T23:34:57 button=2 pin=GP27 event=up +2026-05-09T23:34:57 button=2 pin=GP27 event=down +2026-05-09T23:34:57 button=2 pin=GP27 event=up +2026-05-09T23:34:57 button=2 pin=GP27 event=down +2026-05-09T23:34:57 button=2 pin=GP27 event=up +2026-05-09T23:35:00 button=4 pin=GP22 event=down +2026-05-09T23:35:00 button=4 pin=GP22 event=up +2026-05-09T23:35:00 button=4 pin=GP22 event=down +2026-05-09T23:35:00 button=4 pin=GP22 event=up +2026-05-09T23:35:23 button=4 pin=GP22 event=down +2026-05-09T23:35:23 button=4 pin=GP22 event=up +2026-05-09T23:35:25 button=4 pin=GP22 event=down +2026-05-09T23:35:25 button=4 pin=GP22 event=up +2026-05-09T23:35:26 button=4 pin=GP22 event=down +2026-05-09T23:35:27 button=4 pin=GP22 event=up +2026-05-09T23:35:27 button=4 pin=GP22 event=down +2026-05-09T23:35:27 button=4 pin=GP22 event=up +2026-05-09T23:35:28 button=4 pin=GP22 event=down +2026-05-09T23:35:28 button=4 pin=GP22 event=up +2026-05-09T23:35:28 button=4 pin=GP22 event=down +2026-05-09T23:35:28 button=4 pin=GP22 event=up +2026-05-09T23:35:28 button=4 pin=GP22 event=down +2026-05-09T23:35:29 button=4 pin=GP22 event=up +2026-05-09T23:35:30 button=4 pin=GP22 event=down +2026-05-09T23:35:30 button=4 pin=GP22 event=up +2026-05-09T23:35:30 button=4 pin=GP22 event=down +2026-05-09T23:35:30 button=4 pin=GP22 event=up +2026-05-09T23:35:30 button=4 pin=GP22 event=down +2026-05-09T23:35:30 button=4 pin=GP22 event=up +2026-05-09T23:35:30 button=4 pin=GP22 event=down +2026-05-09T23:35:31 button=4 pin=GP22 event=up +2026-05-09T23:35:31 button=4 pin=GP22 event=down +2026-05-09T23:35:31 button=4 pin=GP22 event=up +2026-05-09T23:35:35 button=4 pin=GP22 event=down +2026-05-09T23:35:35 button=4 pin=GP22 event=up +2026-05-09T23:35:35 button=4 pin=GP22 event=down +2026-05-09T23:35:36 button=4 pin=GP22 event=up +2026-05-09T23:35:36 button=4 pin=GP22 event=down +2026-05-09T23:35:36 button=4 pin=GP22 event=up +2026-05-09T23:35:36 button=4 pin=GP22 event=down +2026-05-09T23:35:36 button=4 pin=GP22 event=up +2026-05-09T23:35:36 button=4 pin=GP22 event=down +2026-05-09T23:35:36 button=4 pin=GP22 event=up +2026-05-09T23:35:36 button=4 pin=GP22 event=down +2026-05-09T23:35:37 button=4 pin=GP22 event=up +2026-05-09T23:35:37 button=4 pin=GP22 event=down +2026-05-09T23:35:38 button=4 pin=GP22 event=up +2026-05-09T23:35:53 button=4 pin=GP22 event=down +2026-05-09T23:35:54 button=4 pin=GP22 event=up +2026-05-09T23:35:54 button=4 pin=GP22 event=down +2026-05-09T23:35:54 button=4 pin=GP22 event=up +2026-05-09T23:35:54 button=4 pin=GP22 event=down +2026-05-09T23:35:54 button=4 pin=GP22 event=up +2026-05-09T23:35:54 button=4 pin=GP22 event=down +2026-05-09T23:35:54 button=4 pin=GP22 event=up +2026-05-09T23:35:55 button=4 pin=GP22 event=down +2026-05-09T23:35:55 button=4 pin=GP22 event=up +2026-05-09T23:35:56 button=3 pin=GP26 event=down +2026-05-09T23:35:56 button=3 pin=GP26 event=up +2026-05-09T23:35:56 button=3 pin=GP26 event=down +2026-05-09T23:35:56 button=3 pin=GP26 event=up +2026-05-09T23:35:56 button=3 pin=GP26 event=down +2026-05-09T23:35:56 button=3 pin=GP26 event=up +2026-05-09T23:36:03 button=2 pin=GP27 event=down +2026-05-09T23:36:03 button=2 pin=GP27 event=up +2026-05-09T23:36:04 button=2 pin=GP27 event=down +2026-05-09T23:36:04 button=2 pin=GP27 event=up +2026-05-09T23:36:08 button=2 pin=GP27 event=down +2026-05-09T23:36:09 button=2 pin=GP27 event=up +2026-05-09T23:36:10 button=2 pin=GP27 event=down +2026-05-09T23:36:11 button=2 pin=GP27 event=up +2026-05-09T23:36:11 button=2 pin=GP27 event=down +2026-05-09T23:36:11 button=2 pin=GP27 event=up +2026-05-09T23:36:22 button=1 pin=GP28 event=down +2026-05-09T23:36:22 button=1 pin=GP28 event=up +2026-05-09T23:36:22 button=1 pin=GP28 event=down +2026-05-09T23:36:22 button=1 pin=GP28 event=up +2026-05-09T23:36:22 button=1 pin=GP28 event=down +2026-05-09T23:36:23 button=1 pin=GP28 event=up +2026-05-09T23:36:23 button=10 pin=GP16 event=down +2026-05-09T23:36:23 button=10 pin=GP16 event=up +2026-05-09T23:36:23 button=10 pin=GP16 event=down +2026-05-09T23:36:23 button=10 pin=GP16 event=up +2026-05-09T23:36:24 button=9 pin=GP17 event=down +2026-05-09T23:36:25 button=9 pin=GP17 event=up +2026-05-09T23:36:25 button=7 pin=GP18 event=down +2026-05-09T23:36:25 button=7 pin=GP18 event=up +2026-05-09T23:36:26 button=8 pin=GP19 event=down +2026-05-09T23:36:26 button=8 pin=GP19 event=up +2026-05-09T23:36:27 button=6 pin=GP20 event=down +2026-05-09T23:36:27 button=6 pin=GP20 event=up +2026-05-09T23:36:27 button=5 pin=GP21 event=down +2026-05-09T23:36:27 button=5 pin=GP21 event=up +2026-05-09T23:36:28 button=4 pin=GP22 event=down +2026-05-09T23:36:28 button=4 pin=GP22 event=up +2026-05-09T23:36:29 button=3 pin=GP26 event=down +2026-05-09T23:36:29 button=3 pin=GP26 event=up +2026-05-09T23:36:29 button=2 pin=GP27 event=down +2026-05-09T23:36:30 button=2 pin=GP27 event=up +2026-05-09T23:36:31 button=2 pin=GP27 event=down +2026-05-09T23:36:31 button=2 pin=GP27 event=up +2026-05-09T23:36:31 button=2 pin=GP27 event=down +2026-05-09T23:36:31 button=2 pin=GP27 event=up +2026-05-09T23:36:32 button=1 pin=GP28 event=down +2026-05-09T23:36:32 button=1 pin=GP28 event=up +2026-05-09T23:36:33 button=10 pin=GP16 event=down +2026-05-09T23:36:33 button=10 pin=GP16 event=up +2026-05-09T23:36:33 button=9 pin=GP17 event=down +2026-05-09T23:36:33 button=9 pin=GP17 event=up +2026-05-09T23:36:34 button=7 pin=GP18 event=down +2026-05-09T23:36:34 button=7 pin=GP18 event=up +2026-05-09T23:36:34 button=8 pin=GP19 event=down +2026-05-09T23:36:34 button=8 pin=GP19 event=up +2026-05-09T23:36:35 button=6 pin=GP20 event=down +2026-05-09T23:36:35 button=6 pin=GP20 event=up +2026-05-09T23:36:35 button=5 pin=GP21 event=down +2026-05-09T23:36:36 button=5 pin=GP21 event=up +2026-05-09T23:36:37 button=4 pin=GP22 event=down +2026-05-09T23:36:37 button=4 pin=GP22 event=up +2026-05-09T23:36:37 button=4 pin=GP22 event=down +2026-05-09T23:36:37 button=4 pin=GP22 event=up +2026-05-09T23:36:37 button=3 pin=GP26 event=down +2026-05-09T23:36:38 button=3 pin=GP26 event=up +2026-05-09T23:36:38 button=3 pin=GP26 event=down +2026-05-09T23:36:38 button=3 pin=GP26 event=up +2026-05-09T23:36:38 button=2 pin=GP27 event=down +2026-05-09T23:36:39 button=2 pin=GP27 event=up +2026-05-09T23:36:39 button=2 pin=GP27 event=down +2026-05-09T23:36:39 button=2 pin=GP27 event=up +2026-05-09T23:36:39 button=2 pin=GP27 event=down +2026-05-09T23:36:39 button=2 pin=GP27 event=up +2026-05-09T23:36:56 button=1 pin=GP28 event=down +2026-05-09T23:36:56 button=1 pin=GP28 event=up +2026-05-09T23:36:56 button=1 pin=GP28 event=down +2026-05-09T23:36:56 button=1 pin=GP28 event=up +2026-05-09T23:36:56 button=1 pin=GP28 event=down +2026-05-09T23:36:56 button=1 pin=GP28 event=up +2026-05-09T23:36:56 button=10 pin=GP16 event=down +2026-05-09T23:36:56 button=10 pin=GP16 event=up +2026-05-09T23:36:57 button=10 pin=GP16 event=down +2026-05-09T23:36:57 button=10 pin=GP16 event=up +2026-05-09T23:36:57 button=10 pin=GP16 event=down +2026-05-09T23:36:57 button=10 pin=GP16 event=up +2026-05-09T23:36:57 button=10 pin=GP16 event=down +2026-05-09T23:36:57 button=10 pin=GP16 event=up +2026-05-09T23:37:17 button=8 pin=GP19 event=down +2026-05-09T23:37:17 button=8 pin=GP19 event=up +2026-05-09T23:37:17 button=8 pin=GP19 event=down +2026-05-09T23:37:17 button=8 pin=GP19 event=up +2026-05-09T23:37:30 button=8 pin=GP19 event=down +2026-05-09T23:37:30 button=8 pin=GP19 event=up +2026-05-09T23:37:30 button=8 pin=GP19 event=down +2026-05-09T23:37:31 button=8 pin=GP19 event=up +2026-05-09T23:37:31 button=10 pin=GP16 event=down +2026-05-09T23:37:31 button=10 pin=GP16 event=up +2026-05-09T23:37:31 button=10 pin=GP16 event=down +2026-05-09T23:37:31 button=10 pin=GP16 event=up +2026-05-09T23:37:31 button=10 pin=GP16 event=down +2026-05-09T23:37:31 button=10 pin=GP16 event=up +2026-05-09T23:37:34 button=6 pin=GP20 event=down +2026-05-09T23:37:34 button=6 pin=GP20 event=up +2026-05-09T23:37:34 button=6 pin=GP20 event=down +2026-05-09T23:37:34 button=6 pin=GP20 event=up +2026-05-09T23:37:34 button=5 pin=GP21 event=down +2026-05-09T23:37:35 button=5 pin=GP21 event=up +2026-05-09T23:37:35 button=4 pin=GP22 event=down +2026-05-09T23:37:35 button=4 pin=GP22 event=up +2026-05-09T23:37:35 button=4 pin=GP22 event=down +2026-05-09T23:37:35 button=4 pin=GP22 event=up +2026-05-09T23:37:35 button=4 pin=GP22 event=down +2026-05-09T23:37:35 button=4 pin=GP22 event=up +2026-05-09T23:37:35 button=5 pin=GP21 event=down +2026-05-09T23:37:35 button=5 pin=GP21 event=up +2026-05-09T23:37:36 button=5 pin=GP21 event=down +2026-05-09T23:37:36 button=5 pin=GP21 event=up +2026-05-09T23:37:36 button=5 pin=GP21 event=down +2026-05-09T23:37:36 button=5 pin=GP21 event=up +2026-05-09T23:37:36 button=5 pin=GP21 event=down +2026-05-09T23:37:36 button=5 pin=GP21 event=up +2026-05-09T23:37:36 button=5 pin=GP21 event=down +2026-05-09T23:37:36 button=5 pin=GP21 event=up +2026-05-09T23:37:36 button=5 pin=GP21 event=down +2026-05-09T23:37:37 button=5 pin=GP21 event=up +2026-05-09T23:37:37 button=4 pin=GP22 event=down +2026-05-09T23:37:37 button=4 pin=GP22 event=up +2026-05-09T23:37:37 button=4 pin=GP22 event=down +2026-05-09T23:37:37 button=4 pin=GP22 event=up +2026-05-09T23:37:37 button=3 pin=GP26 event=down +2026-05-09T23:37:37 button=3 pin=GP26 event=up +2026-05-09T23:37:37 button=3 pin=GP26 event=down +2026-05-09T23:37:38 button=3 pin=GP26 event=up +2026-05-09T23:37:38 button=3 pin=GP26 event=down +2026-05-09T23:37:38 button=3 pin=GP26 event=up +2026-05-09T23:37:38 button=3 pin=GP26 event=down +2026-05-09T23:37:38 button=3 pin=GP26 event=up +2026-05-09T23:37:39 button=2 pin=GP27 event=down +2026-05-09T23:37:39 button=2 pin=GP27 event=up +2026-05-09T23:37:41 button=10 pin=GP16 event=down +2026-05-09T23:37:41 button=1 pin=GP28 event=down +2026-05-09T23:37:42 button=3 pin=GP26 event=down +2026-05-09T23:37:42 button=3 pin=GP26 event=up +2026-05-09T23:37:42 button=3 pin=GP26 event=down +2026-05-09T23:37:42 button=5 pin=GP21 event=down +2026-05-09T23:37:42 button=4 pin=GP22 event=down +2026-05-09T23:37:42 button=8 pin=GP19 event=down +2026-05-09T23:37:42 button=6 pin=GP20 event=down +2026-05-09T23:37:43 button=6 pin=GP20 event=up +2026-05-09T23:37:43 button=1 pin=GP28 event=up +2026-05-09T23:37:43 button=4 pin=GP22 event=up +2026-05-09T23:37:43 button=5 pin=GP21 event=up +2026-05-09T23:37:43 button=10 pin=GP16 event=up +2026-05-09T23:37:43 button=3 pin=GP26 event=up +2026-05-09T23:37:43 button=8 pin=GP19 event=up +2026-05-09T23:37:43 button=1 pin=GP28 event=down +2026-05-09T23:37:43 button=6 pin=GP20 event=down +2026-05-09T23:37:43 button=8 pin=GP19 event=down +2026-05-09T23:37:43 button=3 pin=GP26 event=down +2026-05-09T23:37:43 button=5 pin=GP21 event=down +2026-05-09T23:37:43 button=4 pin=GP22 event=down +2026-05-09T23:37:43 button=10 pin=GP16 event=down +2026-05-09T23:37:43 button=10 pin=GP16 event=up +2026-05-09T23:37:43 button=4 pin=GP22 event=up +2026-05-09T23:37:43 button=3 pin=GP26 event=up +2026-05-09T23:37:43 button=5 pin=GP21 event=up +2026-05-09T23:37:43 button=1 pin=GP28 event=up +2026-05-09T23:37:43 button=6 pin=GP20 event=up +2026-05-09T23:37:43 button=8 pin=GP19 event=up +2026-05-09T23:37:43 button=6 pin=GP20 event=down +2026-05-09T23:37:43 button=1 pin=GP28 event=down +2026-05-09T23:37:44 button=3 pin=GP26 event=down +2026-05-09T23:37:44 button=5 pin=GP21 event=down +2026-05-09T23:37:44 button=8 pin=GP19 event=down +2026-05-09T23:37:44 button=4 pin=GP22 event=down +2026-05-09T23:37:44 button=4 pin=GP22 event=up +2026-05-09T23:37:44 button=3 pin=GP26 event=up +2026-05-09T23:37:44 button=5 pin=GP21 event=up +2026-05-09T23:37:44 button=6 pin=GP20 event=up +2026-05-09T23:37:44 button=8 pin=GP19 event=up +2026-05-09T23:37:44 button=1 pin=GP28 event=up +2026-05-09T23:37:44 button=1 pin=GP28 event=down +2026-05-09T23:37:44 button=8 pin=GP19 event=down +2026-05-09T23:37:44 button=5 pin=GP21 event=down +2026-05-09T23:37:44 button=3 pin=GP26 event=down +2026-05-09T23:37:44 button=4 pin=GP22 event=down +2026-05-09T23:37:44 button=6 pin=GP20 event=down +2026-05-09T23:37:44 button=1 pin=GP28 event=up +2026-05-09T23:37:44 button=3 pin=GP26 event=up +2026-05-09T23:37:44 button=4 pin=GP22 event=up +2026-05-09T23:37:44 button=5 pin=GP21 event=up +2026-05-09T23:37:44 button=6 pin=GP20 event=up +2026-05-09T23:37:44 button=1 pin=GP28 event=down +2026-05-09T23:37:44 button=3 pin=GP26 event=down +2026-05-09T23:37:44 button=5 pin=GP21 event=down +2026-05-09T23:37:44 button=4 pin=GP22 event=down +2026-05-09T23:37:44 button=6 pin=GP20 event=down +2026-05-09T23:37:44 button=8 pin=GP19 event=up +2026-05-09T23:37:44 button=4 pin=GP22 event=up +2026-05-09T23:37:44 button=3 pin=GP26 event=up +2026-05-09T23:37:44 button=5 pin=GP21 event=up +2026-05-09T23:37:44 button=6 pin=GP20 event=up +2026-05-09T23:37:44 button=8 pin=GP19 event=down +2026-05-09T23:37:44 button=6 pin=GP20 event=down +2026-05-09T23:37:44 button=5 pin=GP21 event=down +2026-05-09T23:37:44 button=3 pin=GP26 event=down +2026-05-09T23:37:44 button=4 pin=GP22 event=down +2026-05-09T23:37:44 button=8 pin=GP19 event=up +2026-05-09T23:37:44 button=1 pin=GP28 event=up +2026-05-09T23:37:44 button=2 pin=GP27 event=down +2026-05-09T23:37:44 button=3 pin=GP26 event=up +2026-05-09T23:37:44 button=4 pin=GP22 event=up +2026-05-09T23:37:44 button=2 pin=GP27 event=up +2026-05-09T23:37:44 button=8 pin=GP19 event=down +2026-05-09T23:37:44 button=1 pin=GP28 event=down +2026-05-09T23:37:44 button=3 pin=GP26 event=down +2026-05-09T23:37:44 button=3 pin=GP26 event=up +2026-05-09T23:37:45 button=6 pin=GP20 event=up +2026-05-09T23:37:45 button=3 pin=GP26 event=down +2026-05-09T23:37:45 button=5 pin=GP21 event=up +2026-05-09T23:37:45 button=3 pin=GP26 event=up +2026-05-09T23:37:45 button=3 pin=GP26 event=down +2026-05-09T23:37:45 button=5 pin=GP21 event=down +2026-05-09T23:37:45 button=6 pin=GP20 event=down +2026-05-09T23:37:45 button=4 pin=GP22 event=down +2026-05-09T23:37:45 button=4 pin=GP22 event=up +2026-05-09T23:37:45 button=3 pin=GP26 event=up +2026-05-09T23:37:45 button=3 pin=GP26 event=down +2026-05-09T23:37:45 button=4 pin=GP22 event=down +2026-05-09T23:37:45 button=4 pin=GP22 event=up +2026-05-09T23:37:45 button=3 pin=GP26 event=up +2026-05-09T23:37:45 button=1 pin=GP28 event=up +2026-05-09T23:37:45 button=5 pin=GP21 event=up +2026-05-09T23:37:45 button=6 pin=GP20 event=up +2026-05-09T23:37:45 button=8 pin=GP19 event=up +2026-05-09T23:37:45 button=1 pin=GP28 event=down +2026-05-09T23:37:46 button=1 pin=GP28 event=up +2026-05-09T23:37:46 button=10 pin=GP16 event=down +2026-05-09T23:37:46 button=10 pin=GP16 event=up +2026-05-09T23:37:56 button=10 pin=GP16 event=down +2026-05-09T23:37:56 button=3 pin=GP26 event=down +2026-05-09T23:37:56 button=1 pin=GP28 event=down +2026-05-09T23:37:56 button=1 pin=GP28 event=up +2026-05-09T23:37:56 button=10 pin=GP16 event=up +2026-05-09T23:37:56 button=3 pin=GP26 event=up +2026-05-09T23:37:58 button=6 pin=GP20 event=down +2026-05-09T23:37:58 button=8 pin=GP19 event=down +2026-05-09T23:37:58 button=1 pin=GP28 event=down +2026-05-09T23:37:58 button=7 pin=GP18 event=down +2026-05-09T23:37:58 button=5 pin=GP21 event=down +2026-05-09T23:37:58 button=10 pin=GP16 event=down +2026-05-09T23:38:01 button=9 pin=GP17 event=down +2026-05-09T23:38:01 button=4 pin=GP22 event=down +2026-05-09T23:38:02 button=4 pin=GP22 event=up +2026-05-09T23:38:02 button=4 pin=GP22 event=down +2026-05-09T23:38:02 button=4 pin=GP22 event=up +2026-05-09T23:38:02 button=10 pin=GP16 event=up +2026-05-09T23:38:02 button=9 pin=GP17 event=up +2026-05-09T23:38:02 button=1 pin=GP28 event=up +2026-05-09T23:38:02 button=7 pin=GP18 event=up +2026-05-09T23:38:02 button=5 pin=GP21 event=up +2026-05-09T23:38:02 button=8 pin=GP19 event=up +2026-05-09T23:38:02 button=6 pin=GP20 event=up +2026-05-09T23:38:06 button=9 pin=GP17 event=down +2026-05-09T23:38:07 button=9 pin=GP17 event=up +2026-05-09T23:38:07 button=9 pin=GP17 event=down +2026-05-09T23:38:07 button=9 pin=GP17 event=up +2026-05-09T23:38:07 button=9 pin=GP17 event=down +2026-05-09T23:38:07 button=9 pin=GP17 event=up +2026-05-09T23:38:08 button=7 pin=GP18 event=down +2026-05-09T23:38:08 button=7 pin=GP18 event=up +2026-05-09T23:38:08 button=7 pin=GP18 event=down +2026-05-09T23:38:08 button=7 pin=GP18 event=up +2026-05-09T23:38:08 button=7 pin=GP18 event=down +2026-05-09T23:38:08 button=7 pin=GP18 event=up +2026-05-09T23:38:24 button=6 pin=GP20 event=down +2026-05-09T23:38:24 button=6 pin=GP20 event=up +2026-05-09T23:38:25 button=6 pin=GP20 event=down +2026-05-09T23:38:25 button=8 pin=GP19 event=down +2026-05-09T23:38:25 button=5 pin=GP21 event=down +2026-05-09T23:38:25 button=5 pin=GP21 event=up +2026-05-09T23:38:25 button=8 pin=GP19 event=up +2026-05-09T23:38:25 button=6 pin=GP20 event=up +2026-05-09T23:38:26 button=1 pin=GP28 event=down +2026-05-09T23:38:26 button=1 pin=GP28 event=up +2026-05-09T23:38:26 button=10 pin=GP16 event=down +2026-05-09T23:38:26 button=10 pin=GP16 event=up +2026-05-09T23:38:26 button=9 pin=GP17 event=down +2026-05-09T23:38:27 button=9 pin=GP17 event=up +2026-05-09T23:38:27 button=9 pin=GP17 event=down +2026-05-09T23:38:27 button=9 pin=GP17 event=up +2026-05-09T23:38:29 button=8 pin=GP19 event=down +2026-05-09T23:38:29 button=8 pin=GP19 event=up +2026-05-09T23:38:30 button=8 pin=GP19 event=down +2026-05-09T23:38:31 button=8 pin=GP19 event=up +2026-05-09T23:38:31 button=8 pin=GP19 event=down +2026-05-09T23:38:31 button=8 pin=GP19 event=up +2026-05-09T23:38:31 button=8 pin=GP19 event=down +2026-05-09T23:38:31 button=8 pin=GP19 event=up +2026-05-09T23:38:31 button=6 pin=GP20 event=down +2026-05-09T23:38:31 button=6 pin=GP20 event=up +2026-05-09T23:38:31 button=6 pin=GP20 event=down +2026-05-09T23:38:31 button=6 pin=GP20 event=up +2026-05-09T23:38:31 button=6 pin=GP20 event=down +2026-05-09T23:38:32 button=6 pin=GP20 event=up +2026-05-09T23:38:32 button=5 pin=GP21 event=down +2026-05-09T23:38:32 button=5 pin=GP21 event=up +2026-05-09T23:38:32 button=5 pin=GP21 event=down +2026-05-09T23:38:32 button=5 pin=GP21 event=up +2026-05-09T23:38:32 button=5 pin=GP21 event=down +2026-05-09T23:38:32 button=5 pin=GP21 event=up +2026-05-09T23:38:32 button=4 pin=GP22 event=down +2026-05-09T23:38:32 button=4 pin=GP22 event=up +2026-05-09T23:38:33 button=4 pin=GP22 event=down +2026-05-09T23:38:33 button=4 pin=GP22 event=up +2026-05-09T23:38:33 button=4 pin=GP22 event=down +2026-05-09T23:38:33 button=4 pin=GP22 event=up +2026-05-09T23:38:33 button=3 pin=GP26 event=down +2026-05-09T23:38:33 button=3 pin=GP26 event=up +2026-05-09T23:38:33 button=3 pin=GP26 event=down +2026-05-09T23:38:34 button=3 pin=GP26 event=up +2026-05-09T23:38:34 button=3 pin=GP26 event=down +2026-05-09T23:38:34 button=3 pin=GP26 event=up +2026-05-09T23:38:34 button=3 pin=GP26 event=down +2026-05-09T23:38:34 button=3 pin=GP26 event=up +2026-05-09T23:38:54 button=3 pin=GP26 event=down +2026-05-09T23:38:54 button=3 pin=GP26 event=up +2026-05-09T23:39:38 button=2 pin=GP27 event=down +2026-05-09T23:39:38 button=2 pin=GP27 event=up +2026-05-09T23:39:38 button=2 pin=GP27 event=down +2026-05-09T23:39:38 button=2 pin=GP27 event=up +2026-05-09T23:39:39 button=2 pin=GP27 event=down +2026-05-09T23:39:39 button=2 pin=GP27 event=up +2026-05-09T23:39:39 button=3 pin=GP26 event=down +2026-05-09T23:39:39 button=3 pin=GP26 event=up +2026-05-09T23:39:40 button=4 pin=GP22 event=down +2026-05-09T23:39:40 button=4 pin=GP22 event=up +2026-05-09T23:39:40 button=5 pin=GP21 event=down +2026-05-09T23:39:40 button=5 pin=GP21 event=up +2026-05-09T23:40:33 button=10 pin=GP16 event=down +2026-05-09T23:40:33 button=10 pin=GP16 event=up +2026-05-09T23:40:33 button=10 pin=GP16 event=down +2026-05-09T23:40:33 button=10 pin=GP16 event=up +2026-05-09T23:40:34 button=10 pin=GP16 event=down +2026-05-09T23:40:34 button=10 pin=GP16 event=up +2026-05-09T23:40:35 button=1 pin=GP28 event=down +2026-05-09T23:40:35 button=1 pin=GP28 event=up +2026-05-09T23:40:35 button=1 pin=GP28 event=down +2026-05-09T23:40:35 button=1 pin=GP28 event=up +2026-05-09T23:40:36 button=1 pin=GP28 event=down +2026-05-09T23:40:36 button=1 pin=GP28 event=up +2026-05-09T23:40:36 button=10 pin=GP16 event=down +2026-05-09T23:40:36 button=10 pin=GP16 event=up +2026-05-09T23:40:36 button=10 pin=GP16 event=down +2026-05-09T23:40:36 button=10 pin=GP16 event=up +2026-05-09T23:40:36 button=10 pin=GP16 event=down +2026-05-09T23:40:36 button=10 pin=GP16 event=up +2026-05-09T23:40:37 button=9 pin=GP17 event=down +2026-05-09T23:40:37 button=9 pin=GP17 event=up +2026-05-09T23:40:37 button=9 pin=GP17 event=down +2026-05-09T23:40:37 button=9 pin=GP17 event=up +2026-05-09T23:40:37 button=9 pin=GP17 event=down +2026-05-09T23:40:37 button=9 pin=GP17 event=up +2026-05-09T23:40:37 button=9 pin=GP17 event=down +2026-05-09T23:40:37 button=9 pin=GP17 event=up +2026-05-09T23:40:37 button=9 pin=GP17 event=down +2026-05-09T23:40:38 button=9 pin=GP17 event=up +2026-05-09T23:40:38 button=7 pin=GP18 event=down +2026-05-09T23:40:38 button=7 pin=GP18 event=up +2026-05-09T23:40:38 button=7 pin=GP18 event=down +2026-05-09T23:40:38 button=7 pin=GP18 event=up +2026-05-09T23:40:38 button=7 pin=GP18 event=down +2026-05-09T23:40:38 button=7 pin=GP18 event=up +2026-05-09T23:40:38 button=7 pin=GP18 event=down +2026-05-09T23:40:39 button=7 pin=GP18 event=up +2026-05-09T23:40:39 button=7 pin=GP18 event=down +2026-05-09T23:40:39 button=7 pin=GP18 event=up +2026-05-09T23:40:39 button=8 pin=GP19 event=down +2026-05-09T23:40:39 button=8 pin=GP19 event=up +2026-05-09T23:40:39 button=8 pin=GP19 event=down +2026-05-09T23:40:40 button=8 pin=GP19 event=up +2026-05-09T23:40:40 button=6 pin=GP20 event=down +2026-05-09T23:40:40 button=6 pin=GP20 event=up +2026-05-09T23:40:40 button=6 pin=GP20 event=down +2026-05-09T23:40:40 button=6 pin=GP20 event=up +2026-05-09T23:40:40 button=6 pin=GP20 event=down +2026-05-09T23:40:41 button=6 pin=GP20 event=up +2026-05-09T23:40:41 button=5 pin=GP21 event=down +2026-05-09T23:40:41 button=5 pin=GP21 event=up +2026-05-09T23:40:41 button=5 pin=GP21 event=down +2026-05-09T23:40:41 button=5 pin=GP21 event=up +2026-05-09T23:40:41 button=5 pin=GP21 event=down +2026-05-09T23:40:42 button=5 pin=GP21 event=up +2026-05-09T23:40:42 button=5 pin=GP21 event=down +2026-05-09T23:40:42 button=5 pin=GP21 event=up +2026-05-09T23:40:42 button=4 pin=GP22 event=down +2026-05-09T23:40:42 button=4 pin=GP22 event=up +2026-05-09T23:40:42 button=4 pin=GP22 event=down +2026-05-09T23:40:42 button=4 pin=GP22 event=up +2026-05-09T23:40:43 button=4 pin=GP22 event=down +2026-05-09T23:40:43 button=4 pin=GP22 event=up +2026-05-09T23:40:43 button=4 pin=GP22 event=down +2026-05-09T23:40:43 button=4 pin=GP22 event=up +2026-05-09T23:40:43 button=3 pin=GP26 event=down +2026-05-09T23:40:43 button=3 pin=GP26 event=up +2026-05-09T23:40:43 button=3 pin=GP26 event=down +2026-05-09T23:40:43 button=3 pin=GP26 event=up +2026-05-09T23:40:44 button=3 pin=GP26 event=down +2026-05-09T23:40:44 button=3 pin=GP26 event=up +2026-05-09T23:40:44 button=3 pin=GP26 event=down +2026-05-09T23:40:44 button=3 pin=GP26 event=up +2026-05-09T23:41:13 button=2 pin=GP27 event=down +2026-05-09T23:41:13 button=2 pin=GP27 event=up +2026-05-09T23:41:13 button=2 pin=GP27 event=down +2026-05-09T23:41:14 button=2 pin=GP27 event=up +2026-05-09T23:42:31 button=7 pin=GP18 event=down +2026-05-09T23:42:31 button=4 pin=GP22 event=down +2026-05-09T23:42:31 button=5 pin=GP21 event=down +2026-05-09T23:42:31 button=1 pin=GP28 event=down +2026-05-09T23:42:31 button=9 pin=GP17 event=down +2026-05-09T23:42:31 button=3 pin=GP26 event=down +2026-05-09T23:42:31 button=3 pin=GP26 event=up +2026-05-09T23:42:31 button=4 pin=GP22 event=up +2026-05-09T23:42:31 button=9 pin=GP17 event=up +2026-05-09T23:42:31 button=7 pin=GP18 event=up +2026-05-09T23:42:31 button=3 pin=GP26 event=down +2026-05-09T23:42:31 button=1 pin=GP28 event=up +2026-05-09T23:42:32 button=5 pin=GP21 event=up +2026-05-09T23:42:32 button=3 pin=GP26 event=up +2026-05-09T23:43:25 button=1 pin=GP28 event=down +2026-05-09T23:43:25 button=1 pin=GP28 event=up +2026-05-09T23:43:25 button=1 pin=GP28 event=down +2026-05-09T23:43:25 button=1 pin=GP28 event=up +2026-05-09T23:43:25 button=1 pin=GP28 event=down +2026-05-09T23:43:25 button=1 pin=GP28 event=up +2026-05-09T23:43:25 button=1 pin=GP28 event=down +2026-05-09T23:43:25 button=1 pin=GP28 event=up +2026-05-09T23:43:26 button=10 pin=GP16 event=down +2026-05-09T23:43:26 button=1 pin=GP28 event=down +2026-05-09T23:43:26 button=1 pin=GP28 event=up +2026-05-09T23:43:26 button=10 pin=GP16 event=up +2026-05-09T23:43:26 button=10 pin=GP16 event=down +2026-05-09T23:43:26 button=10 pin=GP16 event=up +2026-05-09T23:43:26 button=10 pin=GP16 event=down +2026-05-09T23:43:26 button=10 pin=GP16 event=up +2026-05-09T23:43:27 button=9 pin=GP17 event=down +2026-05-09T23:43:27 button=9 pin=GP17 event=up +2026-05-09T23:43:27 button=9 pin=GP17 event=down +2026-05-09T23:43:27 button=9 pin=GP17 event=up +2026-05-09T23:43:27 button=9 pin=GP17 event=down +2026-05-09T23:43:27 button=9 pin=GP17 event=up +2026-05-09T23:43:27 button=9 pin=GP17 event=down +2026-05-09T23:43:27 button=9 pin=GP17 event=up +2026-05-09T23:43:27 button=9 pin=GP17 event=down +2026-05-09T23:43:27 button=9 pin=GP17 event=up +2026-05-09T23:43:27 button=7 pin=GP18 event=down +2026-05-09T23:43:27 button=7 pin=GP18 event=up +2026-05-09T23:43:27 button=7 pin=GP18 event=down +2026-05-09T23:43:28 button=7 pin=GP18 event=up +2026-05-09T23:43:28 button=7 pin=GP18 event=down +2026-05-09T23:43:28 button=7 pin=GP18 event=up +2026-05-09T23:43:28 button=7 pin=GP18 event=down +2026-05-09T23:43:28 button=7 pin=GP18 event=up +2026-05-09T23:43:28 button=7 pin=GP18 event=down +2026-05-09T23:43:28 button=7 pin=GP18 event=up +2026-05-09T23:43:28 button=8 pin=GP19 event=down +2026-05-09T23:43:29 button=8 pin=GP19 event=up +2026-05-09T23:43:29 button=8 pin=GP19 event=down +2026-05-09T23:43:29 button=8 pin=GP19 event=up +2026-05-09T23:43:29 button=8 pin=GP19 event=down +2026-05-09T23:43:29 button=8 pin=GP19 event=up +2026-05-09T23:43:29 button=8 pin=GP19 event=down +2026-05-09T23:43:29 button=8 pin=GP19 event=up +2026-05-09T23:43:29 button=8 pin=GP19 event=down +2026-05-09T23:43:29 button=8 pin=GP19 event=up +2026-05-09T23:43:29 button=6 pin=GP20 event=down +2026-05-09T23:43:29 button=6 pin=GP20 event=up +2026-05-09T23:43:29 button=6 pin=GP20 event=down +2026-05-09T23:43:30 button=6 pin=GP20 event=up +2026-05-09T23:43:30 button=6 pin=GP20 event=down +2026-05-09T23:43:30 button=6 pin=GP20 event=up +2026-05-09T23:43:31 button=5 pin=GP21 event=down +2026-05-09T23:43:31 button=5 pin=GP21 event=up +2026-05-09T23:43:31 button=5 pin=GP21 event=down +2026-05-09T23:43:31 button=5 pin=GP21 event=up +2026-05-09T23:43:31 button=5 pin=GP21 event=down +2026-05-09T23:43:31 button=5 pin=GP21 event=up +2026-05-09T23:43:31 button=5 pin=GP21 event=down +2026-05-09T23:43:31 button=5 pin=GP21 event=up +2026-05-09T23:43:31 button=5 pin=GP21 event=down +2026-05-09T23:43:31 button=5 pin=GP21 event=up +2026-05-09T23:43:32 button=4 pin=GP22 event=down +2026-05-09T23:43:32 button=4 pin=GP22 event=up +2026-05-09T23:43:32 button=4 pin=GP22 event=down +2026-05-09T23:43:32 button=4 pin=GP22 event=up +2026-05-09T23:43:32 button=4 pin=GP22 event=down +2026-05-09T23:43:32 button=4 pin=GP22 event=up +2026-05-09T23:43:32 button=4 pin=GP22 event=down +2026-05-09T23:43:32 button=4 pin=GP22 event=up +2026-05-09T23:43:32 button=4 pin=GP22 event=down +2026-05-09T23:43:32 button=4 pin=GP22 event=up +2026-05-09T23:43:33 button=3 pin=GP26 event=down +2026-05-09T23:43:33 button=3 pin=GP26 event=up +2026-05-09T23:43:33 button=3 pin=GP26 event=down +2026-05-09T23:43:33 button=3 pin=GP26 event=up +2026-05-09T23:43:33 button=3 pin=GP26 event=down +2026-05-09T23:43:33 button=3 pin=GP26 event=up +2026-05-09T23:43:33 button=3 pin=GP26 event=down +2026-05-09T23:43:33 button=3 pin=GP26 event=up +2026-05-09T23:43:33 button=3 pin=GP26 event=down +2026-05-09T23:43:33 button=3 pin=GP26 event=up +2026-05-09T23:48:49 button=7 pin=GP18 event=down +2026-05-09T23:48:49 button=7 pin=GP18 event=up +2026-05-09T23:48:49 button=7 pin=GP18 event=down +2026-05-09T23:48:49 button=7 pin=GP18 event=up +2026-05-09T23:48:49 button=1 pin=GP28 event=down +2026-05-09T23:48:49 button=7 pin=GP18 event=down +2026-05-09T23:48:49 button=1 pin=GP28 event=up +2026-05-09T23:48:49 button=10 pin=GP16 event=down +2026-05-09T23:48:49 button=7 pin=GP18 event=up +2026-05-09T23:48:49 button=1 pin=GP28 event=down +2026-05-09T23:48:49 button=7 pin=GP18 event=down +2026-05-09T23:48:49 button=10 pin=GP16 event=up +2026-05-09T23:48:49 button=10 pin=GP16 event=down +2026-05-09T23:48:49 button=7 pin=GP18 event=up +2026-05-09T23:48:49 button=1 pin=GP28 event=up +2026-05-09T23:48:50 button=7 pin=GP18 event=down +2026-05-09T23:48:50 button=10 pin=GP16 event=up +2026-05-09T23:48:50 button=10 pin=GP16 event=down +2026-05-09T23:48:50 button=1 pin=GP28 event=down +2026-05-09T23:48:50 button=7 pin=GP18 event=up +2026-05-09T23:48:50 button=1 pin=GP28 event=up +2026-05-09T23:48:50 button=10 pin=GP16 event=up +2026-05-09T23:48:50 button=7 pin=GP18 event=down +2026-05-09T23:48:50 button=10 pin=GP16 event=down +2026-05-09T23:48:50 button=7 pin=GP18 event=up +2026-05-09T23:48:50 button=10 pin=GP16 event=up +2026-05-09T23:50:31 button=7 pin=GP18 event=down +2026-05-09T23:50:31 button=8 pin=GP19 event=down +2026-05-09T23:50:31 button=7 pin=GP18 event=up +2026-05-09T23:50:31 button=8 pin=GP19 event=up +2026-05-09T23:56:03 button=6 pin=GP20 event=down +2026-05-09T23:56:03 button=6 pin=GP20 event=up +2026-05-09T23:56:03 button=6 pin=GP20 event=down +2026-05-09T23:56:03 button=6 pin=GP20 event=up +2026-05-09T23:56:03 button=6 pin=GP20 event=down +2026-05-09T23:56:03 button=6 pin=GP20 event=up +2026-05-09T23:56:04 button=6 pin=GP20 event=down +2026-05-09T23:56:04 button=6 pin=GP20 event=up +2026-05-09T23:56:04 button=6 pin=GP20 event=down +2026-05-09T23:56:04 button=6 pin=GP20 event=up +2026-05-09T23:56:04 button=6 pin=GP20 event=down +2026-05-09T23:56:05 button=6 pin=GP20 event=up +2026-05-09T23:56:05 button=6 pin=GP20 event=down +2026-05-09T23:56:05 button=6 pin=GP20 event=up +2026-05-09T23:56:05 button=5 pin=GP21 event=down +2026-05-09T23:56:05 button=5 pin=GP21 event=up +2026-05-09T23:56:05 button=5 pin=GP21 event=down +2026-05-09T23:56:05 button=5 pin=GP21 event=up +2026-05-09T23:56:06 button=5 pin=GP21 event=down +2026-05-09T23:56:06 button=5 pin=GP21 event=up +2026-05-09T23:56:06 button=5 pin=GP21 event=down +2026-05-09T23:56:06 button=5 pin=GP21 event=up +2026-05-09T23:56:06 button=6 pin=GP20 event=down +2026-05-09T23:56:06 button=6 pin=GP20 event=up +2026-05-09T23:56:06 button=6 pin=GP20 event=down +2026-05-09T23:56:07 button=6 pin=GP20 event=up +2026-05-09T23:56:07 button=6 pin=GP20 event=down +2026-05-09T23:56:07 button=6 pin=GP20 event=up +2026-05-09T23:56:07 button=6 pin=GP20 event=down +2026-05-09T23:56:07 button=6 pin=GP20 event=up +2026-05-09T23:56:07 button=6 pin=GP20 event=down +2026-05-09T23:56:07 button=6 pin=GP20 event=up +2026-05-09T23:56:08 button=6 pin=GP20 event=down +2026-05-09T23:56:08 button=6 pin=GP20 event=up +2026-05-09T23:56:08 button=6 pin=GP20 event=down +2026-05-09T23:56:08 button=6 pin=GP20 event=up +2026-05-09T23:56:08 button=6 pin=GP20 event=down +2026-05-09T23:56:08 button=6 pin=GP20 event=up +2026-05-09T23:56:08 button=6 pin=GP20 event=down +2026-05-09T23:56:08 button=6 pin=GP20 event=up +2026-05-09T23:56:09 button=6 pin=GP20 event=down +2026-05-09T23:56:09 button=6 pin=GP20 event=up +2026-05-09T23:56:09 button=6 pin=GP20 event=down +2026-05-09T23:56:09 button=6 pin=GP20 event=up +2026-05-09T23:56:09 button=6 pin=GP20 event=down +2026-05-09T23:56:09 button=6 pin=GP20 event=up +2026-05-09T23:56:09 button=6 pin=GP20 event=down +2026-05-09T23:56:09 button=6 pin=GP20 event=up +2026-05-09T23:56:57 button=1 pin=GP28 event=down +2026-05-09T23:56:57 button=1 pin=GP28 event=up +2026-05-09T23:56:57 button=1 pin=GP28 event=down +2026-05-09T23:56:57 button=1 pin=GP28 event=up +2026-05-09T23:56:57 button=1 pin=GP28 event=down +2026-05-09T23:56:57 button=1 pin=GP28 event=up +2026-05-09T23:56:57 button=1 pin=GP28 event=down +2026-05-09T23:56:57 button=1 pin=GP28 event=up +2026-05-09T23:56:57 button=1 pin=GP28 event=down +2026-05-09T23:56:58 button=1 pin=GP28 event=up +2026-05-09T23:56:58 button=1 pin=GP28 event=down +2026-05-09T23:56:58 button=1 pin=GP28 event=up +2026-05-09T23:56:58 button=1 pin=GP28 event=down +2026-05-09T23:56:58 button=1 pin=GP28 event=up +2026-05-09T23:56:58 button=1 pin=GP28 event=down +2026-05-09T23:56:58 button=1 pin=GP28 event=up +2026-05-09T23:56:58 button=1 pin=GP28 event=down +2026-05-09T23:56:58 button=1 pin=GP28 event=up +2026-05-09T23:56:58 button=1 pin=GP28 event=down +2026-05-09T23:56:58 button=1 pin=GP28 event=up +2026-05-09T23:56:59 button=1 pin=GP28 event=down +2026-05-09T23:56:59 button=1 pin=GP28 event=up +2026-05-09T23:56:59 button=1 pin=GP28 event=down +2026-05-09T23:56:59 button=1 pin=GP28 event=up +2026-05-09T23:56:59 button=1 pin=GP28 event=down +2026-05-09T23:56:59 button=1 pin=GP28 event=up +2026-05-09T23:56:59 button=1 pin=GP28 event=down +2026-05-09T23:56:59 button=1 pin=GP28 event=up +2026-05-09T23:56:59 button=1 pin=GP28 event=down +2026-05-09T23:56:59 button=1 pin=GP28 event=up +2026-05-09T23:56:59 button=1 pin=GP28 event=down +2026-05-09T23:57:00 button=1 pin=GP28 event=up +2026-05-09T23:57:00 button=1 pin=GP28 event=down +2026-05-09T23:57:00 button=1 pin=GP28 event=up +2026-05-09T23:57:00 button=1 pin=GP28 event=down +2026-05-09T23:57:00 button=1 pin=GP28 event=up +2026-05-09T23:57:00 button=1 pin=GP28 event=down +2026-05-09T23:57:00 button=1 pin=GP28 event=up +2026-05-09T23:57:02 button=1 pin=GP28 event=down +2026-05-09T23:57:02 button=1 pin=GP28 event=up +2026-05-09T23:57:02 button=1 pin=GP28 event=down +2026-05-09T23:57:02 button=1 pin=GP28 event=up +2026-05-09T23:57:02 button=1 pin=GP28 event=down +2026-05-09T23:57:02 button=1 pin=GP28 event=up +2026-05-09T23:57:02 button=1 pin=GP28 event=down +2026-05-09T23:57:02 button=1 pin=GP28 event=up +2026-05-09T23:57:02 button=1 pin=GP28 event=down +2026-05-09T23:57:02 button=1 pin=GP28 event=up +2026-05-09T23:57:02 button=1 pin=GP28 event=down +2026-05-09T23:57:02 button=1 pin=GP28 event=up +2026-05-09T23:57:02 button=1 pin=GP28 event=down +2026-05-09T23:57:03 button=1 pin=GP28 event=up +2026-05-09T23:57:03 button=1 pin=GP28 event=down +2026-05-09T23:57:03 button=1 pin=GP28 event=up +2026-05-09T23:57:03 button=1 pin=GP28 event=down +2026-05-09T23:57:03 button=1 pin=GP28 event=up +2026-05-09T23:57:03 button=1 pin=GP28 event=down +2026-05-09T23:57:03 button=1 pin=GP28 event=up +2026-05-09T23:57:03 button=1 pin=GP28 event=down +2026-05-09T23:57:03 button=1 pin=GP28 event=up +2026-05-09T23:57:03 button=1 pin=GP28 event=down +2026-05-09T23:57:03 button=1 pin=GP28 event=up +2026-05-09T23:57:03 button=1 pin=GP28 event=down +2026-05-09T23:57:03 button=1 pin=GP28 event=up +2026-05-09T23:57:04 button=1 pin=GP28 event=down +2026-05-09T23:57:04 button=1 pin=GP28 event=up +2026-05-09T23:57:04 button=1 pin=GP28 event=down +2026-05-09T23:57:04 button=1 pin=GP28 event=up +2026-05-09T23:57:04 button=1 pin=GP28 event=down +2026-05-09T23:57:04 button=1 pin=GP28 event=up +2026-05-09T23:57:04 button=1 pin=GP28 event=down +2026-05-09T23:57:04 button=1 pin=GP28 event=up +2026-05-09T23:57:04 button=1 pin=GP28 event=down +2026-05-09T23:57:05 button=1 pin=GP28 event=up +2026-05-09T23:57:06 button=1 pin=GP28 event=down +2026-05-09T23:57:06 button=1 pin=GP28 event=up +2026-05-09T23:57:06 button=1 pin=GP28 event=down +2026-05-09T23:57:06 button=1 pin=GP28 event=up +2026-05-09T23:57:06 button=1 pin=GP28 event=down +2026-05-09T23:57:06 button=1 pin=GP28 event=up +2026-05-09T23:57:06 button=1 pin=GP28 event=down +2026-05-09T23:57:06 button=1 pin=GP28 event=up +2026-05-09T23:57:43 button=3 pin=GP26 event=down +2026-05-09T23:57:43 button=3 pin=GP26 event=up +2026-05-09T23:57:43 button=3 pin=GP26 event=down +2026-05-09T23:57:43 button=3 pin=GP26 event=up +2026-05-09T23:57:43 button=3 pin=GP26 event=down +2026-05-09T23:57:43 button=3 pin=GP26 event=up +2026-05-09T23:57:43 button=3 pin=GP26 event=down +2026-05-09T23:57:43 button=3 pin=GP26 event=up +2026-05-09T23:57:43 button=3 pin=GP26 event=down +2026-05-09T23:57:43 button=3 pin=GP26 event=up +2026-05-09T23:57:44 button=3 pin=GP26 event=down +2026-05-09T23:57:44 button=3 pin=GP26 event=up +2026-05-09T23:57:45 button=3 pin=GP26 event=down +2026-05-09T23:57:45 button=3 pin=GP26 event=up +2026-05-09T23:57:45 button=3 pin=GP26 event=down +2026-05-09T23:57:45 button=3 pin=GP26 event=up +2026-05-09T23:57:45 button=3 pin=GP26 event=down +2026-05-09T23:57:45 button=3 pin=GP26 event=up +2026-05-09T23:57:46 button=3 pin=GP26 event=down +2026-05-09T23:57:46 button=3 pin=GP26 event=up +2026-05-09T23:57:46 button=3 pin=GP26 event=down +2026-05-09T23:57:46 button=3 pin=GP26 event=up +2026-05-09T23:57:47 button=3 pin=GP26 event=down +2026-05-09T23:57:47 button=3 pin=GP26 event=up +2026-05-09T23:57:50 button=8 pin=GP19 event=down +2026-05-09T23:57:50 button=8 pin=GP19 event=up +2026-05-09T23:57:50 button=6 pin=GP20 event=down +2026-05-09T23:57:50 button=6 pin=GP20 event=up +2026-05-09T23:57:50 button=7 pin=GP18 event=down +2026-05-09T23:57:50 button=7 pin=GP18 event=up +2026-05-09T23:57:51 button=8 pin=GP19 event=down +2026-05-09T23:57:51 button=6 pin=GP20 event=down +2026-05-09T23:57:51 button=7 pin=GP18 event=down +2026-05-09T23:57:51 button=8 pin=GP19 event=up +2026-05-09T23:57:51 button=6 pin=GP20 event=up +2026-05-09T23:57:51 button=8 pin=GP19 event=down +2026-05-09T23:57:51 button=6 pin=GP20 event=down +2026-05-09T23:57:51 button=7 pin=GP18 event=up +2026-05-09T23:57:51 button=6 pin=GP20 event=up +2026-05-09T23:57:51 button=8 pin=GP19 event=up +2026-05-09T23:58:41 button=5 pin=GP21 event=down +2026-05-09T23:58:41 button=8 pin=GP19 event=down +2026-05-09T23:58:41 button=5 pin=GP21 event=up +2026-05-09T23:58:41 button=8 pin=GP19 event=up +2026-05-09T23:58:41 button=8 pin=GP19 event=down +2026-05-09T23:58:41 button=8 pin=GP19 event=up +2026-05-09T23:58:42 button=8 pin=GP19 event=down +2026-05-09T23:58:42 button=8 pin=GP19 event=up +2026-05-09T23:58:42 button=8 pin=GP19 event=down +2026-05-09T23:58:42 button=8 pin=GP19 event=up +2026-05-09T23:58:43 button=8 pin=GP19 event=down +2026-05-09T23:58:43 button=8 pin=GP19 event=up +2026-05-09T23:58:43 button=8 pin=GP19 event=down +2026-05-09T23:58:43 button=8 pin=GP19 event=up +2026-05-09T23:58:43 button=8 pin=GP19 event=down +2026-05-09T23:58:43 button=8 pin=GP19 event=up +2026-05-10T10:38:00 button=1 pin=GP28 event=down +2026-05-10T10:38:01 button=1 pin=GP28 event=up +2026-05-10T10:38:01 button=10 pin=GP16 event=down +2026-05-10T10:38:01 button=10 pin=GP16 event=up +2026-05-10T10:38:11 button=9 pin=GP17 event=down +2026-05-10T10:38:11 button=9 pin=GP17 event=up +2026-05-10T10:38:11 button=9 pin=GP17 event=down +2026-05-10T10:38:11 button=9 pin=GP17 event=up +2026-05-10T10:38:11 button=9 pin=GP17 event=down +2026-05-10T10:38:11 button=9 pin=GP17 event=up +2026-05-10T10:38:11 button=9 pin=GP17 event=down +2026-05-10T10:38:11 button=9 pin=GP17 event=up +2026-05-10T10:38:12 button=9 pin=GP17 event=down +2026-05-10T10:38:12 button=9 pin=GP17 event=up +2026-05-10T10:38:13 button=9 pin=GP17 event=down +2026-05-10T10:38:13 button=9 pin=GP17 event=up +2026-05-10T10:38:13 button=9 pin=GP17 event=down +2026-05-10T10:38:13 button=9 pin=GP17 event=up +2026-05-10T10:38:14 button=7 pin=GP18 event=down +2026-05-10T10:38:14 button=7 pin=GP18 event=up +2026-05-10T10:38:15 button=8 pin=GP19 event=down +2026-05-10T10:38:15 button=8 pin=GP19 event=up +2026-05-10T10:38:15 button=6 pin=GP20 event=down +2026-05-10T10:38:16 button=6 pin=GP20 event=up +2026-05-10T10:38:16 button=5 pin=GP21 event=down +2026-05-10T10:38:16 button=5 pin=GP21 event=up +2026-05-10T10:38:16 button=4 pin=GP22 event=down +2026-05-10T10:38:17 button=4 pin=GP22 event=up +2026-05-10T10:38:17 button=3 pin=GP26 event=down +2026-05-10T10:38:17 button=3 pin=GP26 event=up +2026-05-10T10:38:20 button=9 pin=GP17 event=down +2026-05-10T10:38:20 button=9 pin=GP17 event=up +2026-05-10T10:38:20 button=9 pin=GP17 event=down +2026-05-10T10:38:20 button=9 pin=GP17 event=up +2026-05-10T10:38:20 button=9 pin=GP17 event=down +2026-05-10T10:38:20 button=9 pin=GP17 event=up +2026-05-10T10:38:21 button=9 pin=GP17 event=down +2026-05-10T10:38:21 button=9 pin=GP17 event=up +2026-05-10T10:38:21 button=9 pin=GP17 event=down +2026-05-10T10:38:22 button=9 pin=GP17 event=up +2026-05-10T10:38:22 button=9 pin=GP17 event=down +2026-05-10T10:38:22 button=9 pin=GP17 event=up +2026-05-10T10:38:22 button=9 pin=GP17 event=down +2026-05-10T10:38:23 button=9 pin=GP17 event=up +2026-05-10T10:38:23 button=9 pin=GP17 event=down +2026-05-10T10:38:23 button=9 pin=GP17 event=up +2026-05-10T10:38:26 button=9 pin=GP17 event=down +2026-05-10T10:38:26 button=9 pin=GP17 event=up +2026-05-10T10:38:26 button=9 pin=GP17 event=down +2026-05-10T10:38:26 button=9 pin=GP17 event=up +2026-05-10T10:38:27 button=9 pin=GP17 event=down +2026-05-10T10:38:27 button=9 pin=GP17 event=up +2026-05-10T10:38:27 button=9 pin=GP17 event=down +2026-05-10T10:38:27 button=9 pin=GP17 event=up +2026-05-10T10:38:27 button=9 pin=GP17 event=down +2026-05-10T10:38:27 button=9 pin=GP17 event=up +2026-05-10T10:38:27 button=9 pin=GP17 event=down +2026-05-10T10:38:27 button=9 pin=GP17 event=up +2026-05-10T10:38:28 button=9 pin=GP17 event=down +2026-05-10T10:38:28 button=9 pin=GP17 event=up +2026-05-10T10:38:28 button=9 pin=GP17 event=down +2026-05-10T10:38:28 button=9 pin=GP17 event=up +2026-05-10T10:38:28 button=9 pin=GP17 event=down +2026-05-10T10:38:28 button=9 pin=GP17 event=up +2026-05-10T10:38:28 button=9 pin=GP17 event=down +2026-05-10T10:38:28 button=9 pin=GP17 event=up +2026-05-10T10:38:28 button=9 pin=GP17 event=down +2026-05-10T10:38:28 button=9 pin=GP17 event=up +2026-05-10T10:38:29 button=1 pin=GP28 event=down +2026-05-10T10:38:29 button=1 pin=GP28 event=up +2026-05-10T10:38:29 button=10 pin=GP16 event=down +2026-05-10T10:38:29 button=10 pin=GP16 event=up +2026-05-10T10:38:29 button=9 pin=GP17 event=down +2026-05-10T10:38:29 button=9 pin=GP17 event=up +2026-05-10T10:38:30 button=7 pin=GP18 event=down +2026-05-10T10:38:30 button=7 pin=GP18 event=up +2026-05-10T10:38:30 button=8 pin=GP19 event=down +2026-05-10T10:38:30 button=8 pin=GP19 event=up +2026-05-10T10:38:31 button=6 pin=GP20 event=down +2026-05-10T10:38:31 button=6 pin=GP20 event=up +2026-05-10T10:38:31 button=5 pin=GP21 event=down +2026-05-10T10:38:31 button=5 pin=GP21 event=up +2026-05-10T10:38:31 button=4 pin=GP22 event=down +2026-05-10T10:38:32 button=4 pin=GP22 event=up +2026-05-10T10:38:32 button=3 pin=GP26 event=down +2026-05-10T10:38:32 button=3 pin=GP26 event=up +2026-05-10T10:42:04 button=3 pin=GP26 event=down +2026-05-10T10:42:04 button=3 pin=GP26 event=up +2026-05-10T10:43:18 button=5 pin=GP21 event=down +2026-05-10T10:43:18 button=5 pin=GP21 event=up +2026-05-10T10:43:18 button=2 pin=GP27 event=down +2026-05-10T10:43:18 button=2 pin=GP27 event=up +2026-05-10T10:43:19 button=3 pin=GP26 event=down +2026-05-10T10:43:20 button=3 pin=GP26 event=up +2026-05-10T10:43:54 button=3 pin=GP26 event=down +2026-05-10T10:43:54 button=6 pin=GP20 event=down +2026-05-10T10:43:55 button=6 pin=GP20 event=up +2026-05-10T10:43:55 button=3 pin=GP26 event=up +2026-05-10T10:46:49 button=2 pin=GP27 event=down +2026-05-10T10:46:50 button=2 pin=GP27 event=up +2026-05-10T10:46:50 button=2 pin=GP27 event=down +2026-05-10T10:46:50 button=2 pin=GP27 event=up +2026-05-10T10:46:50 button=2 pin=GP27 event=down +2026-05-10T10:46:50 button=2 pin=GP27 event=up +2026-05-10T10:46:51 button=2 pin=GP27 event=down +2026-05-10T10:46:51 button=2 pin=GP27 event=up +2026-05-10T10:46:51 button=2 pin=GP27 event=down +2026-05-10T10:46:51 button=2 pin=GP27 event=up +2026-05-10T10:51:00 button=2 pin=GP27 event=down +2026-05-10T10:51:00 button=2 pin=GP27 event=up +2026-05-10T10:51:01 button=2 pin=GP27 event=down +2026-05-10T10:51:01 button=2 pin=GP27 event=up +2026-05-10T10:51:01 button=2 pin=GP27 event=down +2026-05-10T10:51:01 button=2 pin=GP27 event=up +2026-05-10T10:51:01 button=2 pin=GP27 event=down +2026-05-10T10:51:01 button=2 pin=GP27 event=up +2026-05-10T10:51:27 button=1 pin=GP28 event=down +2026-05-10T10:51:27 button=1 pin=GP28 event=up +2026-05-10T10:51:28 button=10 pin=GP16 event=down +2026-05-10T10:51:28 button=10 pin=GP16 event=up +2026-05-10T10:51:28 button=9 pin=GP17 event=down +2026-05-10T10:51:28 button=9 pin=GP17 event=up +2026-05-10T10:51:29 button=7 pin=GP18 event=down +2026-05-10T10:51:29 button=7 pin=GP18 event=up +2026-05-10T10:51:29 button=8 pin=GP19 event=down +2026-05-10T10:51:29 button=8 pin=GP19 event=up +2026-05-10T10:51:29 button=6 pin=GP20 event=down +2026-05-10T10:51:30 button=6 pin=GP20 event=up +2026-05-10T10:51:30 button=5 pin=GP21 event=down +2026-05-10T10:51:30 button=5 pin=GP21 event=up +2026-05-10T10:51:30 button=4 pin=GP22 event=down +2026-05-10T10:51:30 button=4 pin=GP22 event=up +2026-05-10T10:51:31 button=3 pin=GP26 event=down +2026-05-10T10:51:31 button=3 pin=GP26 event=up +2026-05-10T10:51:39 button=2 pin=GP27 event=down +2026-05-10T10:51:40 button=2 pin=GP27 event=up +2026-05-10T10:51:40 button=2 pin=GP27 event=down +2026-05-10T10:51:40 button=2 pin=GP27 event=up +2026-05-10T10:51:40 button=2 pin=GP27 event=down +2026-05-10T10:51:40 button=2 pin=GP27 event=up +2026-05-10T10:51:40 button=2 pin=GP27 event=down +2026-05-10T10:51:41 button=2 pin=GP27 event=up +2026-05-10T10:51:41 button=2 pin=GP27 event=down +2026-05-10T10:51:41 button=2 pin=GP27 event=up +2026-05-10T10:53:03 button=2 pin=GP27 event=down +2026-05-10T10:53:03 button=2 pin=GP27 event=up +2026-05-10T10:53:03 button=2 pin=GP27 event=down +2026-05-10T10:53:03 button=2 pin=GP27 event=up +2026-05-10T10:53:18 button=9 pin=GP17 event=down +2026-05-10T10:53:18 button=9 pin=GP17 event=up +2026-05-10T10:53:18 button=9 pin=GP17 event=down +2026-05-10T10:53:18 button=9 pin=GP17 event=up +2026-05-10T10:53:19 button=9 pin=GP17 event=down +2026-05-10T10:53:19 button=9 pin=GP17 event=up +2026-05-10T10:53:19 button=9 pin=GP17 event=down +2026-05-10T10:53:19 button=9 pin=GP17 event=up +2026-05-10T10:53:19 button=9 pin=GP17 event=down +2026-05-10T10:53:19 button=9 pin=GP17 event=up +2026-05-10T10:53:19 button=9 pin=GP17 event=down +2026-05-10T10:53:19 button=9 pin=GP17 event=up +2026-05-10T10:54:47 button=4 pin=GP22 event=down +2026-05-10T10:54:47 button=3 pin=GP26 event=down +2026-05-10T10:54:47 button=5 pin=GP21 event=down +2026-05-10T10:54:48 button=3 pin=GP26 event=up +2026-05-10T10:54:48 button=4 pin=GP22 event=up +2026-05-10T10:54:49 button=6 pin=GP20 event=down +2026-05-10T10:54:49 button=6 pin=GP20 event=up +2026-05-10T10:54:49 button=5 pin=GP21 event=up +2026-05-10T10:54:49 button=5 pin=GP21 event=down +2026-05-10T10:54:50 button=5 pin=GP21 event=up +2026-05-10T10:59:06 button=5 pin=GP21 event=down +2026-05-10T10:59:08 button=5 pin=GP21 event=up +2026-05-10T10:59:24 button=3 pin=GP26 event=down +2026-05-10T10:59:24 button=3 pin=GP26 event=up +2026-05-10T10:59:24 button=3 pin=GP26 event=down +2026-05-10T10:59:29 button=4 pin=GP22 event=down +2026-05-10T10:59:30 button=4 pin=GP22 event=up +2026-05-10T10:59:30 button=4 pin=GP22 event=down +2026-05-10T10:59:30 button=4 pin=GP22 event=up +2026-05-10T10:59:33 button=4 pin=GP22 event=down +2026-05-10T10:59:34 button=5 pin=GP21 event=down +2026-05-10T10:59:36 button=6 pin=GP20 event=down +2026-05-10T10:59:37 button=5 pin=GP21 event=up +2026-05-10T10:59:37 button=5 pin=GP21 event=down +2026-05-10T10:59:38 button=8 pin=GP19 event=down +2026-05-10T10:59:50 button=8 pin=GP19 event=up +2026-05-10T10:59:50 button=6 pin=GP20 event=up +2026-05-10T10:59:50 button=5 pin=GP21 event=up +2026-05-10T10:59:51 button=3 pin=GP26 event=up +2026-05-10T10:59:51 button=4 pin=GP22 event=up +2026-05-10T11:00:03 button=3 pin=GP26 event=down +2026-05-10T11:00:04 button=5 pin=GP21 event=down +2026-05-10T11:00:04 button=3 pin=GP26 event=up +2026-05-10T11:00:04 button=3 pin=GP26 event=down +2026-05-10T11:00:05 button=3 pin=GP26 event=up +2026-05-10T11:00:06 button=6 pin=GP20 event=down +2026-05-10T11:00:06 button=3 pin=GP26 event=down +2026-05-10T11:00:07 button=4 pin=GP22 event=down +2026-05-10T11:00:08 button=4 pin=GP22 event=up +2026-05-10T11:00:08 button=3 pin=GP26 event=up +2026-05-10T11:00:08 button=6 pin=GP20 event=up +2026-05-10T11:00:08 button=5 pin=GP21 event=up +2026-05-10T11:00:30 button=5 pin=GP21 event=down +2026-05-10T11:00:31 button=5 pin=GP21 event=up +2026-05-10T11:00:35 button=5 pin=GP21 event=down +2026-05-10T11:00:37 button=5 pin=GP21 event=up +2026-05-10T11:00:51 button=3 pin=GP26 event=down +2026-05-10T11:00:53 button=4 pin=GP22 event=down +2026-05-10T11:00:53 button=5 pin=GP21 event=down +2026-05-10T11:00:53 button=6 pin=GP20 event=down +2026-05-10T11:00:54 button=6 pin=GP20 event=up +2026-05-10T11:00:54 button=6 pin=GP20 event=down +2026-05-10T11:00:57 button=8 pin=GP19 event=down +2026-05-10T11:00:57 button=8 pin=GP19 event=up +2026-05-10T11:00:58 button=6 pin=GP20 event=up +2026-05-10T11:00:58 button=4 pin=GP22 event=up +2026-05-10T11:00:58 button=5 pin=GP21 event=up +2026-05-10T11:00:58 button=3 pin=GP26 event=up +2026-05-10T11:01:06 button=3 pin=GP26 event=down +2026-05-10T11:01:07 button=5 pin=GP21 event=down +2026-05-10T11:01:08 button=4 pin=GP22 event=down +2026-05-10T11:01:08 button=4 pin=GP22 event=up +2026-05-10T11:01:10 button=6 pin=GP20 event=down +2026-05-10T11:01:11 button=4 pin=GP22 event=down +2026-05-10T11:01:11 button=4 pin=GP22 event=up +2026-05-10T11:01:11 button=4 pin=GP22 event=down +2026-05-10T11:01:14 button=8 pin=GP19 event=down +2026-05-10T11:01:29 button=8 pin=GP19 event=up +2026-05-10T11:01:29 button=4 pin=GP22 event=up +2026-05-10T11:01:29 button=5 pin=GP21 event=up +2026-05-10T11:01:29 button=6 pin=GP20 event=up +2026-05-10T11:01:29 button=3 pin=GP26 event=up +2026-05-10T11:01:38 button=5 pin=GP21 event=down +2026-05-10T11:01:39 button=5 pin=GP21 event=up +2026-05-10T11:01:39 button=3 pin=GP26 event=down +2026-05-10T11:01:39 button=4 pin=GP22 event=down +2026-05-10T11:01:40 button=5 pin=GP21 event=down +2026-05-10T11:01:40 button=5 pin=GP21 event=up +2026-05-10T11:01:40 button=4 pin=GP22 event=up +2026-05-10T11:01:40 button=3 pin=GP26 event=up +2026-05-10T11:01:41 button=6 pin=GP20 event=down +2026-05-10T11:01:41 button=5 pin=GP21 event=down +2026-05-10T11:01:41 button=3 pin=GP26 event=down +2026-05-10T11:01:41 button=8 pin=GP19 event=down +2026-05-10T11:01:41 button=4 pin=GP22 event=down +2026-05-10T11:01:41 button=7 pin=GP18 event=down +2026-05-10T11:01:41 button=7 pin=GP18 event=up +2026-05-10T11:01:41 button=8 pin=GP19 event=up +2026-05-10T11:01:41 button=6 pin=GP20 event=up +2026-05-10T11:01:41 button=4 pin=GP22 event=up +2026-05-10T11:01:41 button=5 pin=GP21 event=up +2026-05-10T11:01:41 button=3 pin=GP26 event=up +2026-05-10T11:01:41 button=3 pin=GP26 event=down +2026-05-10T11:01:41 button=4 pin=GP22 event=down +2026-05-10T11:01:41 button=5 pin=GP21 event=down +2026-05-10T11:01:41 button=6 pin=GP20 event=down +2026-05-10T11:01:41 button=8 pin=GP19 event=down +2026-05-10T11:01:41 button=8 pin=GP19 event=up +2026-05-10T11:01:41 button=3 pin=GP26 event=up +2026-05-10T11:01:41 button=4 pin=GP22 event=up +2026-05-10T11:01:41 button=5 pin=GP21 event=up +2026-05-10T11:01:41 button=6 pin=GP20 event=up +2026-05-10T11:01:41 button=3 pin=GP26 event=down +2026-05-10T11:01:41 button=4 pin=GP22 event=down +2026-05-10T11:01:41 button=5 pin=GP21 event=down +2026-05-10T11:01:41 button=6 pin=GP20 event=down +2026-05-10T11:01:41 button=8 pin=GP19 event=down +2026-05-10T11:01:41 button=7 pin=GP18 event=down +2026-05-10T11:01:41 button=7 pin=GP18 event=up +2026-05-10T11:01:42 button=8 pin=GP19 event=up +2026-05-10T11:01:42 button=3 pin=GP26 event=up +2026-05-10T11:01:42 button=4 pin=GP22 event=up +2026-05-10T11:01:42 button=5 pin=GP21 event=up +2026-05-10T11:01:42 button=6 pin=GP20 event=up +2026-05-10T11:02:02 button=3 pin=GP26 event=down +2026-05-10T11:02:02 button=4 pin=GP22 event=down +2026-05-10T11:02:03 button=5 pin=GP21 event=down +2026-05-10T11:02:03 button=5 pin=GP21 event=up +2026-05-10T11:02:03 button=3 pin=GP26 event=up +2026-05-10T11:02:04 button=3 pin=GP26 event=down +2026-05-10T11:02:04 button=5 pin=GP21 event=down +2026-05-10T11:02:05 button=5 pin=GP21 event=up +2026-05-10T11:02:05 button=5 pin=GP21 event=down +2026-05-10T11:02:05 button=5 pin=GP21 event=up +2026-05-10T11:02:05 button=5 pin=GP21 event=down +2026-05-10T11:02:05 button=3 pin=GP26 event=up +2026-05-10T11:02:05 button=5 pin=GP21 event=up +2026-05-10T11:02:06 button=3 pin=GP26 event=down +2026-05-10T11:02:06 button=5 pin=GP21 event=down +2026-05-10T11:02:07 button=5 pin=GP21 event=up +2026-05-10T11:02:07 button=3 pin=GP26 event=up +2026-05-10T11:02:07 button=4 pin=GP22 event=up +2026-05-10T11:02:09 button=3 pin=GP26 event=down +2026-05-10T11:02:09 button=4 pin=GP22 event=down +2026-05-10T11:02:09 button=5 pin=GP21 event=down +2026-05-10T11:02:09 button=5 pin=GP21 event=up +2026-05-10T11:02:10 button=5 pin=GP21 event=down +2026-05-10T11:02:14 button=6 pin=GP20 event=down +2026-05-10T11:02:20 button=6 pin=GP20 event=up +2026-05-10T11:02:20 button=4 pin=GP22 event=up +2026-05-10T11:02:20 button=5 pin=GP21 event=up +2026-05-10T11:02:20 button=3 pin=GP26 event=up +2026-05-10T11:02:28 button=3 pin=GP26 event=down +2026-05-10T11:02:35 button=4 pin=GP22 event=down +2026-05-10T11:02:35 button=5 pin=GP21 event=down +2026-05-10T11:02:36 button=5 pin=GP21 event=up +2026-05-10T11:02:36 button=4 pin=GP22 event=up +2026-05-10T11:02:37 button=3 pin=GP26 event=up +2026-05-10T11:02:37 button=3 pin=GP26 event=down +2026-05-10T11:02:38 button=3 pin=GP26 event=up +2026-05-10T11:02:38 button=3 pin=GP26 event=down +2026-05-10T11:02:40 button=4 pin=GP22 event=down +2026-05-10T11:02:40 button=5 pin=GP21 event=down +2026-05-10T11:02:41 button=5 pin=GP21 event=up +2026-05-10T11:02:41 button=4 pin=GP22 event=up +2026-05-10T11:02:41 button=3 pin=GP26 event=up +2026-05-10T11:11:18 button=3 pin=GP26 event=down +2026-05-10T11:11:19 button=3 pin=GP26 event=up +2026-05-10T11:11:24 button=3 pin=GP26 event=down +2026-05-10T11:11:24 button=3 pin=GP26 event=up +2026-05-10T11:11:25 button=3 pin=GP26 event=down +2026-05-10T11:11:26 button=3 pin=GP26 event=up +2026-05-10T11:12:49 button=2 pin=GP27 event=down +2026-05-10T11:12:49 button=2 pin=GP27 event=up +2026-05-10T11:12:50 button=2 pin=GP27 event=down +2026-05-10T11:12:50 button=2 pin=GP27 event=up +2026-05-10T11:12:50 button=2 pin=GP27 event=down +2026-05-10T11:12:50 button=2 pin=GP27 event=up +2026-05-10T11:12:50 button=2 pin=GP27 event=down +2026-05-10T11:12:50 button=2 pin=GP27 event=up +2026-05-10T11:12:50 button=3 pin=GP26 event=down +2026-05-10T11:12:51 button=3 pin=GP26 event=up +2026-05-10T11:12:51 button=4 pin=GP22 event=down +2026-05-10T11:12:52 button=4 pin=GP22 event=up +2026-05-10T11:12:52 button=5 pin=GP21 event=down +2026-05-10T11:12:52 button=5 pin=GP21 event=up +2026-05-10T11:12:52 button=6 pin=GP20 event=down +2026-05-10T11:12:52 button=6 pin=GP20 event=up +2026-05-10T11:12:53 button=8 pin=GP19 event=down +2026-05-10T11:12:53 button=8 pin=GP19 event=up +2026-05-10T11:12:53 button=7 pin=GP18 event=down +2026-05-10T11:12:53 button=7 pin=GP18 event=up +2026-05-10T11:12:54 button=9 pin=GP17 event=down +2026-05-10T11:12:54 button=9 pin=GP17 event=up +2026-05-10T11:12:55 button=10 pin=GP16 event=down +2026-05-10T11:12:55 button=10 pin=GP16 event=up +2026-05-10T11:12:55 button=1 pin=GP28 event=down +2026-05-10T11:12:55 button=1 pin=GP28 event=up +2026-05-10T11:13:24 button=2 pin=GP27 event=down +2026-05-10T11:13:24 button=2 pin=GP27 event=up +2026-05-10T11:13:24 button=5 pin=GP21 event=down +2026-05-10T11:13:25 button=2 pin=GP27 event=down +2026-05-10T11:13:25 button=5 pin=GP21 event=up +2026-05-10T11:13:27 button=2 pin=GP27 event=up +2026-05-10T11:13:28 button=2 pin=GP27 event=down +2026-05-10T11:13:28 button=2 pin=GP27 event=up +2026-05-10T11:13:30 button=2 pin=GP27 event=down +2026-05-10T11:13:31 button=2 pin=GP27 event=up +2026-05-10T11:13:31 button=10 pin=GP16 event=down +2026-05-10T11:13:31 button=2 pin=GP27 event=down +2026-05-10T11:13:31 button=10 pin=GP16 event=up +2026-05-10T11:13:32 button=2 pin=GP27 event=up +2026-05-10T11:13:32 button=2 pin=GP27 event=down +2026-05-10T11:13:33 button=2 pin=GP27 event=up +2026-05-10T11:13:34 button=2 pin=GP27 event=down +2026-05-10T11:13:37 button=2 pin=GP27 event=up +2026-05-10T11:13:38 button=2 pin=GP27 event=down +2026-05-10T11:13:41 button=2 pin=GP27 event=up +2026-05-10T11:13:41 button=2 pin=GP27 event=down +2026-05-10T11:13:41 button=2 pin=GP27 event=up +2026-05-10T11:13:42 button=2 pin=GP27 event=down +2026-05-10T11:13:42 button=2 pin=GP27 event=up +2026-05-10T11:13:42 button=2 pin=GP27 event=down +2026-05-10T11:13:42 button=2 pin=GP27 event=up +2026-05-10T11:13:42 button=2 pin=GP27 event=down +2026-05-10T11:13:42 button=2 pin=GP27 event=up +2026-05-10T11:13:42 button=2 pin=GP27 event=down +2026-05-10T11:13:42 button=2 pin=GP27 event=up +2026-05-10T11:13:42 button=2 pin=GP27 event=down +2026-05-10T11:13:43 button=2 pin=GP27 event=up +2026-05-10T11:13:48 button=2 pin=GP27 event=down +2026-05-10T11:13:48 button=2 pin=GP27 event=up +2026-05-10T11:13:48 button=3 pin=GP26 event=down +2026-05-10T11:13:48 button=3 pin=GP26 event=up +2026-05-10T11:13:49 button=4 pin=GP22 event=down +2026-05-10T11:13:49 button=4 pin=GP22 event=up +2026-05-10T11:13:49 button=5 pin=GP21 event=down +2026-05-10T11:13:49 button=5 pin=GP21 event=up +2026-05-10T11:13:50 button=6 pin=GP20 event=down +2026-05-10T11:13:50 button=6 pin=GP20 event=up +2026-05-10T11:13:50 button=8 pin=GP19 event=down +2026-05-10T11:13:50 button=8 pin=GP19 event=up +2026-05-10T11:13:51 button=7 pin=GP18 event=down +2026-05-10T11:13:51 button=7 pin=GP18 event=up +2026-05-10T11:13:51 button=9 pin=GP17 event=down +2026-05-10T11:13:51 button=9 pin=GP17 event=up +2026-05-10T11:13:52 button=10 pin=GP16 event=down +2026-05-10T11:13:52 button=10 pin=GP16 event=up +2026-05-10T11:13:52 button=1 pin=GP28 event=down +2026-05-10T11:13:53 button=1 pin=GP28 event=up +2026-05-10T11:18:18 button=8 pin=GP19 event=down +2026-05-10T11:18:18 button=8 pin=GP19 event=up +2026-05-10T11:19:30 button=1 pin=GP28 event=down +2026-05-10T11:19:30 button=1 pin=GP28 event=up +2026-05-10T11:19:31 button=10 pin=GP16 event=down +2026-05-10T11:19:31 button=10 pin=GP16 event=up +2026-05-10T11:19:31 button=9 pin=GP17 event=down +2026-05-10T11:19:31 button=9 pin=GP17 event=up +2026-05-10T11:19:32 button=7 pin=GP18 event=down +2026-05-10T11:19:32 button=7 pin=GP18 event=up +2026-05-10T11:19:32 button=8 pin=GP19 event=down +2026-05-10T11:19:32 button=8 pin=GP19 event=up +2026-05-10T11:19:32 button=6 pin=GP20 event=down +2026-05-10T11:19:33 button=6 pin=GP20 event=up +2026-05-10T11:19:33 button=5 pin=GP21 event=down +2026-05-10T11:19:33 button=5 pin=GP21 event=up +2026-05-10T11:19:33 button=4 pin=GP22 event=down +2026-05-10T11:19:34 button=4 pin=GP22 event=up +2026-05-10T11:19:34 button=3 pin=GP26 event=down +2026-05-10T11:19:34 button=3 pin=GP26 event=up +2026-05-10T11:19:34 button=2 pin=GP27 event=down +2026-05-10T11:19:34 button=2 pin=GP27 event=up +2026-05-10T11:35:38 button=9 pin=GP17 event=down +2026-05-10T11:35:38 button=9 pin=GP17 event=up +2026-05-10T11:35:38 button=9 pin=GP17 event=down +2026-05-10T11:35:38 button=9 pin=GP17 event=up diff --git a/exports/box.stl b/exports/box.stl new file mode 100644 index 0000000..9598ea4 --- /dev/null +++ b/exports/box.stl @@ -0,0 +1,702 @@ +solid ASCII + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.410000e+02 -9.000000e+00 2.000000e+00 + vertex -1.434998e+02 2.535000e+01 2.000000e+00 + vertex -1.409998e+02 -9.000000e+00 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 2.000000e+00 + vertex -1.434998e+02 2.535000e+01 2.000000e+00 + vertex 9.150000e+01 2.535000e+01 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 2.000000e+00 + vertex 9.150000e+01 2.535000e+01 2.000000e+00 + vertex 9.150000e+01 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.410000e+02 -1.235000e+01 2.000000e+00 + vertex -1.434998e+02 -1.235000e+01 2.000000e+00 + vertex -1.410000e+02 -9.000000e+00 2.000000e+00 + endloop + endfacet + facet normal -0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.410000e+02 -9.000000e+00 2.000000e+00 + vertex -1.434998e+02 -1.235000e+01 2.000000e+00 + vertex -1.434998e+02 2.535000e+01 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 9.150000e+01 -1.235000e+01 2.000000e+00 + vertex -1.409998e+02 -1.235000e+01 2.000000e+00 + vertex -1.409998e+02 -9.000000e+00 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + vertex 8.900000e+01 -9.000000e+00 5.000000e+00 + vertex -1.409998e+02 2.285000e+01 5.000000e+00 + endloop + endfacet + facet normal -0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.409998e+02 2.285000e+01 5.000000e+00 + vertex 8.900000e+01 -9.000000e+00 5.000000e+00 + vertex 8.900000e+01 2.285000e+01 5.000000e+00 + endloop + endfacet + facet normal -0.000000e+00 -0.000000e+00 -1.000000e+00 + outer loop + vertex -1.409998e+02 1.215000e+01 1.270000e+01 + vertex -1.409998e+02 8.499998e-01 1.270000e+01 + vertex -1.434998e+02 1.215000e+01 1.270000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.434998e+02 1.215000e+01 1.270000e+01 + vertex -1.409998e+02 8.499998e-01 1.270000e+01 + vertex -1.434998e+02 8.499998e-01 1.270000e+01 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 1.215000e+01 6.000000e+00 + vertex -1.409998e+02 1.215000e+01 1.270000e+01 + vertex -1.434998e+02 1.215000e+01 6.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 1.215000e+01 6.000000e+00 + vertex -1.409998e+02 1.215000e+01 1.270000e+01 + vertex -1.434998e+02 1.215000e+01 1.270000e+01 + endloop + endfacet + facet normal 0.000000e+00 -0.000000e+00 1.000000e+00 + outer loop + vertex -1.409998e+02 8.499998e-01 6.000000e+00 + vertex -1.409998e+02 1.215000e+01 6.000000e+00 + vertex -1.434998e+02 8.499998e-01 6.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.434998e+02 8.499998e-01 6.000000e+00 + vertex -1.409998e+02 1.215000e+01 6.000000e+00 + vertex -1.434998e+02 1.215000e+01 6.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 8.499998e-01 1.270000e+01 + vertex -1.409998e+02 8.499998e-01 6.000000e+00 + vertex -1.434998e+02 8.499998e-01 1.270000e+01 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 8.499998e-01 1.270000e+01 + vertex -1.409998e+02 8.499998e-01 6.000000e+00 + vertex -1.434998e+02 8.499998e-01 6.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 8.600016e+01 1.885000e+01 3.748780e+01 + vertex 8.600016e+01 -5.000000e+00 3.748780e+01 + vertex 8.900000e+01 -9.000000e+00 3.748780e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 8.900000e+01 -9.000000e+00 3.748780e+01 + vertex 8.600016e+01 -5.000000e+00 3.748780e+01 + vertex -1.379998e+02 -5.000000e+00 3.748780e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 8.900000e+01 -9.000000e+00 3.748780e+01 + vertex -1.379998e+02 -5.000000e+00 3.748780e+01 + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + vertex -1.379998e+02 -5.000000e+00 3.748780e+01 + vertex -1.379998e+02 1.885000e+01 3.748780e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + vertex -1.379998e+02 1.885000e+01 3.748780e+01 + vertex -1.409998e+02 2.285000e+01 3.748780e+01 + endloop + endfacet + facet normal -0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.409998e+02 2.285000e+01 3.748780e+01 + vertex -1.379998e+02 1.885000e+01 3.748780e+01 + vertex 8.900000e+01 2.285000e+01 3.748780e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 8.900000e+01 2.285000e+01 3.748780e+01 + vertex -1.379998e+02 1.885000e+01 3.748780e+01 + vertex 8.600016e+01 1.885000e+01 3.748780e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 8.900000e+01 2.285000e+01 3.748780e+01 + vertex 8.600016e+01 1.885000e+01 3.748780e+01 + vertex 8.900000e+01 -9.000000e+00 3.748780e+01 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex 8.600016e+01 -5.000000e+00 3.748780e+01 + vertex 8.600016e+01 -5.000000e+00 3.652193e+01 + vertex -1.379998e+02 -5.000000e+00 3.748780e+01 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex -1.379998e+02 -5.000000e+00 3.748780e+01 + vertex 8.600016e+01 -5.000000e+00 3.652193e+01 + vertex -1.379998e+02 -5.000000e+00 3.652193e+01 + endloop + endfacet + facet normal -0.000000e+00 -1.000000e+00 -0.000000e+00 + outer loop + vertex 8.600016e+01 1.885000e+01 3.748780e+01 + vertex -1.379998e+02 1.885000e+01 3.748780e+01 + vertex 8.600016e+01 1.885000e+01 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 0.000000e+00 + outer loop + vertex 8.600016e+01 1.885000e+01 3.652193e+01 + vertex -1.379998e+02 1.885000e+01 3.748780e+01 + vertex -1.379998e+02 1.885000e+01 3.652193e+01 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 -0.000000e+00 + outer loop + vertex -1.379998e+02 1.885000e+01 3.652193e+01 + vertex -1.379998e+02 1.885000e+01 3.748780e+01 + vertex -1.379998e+02 -5.000000e+00 3.652193e+01 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.379998e+02 -5.000000e+00 3.652193e+01 + vertex -1.379998e+02 1.885000e+01 3.748780e+01 + vertex -1.379998e+02 -5.000000e+00 3.748780e+01 + endloop + endfacet + facet normal -1.000000e+00 -0.000000e+00 -0.000000e+00 + outer loop + vertex 8.600016e+01 1.885000e+01 3.748780e+01 + vertex 8.600016e+01 1.885000e+01 3.652193e+01 + vertex 8.600016e+01 -5.000000e+00 3.748780e+01 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex 8.600016e+01 -5.000000e+00 3.748780e+01 + vertex 8.600016e+01 1.885000e+01 3.652193e+01 + vertex 8.600016e+01 -5.000000e+00 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 8.900000e+01 -9.000000e+00 3.652193e+01 + vertex 8.600016e+01 1.885000e+01 3.652193e+01 + vertex 8.900000e+01 2.285000e+01 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 8.900000e+01 2.285000e+01 3.652193e+01 + vertex 8.600016e+01 1.885000e+01 3.652193e+01 + vertex -1.379998e+02 1.885000e+01 3.652193e+01 + endloop + endfacet + facet normal -0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 8.900000e+01 2.285000e+01 3.652193e+01 + vertex -1.379998e+02 1.885000e+01 3.652193e+01 + vertex -1.409998e+02 2.285000e+01 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.409998e+02 2.285000e+01 3.652193e+01 + vertex -1.379998e+02 1.885000e+01 3.652193e+01 + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + vertex -1.379998e+02 1.885000e+01 3.652193e+01 + vertex -1.379998e+02 -5.000000e+00 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + vertex -1.379998e+02 -5.000000e+00 3.652193e+01 + vertex 8.900000e+01 -9.000000e+00 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 8.900000e+01 -9.000000e+00 3.652193e+01 + vertex -1.379998e+02 -5.000000e+00 3.652193e+01 + vertex 8.600016e+01 -5.000000e+00 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 -1.000000e+00 + outer loop + vertex 8.900000e+01 -9.000000e+00 3.652193e+01 + vertex 8.600016e+01 -5.000000e+00 3.652193e+01 + vertex 8.600016e+01 1.885000e+01 3.652193e+01 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 -0.000000e+00 + outer loop + vertex 8.900000e+01 -9.000000e+00 3.748780e+01 + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + vertex 8.900000e+01 -9.000000e+00 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex 8.900000e+01 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + vertex -1.409998e+02 -9.000000e+00 4.000000e+01 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex 8.900000e+01 2.285000e+01 3.748780e+01 + vertex 8.900000e+01 -9.000000e+00 3.748780e+01 + vertex 8.900000e+01 2.285000e+01 4.000000e+01 + endloop + endfacet + facet normal -1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex 8.900000e+01 2.285000e+01 4.000000e+01 + vertex 8.900000e+01 -9.000000e+00 3.748780e+01 + vertex 8.900000e+01 -9.000000e+00 4.000000e+01 + endloop + endfacet + facet normal -1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex 8.900000e+01 2.285000e+01 3.652193e+01 + vertex 8.900000e+01 2.285000e+01 5.000000e+00 + vertex 8.900000e+01 -9.000000e+00 3.652193e+01 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex 8.900000e+01 -9.000000e+00 3.652193e+01 + vertex 8.900000e+01 2.285000e+01 5.000000e+00 + vertex 8.900000e+01 -9.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 1.181809e-08 + outer loop + vertex 8.900000e+01 2.285000e+01 3.652193e+01 + vertex -1.409998e+02 2.285000e+01 3.652193e+01 + vertex 8.900000e+01 2.285000e+01 5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 1.181809e-08 + outer loop + vertex 8.900000e+01 2.285000e+01 5.000000e+00 + vertex -1.409998e+02 2.285000e+01 3.652193e+01 + vertex -1.409998e+02 2.285000e+01 5.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 2.285000e+01 3.748780e+01 + vertex -1.409998e+02 2.285000e+01 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + vertex -1.409998e+02 2.285000e+01 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 4.000000e+01 + endloop + endfacet + facet normal -0.000000e+00 -1.000000e+00 -0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 4.000000e+01 + vertex -1.410000e+02 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + endloop + endfacet + facet normal -0.000000e+00 -1.000000e+00 -0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + vertex -1.410000e+02 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + endloop + endfacet + facet normal -0.000000e+00 -1.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + vertex -1.410000e+02 -9.000000e+00 4.000000e+01 + vertex -1.410000e+02 -9.000000e+00 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 -0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + vertex -1.410000e+02 -9.000000e+00 2.000000e+00 + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 -0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + vertex -1.410000e+02 -9.000000e+00 2.000000e+00 + vertex -1.409998e+02 -9.000000e+00 2.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 8.499998e-01 6.000000e+00 + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + vertex -1.409998e+02 1.215000e+01 6.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 1.215000e+01 6.000000e+00 + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + vertex -1.409998e+02 2.285000e+01 5.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 1.215000e+01 6.000000e+00 + vertex -1.409998e+02 2.285000e+01 5.000000e+00 + vertex -1.409998e+02 1.215000e+01 1.270000e+01 + endloop + endfacet + facet normal 1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 1.215000e+01 1.270000e+01 + vertex -1.409998e+02 2.285000e+01 5.000000e+00 + vertex -1.409998e+02 2.285000e+01 3.652193e+01 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 -0.000000e+00 + outer loop + vertex -1.409998e+02 1.215000e+01 1.270000e+01 + vertex -1.409998e+02 2.285000e+01 3.652193e+01 + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 -0.000000e+00 + outer loop + vertex -1.409998e+02 8.499998e-01 6.000000e+00 + vertex -1.409998e+02 8.499998e-01 1.270000e+01 + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + vertex -1.409998e+02 8.499998e-01 1.270000e+01 + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + vertex -1.409998e+02 8.499998e-01 1.270000e+01 + vertex -1.409998e+02 1.215000e+01 1.270000e+01 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 -1.482882e-07 + outer loop + vertex -1.409998e+02 2.285000e+01 3.748780e+01 + vertex 8.900000e+01 2.285000e+01 3.748780e+01 + vertex -1.409998e+02 2.285000e+01 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 -1.482882e-07 + outer loop + vertex -1.409998e+02 2.285000e+01 4.000000e+01 + vertex 8.900000e+01 2.285000e+01 3.748780e+01 + vertex 8.900000e+01 2.285000e+01 4.000000e+01 + endloop + endfacet + facet normal -0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + vertex 8.900000e+01 -9.000000e+00 3.652193e+01 + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + vertex 8.900000e+01 -9.000000e+00 3.652193e+01 + vertex 8.900000e+01 -9.000000e+00 5.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 -0.000000e+00 -0.000000e+00 + outer loop + vertex -1.409998e+02 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + vertex -1.409998e+02 -1.235000e+01 4.000000e+01 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -1.235000e+01 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 3.748780e+01 + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -1.235000e+01 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + vertex -1.409998e+02 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -1.235000e+01 2.000000e+00 + vertex -1.409998e+02 -9.000000e+00 3.652193e+01 + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.409998e+02 -1.235000e+01 2.000000e+00 + vertex -1.409998e+02 -9.000000e+00 5.000000e+00 + vertex -1.409998e+02 -9.000000e+00 2.000000e+00 + endloop + endfacet + facet normal -2.292075e-17 -1.000000e+00 -0.000000e+00 + outer loop + vertex 9.150000e+01 -1.235000e+01 4.000000e+01 + vertex -1.409998e+02 -1.235000e+01 4.000000e+01 + vertex 9.150000e+01 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal -2.292075e-17 -1.000000e+00 0.000000e+00 + outer loop + vertex 9.150000e+01 -1.235000e+01 2.000000e+00 + vertex -1.409998e+02 -1.235000e+01 4.000000e+01 + vertex -1.409998e+02 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex 9.150000e+01 2.535000e+01 4.000000e+01 + vertex 9.150000e+01 -1.235000e+01 4.000000e+01 + vertex 9.150000e+01 2.535000e+01 2.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex 9.150000e+01 2.535000e+01 2.000000e+00 + vertex 9.150000e+01 -1.235000e+01 4.000000e+01 + vertex 9.150000e+01 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal -0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 4.000000e+01 + vertex 9.150000e+01 2.535000e+01 4.000000e+01 + vertex -1.434998e+02 2.535000e+01 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 2.000000e+00 + vertex 9.150000e+01 2.535000e+01 4.000000e+01 + vertex 9.150000e+01 2.535000e+01 2.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 -0.000000e+00 + outer loop + vertex -1.434998e+02 8.499998e-01 1.270000e+01 + vertex -1.434998e+02 8.499998e-01 6.000000e+00 + vertex -1.434998e+02 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 -1.235000e+01 2.000000e+00 + vertex -1.434998e+02 8.499998e-01 6.000000e+00 + vertex -1.434998e+02 1.215000e+01 6.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 -1.235000e+01 2.000000e+00 + vertex -1.434998e+02 1.215000e+01 6.000000e+00 + vertex -1.434998e+02 2.535000e+01 2.000000e+00 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 2.000000e+00 + vertex -1.434998e+02 1.215000e+01 6.000000e+00 + vertex -1.434998e+02 1.215000e+01 1.270000e+01 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 2.000000e+00 + vertex -1.434998e+02 1.215000e+01 1.270000e+01 + vertex -1.434998e+02 2.535000e+01 4.000000e+01 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 4.000000e+01 + vertex -1.434998e+02 1.215000e+01 1.270000e+01 + vertex -1.434998e+02 8.499998e-01 1.270000e+01 + endloop + endfacet + facet normal -1.000000e+00 -0.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 4.000000e+01 + vertex -1.434998e+02 8.499998e-01 1.270000e+01 + vertex -1.434998e+02 -1.235000e+01 4.000000e+01 + endloop + endfacet + facet normal -1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.434998e+02 -1.235000e+01 4.000000e+01 + vertex -1.434998e+02 8.499998e-01 1.270000e+01 + vertex -1.434998e+02 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal -0.000000e+00 -1.000000e+00 -0.000000e+00 + outer loop + vertex -1.410000e+02 -1.235000e+01 4.000000e+01 + vertex -1.434998e+02 -1.235000e+01 4.000000e+01 + vertex -1.410000e+02 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -1.000000e+00 0.000000e+00 + outer loop + vertex -1.410000e+02 -1.235000e+01 2.000000e+00 + vertex -1.434998e+02 -1.235000e+01 4.000000e+01 + vertex -1.434998e+02 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.410000e+02 -9.000000e+00 4.000000e+01 + vertex -1.410000e+02 -1.235000e+01 4.000000e+01 + vertex -1.410000e+02 -9.000000e+00 2.000000e+00 + endloop + endfacet + facet normal 1.000000e+00 0.000000e+00 0.000000e+00 + outer loop + vertex -1.410000e+02 -9.000000e+00 2.000000e+00 + vertex -1.410000e+02 -1.235000e+01 4.000000e+01 + vertex -1.410000e+02 -1.235000e+01 2.000000e+00 + endloop + endfacet + facet normal 0.000000e+00 -0.000000e+00 1.000000e+00 + outer loop + vertex -1.410000e+02 -1.235000e+01 4.000000e+01 + vertex -1.410000e+02 -9.000000e+00 4.000000e+01 + vertex -1.434998e+02 -1.235000e+01 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.434998e+02 -1.235000e+01 4.000000e+01 + vertex -1.410000e+02 -9.000000e+00 4.000000e+01 + vertex -1.434998e+02 2.535000e+01 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 4.000000e+01 + vertex -1.410000e+02 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 2.285000e+01 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 4.000000e+01 + vertex -1.409998e+02 2.285000e+01 4.000000e+01 + vertex 8.900000e+01 2.285000e+01 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.410000e+02 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 2.285000e+01 4.000000e+01 + endloop + endfacet + facet normal -0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.434998e+02 2.535000e+01 4.000000e+01 + vertex 8.900000e+01 2.285000e+01 4.000000e+01 + vertex 9.150000e+01 2.535000e+01 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 9.150000e+01 2.535000e+01 4.000000e+01 + vertex 8.900000e+01 2.285000e+01 4.000000e+01 + vertex 8.900000e+01 -9.000000e+00 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 9.150000e+01 2.535000e+01 4.000000e+01 + vertex 8.900000e+01 -9.000000e+00 4.000000e+01 + vertex 9.150000e+01 -1.235000e+01 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex 9.150000e+01 -1.235000e+01 4.000000e+01 + vertex 8.900000e+01 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 -1.235000e+01 4.000000e+01 + endloop + endfacet + facet normal 0.000000e+00 0.000000e+00 1.000000e+00 + outer loop + vertex -1.409998e+02 -1.235000e+01 4.000000e+01 + vertex 8.900000e+01 -9.000000e+00 4.000000e+01 + vertex -1.409998e+02 -9.000000e+00 4.000000e+01 + endloop + endfacet +endsolid diff --git a/exports/insert first test .stl b/exports/insert first test .stl new file mode 100644 index 0000000000000000000000000000000000000000..dfaad6db513594cf5f404325941508bdfa581af8 GIT binary patch literal 10684 zcmbW7y^a(|6oo4wMdA@Q!WkL|mYi6yYsnFUl_9m{kenB&U>{)5@6* z5jNO2u0#v#W^3-P@BVgIR}H*+{rv3Y^!0BiKmPRO=O?=-yOUpEK7aZ9 zFIQJr|DODh>z~4_evHw@{{6c@PGfv-W6DpSy?qhdkvMr)iW3|MQJ)5d&x^f}<&SbB zYRr@dv=cG5sNknj=gCJ{!6)Sdku+n3LHDS7ox+wPpP-J`OeKllQRanUZmQEo)#toREb znb_(%GXzJw7*lR}^vI;i1nC}?_59MZy|n65ZbXIeQl!B+WFe2SMb-UWCm*UV<=X^m zMStPLYvs@2wM9a^ASmy7piUKX*I;}!s!n;fvf-hlnAnUfJ;LpCTyj zd4Q;t#b5YfBq0fUj%sIj#@%Q6pnRKv4<|UbsKRyG?fanppYxTxrCk>8rBWl=_CPzrxqUt^IY)Qiw z<=X^m0PQEo(CfR#WV znF#$H)kX55XOQx3B7BG#qFTE5_2%ZUwqv!}X&3QO-t#y>z(*#w?kmrhcHx6^%VY85 z8btzvbdL(%tL?sOc@%qR6kCHS-zJbpCffIQSyb@TuIuDO)unu!2p=MbsCspg$F;>y zyWx8Yflt%{0zNWvupcm!e1zTQv&$`y#gB;aA%f8kL@njhUbDX0nDT*Wlcg!e366u{ zGY;#Y_Npjpmm5(b7lAx7v8WI9{9E!Nf0SDu{VtJ4{<3eJgnduV3^9vzjPc1kk#9{% zNFa|)c+b6755Ii9`TG=XDG%G3>QV1C<#Vm18Hu1RbKE7hln-a_Lu1MZqCwKYhX{^) zR8L>MFOS=L)!u_2&J;W8W@wd@XrcMCY z$LVZve;+(efXJsJ#EJ`W071=8aOO%h9OOuJbzlw@5D%xsN>mYxnm}@1?NQB)(1T_P( z+4Gnms{was=#6SPXRdxYp?hH@eBJf?n7@(Ec}U|=kw5>V51t1QyUwyx&wIM)`Ndg$ z8HxF{jd?R6`hK;NU7XKJk9o+J&uSIlB%~P$u0)HE8Xl2{&X$?joh2fGCG$*h)_tE3 z+4bJcnd|w;9i+dJ@Sf+jgqBvKWj|(~p5W8TM<@Jz?nM60vX^S{;e=+jRif{K=eu1R z|Akh+!+wtl@3@b3_pF&WB{G-B?K18|Zv(%tJVIF-efWCinX7IKQNt^u@_mWF+b{Pq zr)O@2G`K@A9v znMd~lBkh6@X)?jL#BoBibjKVb;;jasPVi*$Jpx=@s=}IijXb2um1aMV`{2nNUbrJa zPH2{%w3*;DnC*gKZ^oWWxg5`7H13TB{bu*mItv5aDnqLe#Dx)Ish=pyPTq zMjLZ+w^(G4T>OmLRo&WG}dH)Qw_!85~g zLbG&En29_4%`y``^jJ&!7vyng**c-#tktd2^Gwk0^qjZZxZs2DB7FAgf_q%d^8W#$8ZJbIKJG+mGQqv?oOvdcxq353B@KLt(3(FIIrfMapQ^}6 zNYmbf{geVieHsaWqP&BOb|hermq#eyD^YuOZH>CL@%?s7PH^u#_d~X@Z)bd1sX1Pw zY67f2J}diRZx*8EfGY@U^#6#UyIj}#*@qJv>%B4((zxAe4+ppHLR9|7;rRnPS$g~8 EKX+70 + + + + + Custom Streamdeck + + +

    + + + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..b45f804 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,1901 @@ +{ + "name": "custom-streamdeck-ui", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "custom-streamdeck-ui", + "version": "0.1.0", + "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@tailwindcss/vite": "^4.1.17", + "lucide-react": "^0.555.0", + "react": "^19.2.1", + "react-dom": "^19.2.1", + "tailwindcss": "^4.1.17" + }, + "devDependencies": { + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "typescript": "^5.9.3", + "vite": "^8.0.11" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@dnd-kit/accessibility": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.1.tgz", + "integrity": "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/core": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", + "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", + "license": "MIT", + "dependencies": { + "@dnd-kit/accessibility": "^3.1.1", + "@dnd-kit/utilities": "^3.2.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/utilities": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", + "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.128.0.tgz", + "integrity": "sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.18.tgz", + "integrity": "sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.18.tgz", + "integrity": "sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.18.tgz", + "integrity": "sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.18.tgz", + "integrity": "sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.18.tgz", + "integrity": "sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.18.tgz", + "integrity": "sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.18.tgz", + "integrity": "sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.18.tgz", + "integrity": "sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.18.tgz", + "integrity": "sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.18.tgz", + "integrity": "sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.18.tgz", + "integrity": "sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.18.tgz", + "integrity": "sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.18.tgz", + "integrity": "sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.18.tgz", + "integrity": "sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.18.tgz", + "integrity": "sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", + "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.21.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", + "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-arm64": "4.3.0", + "@tailwindcss/oxide-darwin-x64": "4.3.0", + "@tailwindcss/oxide-freebsd-x64": "4.3.0", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", + "@tailwindcss/oxide-linux-x64-musl": "4.3.0", + "@tailwindcss/oxide-wasm32-wasi": "4.3.0", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", + "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", + "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", + "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", + "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", + "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", + "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", + "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", + "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", + "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", + "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", + "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", + "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.0.tgz", + "integrity": "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.0", + "@tailwindcss/oxide": "4.3.0", + "tailwindcss": "4.3.0" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz", + "integrity": "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", + "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.353", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.353.tgz", + "integrity": "sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.21.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.2.tgz", + "integrity": "sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.555.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.555.0.tgz", + "integrity": "sha512-D8FvHUGbxWBRQM90NZeIyhAvkFfsh3u9ekrMvJ30Z6gnpBHS6HC6ldLg7tL45hwiIz/u66eKDtdA23gwwGsAHA==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.6" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.18.tgz", + "integrity": "sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.128.0", + "@rolldown/pluginutils": "1.0.0-rc.18" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.18", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.18", + "@rolldown/binding-darwin-x64": "1.0.0-rc.18", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.18", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.18", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.18", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.18", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.18", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.18", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.18", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.18", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.18", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.18", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.18", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.18" + } + }, + "node_modules/rolldown/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.18.tgz", + "integrity": "sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", + "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.11.tgz", + "integrity": "sha512-Jz1mxtUBR5xTT65VOdJZUUeoyLtqljmFkiUXhPTLZka3RDc9vpi/xXkyrnsdRcm2lIi3l3GPMnAidTsEGIj3Ow==", + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.14", + "rolldown": "1.0.0-rc.18", + "tinyglobby": "^0.2.16" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..ec31ae8 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,27 @@ +{ + "name": "custom-streamdeck-ui", + "version": "0.1.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --host 127.0.0.1", + "build": "tsc -b && vite build", + "preview": "vite preview --host 127.0.0.1" + }, + "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@tailwindcss/vite": "^4.1.17", + "lucide-react": "^0.555.0", + "react": "^19.2.1", + "react-dom": "^19.2.1", + "tailwindcss": "^4.1.17" + }, + "devDependencies": { + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "typescript": "^5.9.3", + "vite": "^8.0.11" + } +} + diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..7e84d0a --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,970 @@ +import { + closestCenter, + DndContext, + type DragEndEvent, + PointerSensor, + useDraggable, + useDroppable, + useSensor, + useSensors +} from "@dnd-kit/core"; +import { + AppWindow, + Boxes, + Cable, + Keyboard, + Layers3, + Loader2, + MoreVertical, + MousePointerClick, + Pencil, + Play, + Plus, + Power, + RefreshCw, + RotateCw, + Route, + Save, + ShieldCheck, + Trash2, + Unplug +} from "lucide-react"; +import { type CSSProperties, type ReactNode, useEffect, useMemo, useRef, useState } from "react"; +import { api } from "./api"; +import type { ActionType, AppEntry, ButtonConfig, DeckState, Folder, PluginAction, PluginField, PluginInfo } from "./types"; + +const emptyState: DeckState = { + settings: { serial_port: null, click_check: false, active_profile_id: "", active_folder_id: "" }, + profiles: [], + folders: [], + buttons: [], + apps: [], + plugins: [], + device: { connected_port: null } +}; + +const actionLabels: Record = { + noop: "No Action", + key_combo: "Key Press", + chain: "Action Chain", + app_launch: "App Launch", + folder: "Folder", + folder_rotation: "Folder Rotation", + plugin: "Plugin" +}; + +const actionIcons: Record = { + noop: , + key_combo: , + chain: , + app_launch: , + folder: , + folder_rotation: , + plugin: +}; + +export function App() { + const [state, setState] = useState(emptyState); + const [selectedButtonId, setSelectedButtonId] = useState(""); + const [pressedButtons, setPressedButtons] = useState>({}); + const [status, setStatus] = useState("Loading"); + const [wsOpen, setWsOpen] = useState(false); + const [createMenuOpen, setCreateMenuOpen] = useState(false); + const [manageMenuOpen, setManageMenuOpen] = useState(false); + const [profileDialogOpen, setProfileDialogOpen] = useState(false); + const [folderDialogOpen, setFolderDialogOpen] = useState(false); + const [renameProfileDialogOpen, setRenameProfileDialogOpen] = useState(false); + const [renameFolderDialogOpen, setRenameFolderDialogOpen] = useState(false); + const [deleteProfileDialogOpen, setDeleteProfileDialogOpen] = useState(false); + const [deleteFolderDialogOpen, setDeleteFolderDialogOpen] = useState(false); + const [manualAppDialogOpen, setManualAppDialogOpen] = useState(false); + const socketRef = useRef(null); + const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } })); + + useEffect(() => { + api.state().then(next => { + setState(next); + setSelectedButtonId(next.buttons.find(button => button.folder_id === next.settings.active_folder_id)?.id ?? ""); + setStatus("Ready"); + }).catch(error => setStatus(error.message)); + }, []); + + useEffect(() => { + const protocol = window.location.protocol === "https:" ? "wss" : "ws"; + const socket = new WebSocket(`${protocol}://${window.location.host}/ws`); + socketRef.current = socket; + socket.onopen = () => setWsOpen(true); + socket.onclose = () => setWsOpen(false); + socket.onmessage = event => { + const message = JSON.parse(event.data); + if (message.type === "state.updated") { + setState(message.payload); + setStatus("Synced"); + } + if (message.type === "button.down" || message.type === "button.up") { + const physical = Number(message.payload?.event?.button); + setPressedButtons(current => ({ ...current, [physical]: message.type === "button.down" })); + } + if (message.type === "action.failed") { + setStatus(message.payload?.error ?? "Action failed"); + } + }; + return () => { + socketRef.current = null; + socket.close(); + }; + }, []); + + const activeProfile = state.profiles.find(profile => profile.id === state.settings.active_profile_id); + const activeFolder = state.folders.find(folder => folder.id === state.settings.active_folder_id); + const activeProfileFolders = state.folders.filter(folder => folder.profile_id === activeProfile?.id); + const firstProfile = state.profiles[0]; + const canEditLayout = state.layout?.canonical_folder_id === state.settings.active_folder_id; + const currentButtons = useMemo( + () => state.buttons.filter(button => button.folder_id === state.settings.active_folder_id).sort((a, b) => a.position - b.position), + [state.buttons, state.settings.active_folder_id] + ); + const selectedButton = state.buttons.find(button => button.id === selectedButtonId) ?? currentButtons[0]; + const folderPath = useMemo(() => buildFolderPath(state.folders, activeFolder), [state.folders, activeFolder]); + const manualApps = state.apps.filter(app => app.source === "manual"); + + useEffect(() => { + if (!currentButtons.length) return; + if (!currentButtons.some(button => button.id === selectedButtonId)) { + setSelectedButtonId(currentButtons[0].id); + } + }, [currentButtons, selectedButtonId]); + + async function sync(operation: Promise, label = "Saved") { + setStatus("Saving"); + try { + const result = await operation; + setStatus(label); + if (looksLikeState(result)) { + setState(result); + } else { + const next = await api.state(); + setState(next); + } + } catch (error) { + setStatus(error instanceof Error ? error.message : "Request failed"); + } + } + + function updateSelected(payload: Partial) { + if (!selectedButton) return; + const buttonId = selectedButton.id; + setState(current => ({ + ...current, + buttons: current.buttons.map(button => ( + button.id === buttonId + ? { ...button, ...payload, action_config: payload.action_config ?? button.action_config } + : button + )) + })); + setStatus("Saving"); + api.updateButton(buttonId, payload) + .then(saved => { + setState(current => ({ + ...current, + buttons: current.buttons.map(button => button.id === saved.id ? saved : button) + })); + setStatus("Saved"); + }) + .catch(error => { + setStatus(error instanceof Error ? error.message : "Save failed"); + api.state().then(setState).catch(() => undefined); + }); + } + + function handleDragEnd(event: DragEndEvent) { + if (!canEditLayout) { + setStatus("Layout is locked here"); + return; + } + const physical = Number(event.active.data.current?.physical); + const position = Number(event.over?.data.current?.position); + if (!physical || !position) return; + setStatus("Saving mapping"); + const command = JSON.stringify({ type: "move_button", payload: { folder_id: state.settings.active_folder_id, physical_button: physical, position } }); + if (socketRef.current?.readyState === WebSocket.OPEN) { + socketRef.current.send(command); + return; + } + const socket = new WebSocket(`${window.location.protocol === "https:" ? "wss" : "ws"}://${window.location.host}/ws`); + socket.onopen = () => { + socket.send(command); + socket.close(); + }; + } + + return ( +
    +
    +
    +
    + +
    +
    +

    Custom Streamdeck

    +
    + {state.device.connected_port ? : } + {state.device.connected_port ?? "Pico not connected"} + / + {wsOpen ? "Live" : "Offline"} +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + {createMenuOpen && ( +
    + + +
    + )} +
    +
    + + {manageMenuOpen && ( +
    + + +
    + + +
    + )} +
    + + +
    + + + +
    +
    + {status === "Saving" ? : } + {status} +
    +
    +
    + +
    +
    +
    +
    +
    {activeProfile?.name ?? "No Profile"}
    +
    + {folderPath.map((folder, index) => ( + + {index > 0 && /} + + + ))} +
    +
    + {canEditLayout ? "Hardware layout is editable here and syncs everywhere." : "Hardware layout is mirrored from the first profile's root folder."} +
    +
    +
    + + +
    + {currentButtons.map(button => ( + setSelectedButtonId(button.id)} + /> + ))} +
    +
    + +
    +
    +

    Manual Launch Targets

    + +
    +
    + {manualApps.map(app => ( + + ))} + {!manualApps.length && ( +
    No manual launch targets yet.
    + )} +
    +
    +
    + + folder.profile_id === activeProfile?.id)} + apps={state.apps} + plugins={state.plugins} + clickCheck={state.settings.click_check} + canEditLayout={canEditLayout} + onChange={updateSelected} + onTest={() => selectedButton && sync(api.testAction(selectedButton.action_type, selectedButton.action_config), "Action test sent")} + /> +
    + + setProfileDialogOpen(false)} + onSubmit={name => sync(api.createProfile(name), "Profile created")} + /> + setFolderDialogOpen(false)} + onSubmit={name => { + if (!activeProfile) return; + sync(api.createFolder(activeProfile.id, state.settings.active_folder_id, name), "Folder created"); + }} + /> + setRenameProfileDialogOpen(false)} + onSubmit={name => { + if (!activeProfile) return; + sync(api.updateProfile(activeProfile.id, { name }), "Profile renamed"); + }} + /> + setRenameFolderDialogOpen(false)} + onSubmit={name => { + if (!activeFolder) return; + sync(api.updateFolder(activeFolder.id, { name }), "Folder renamed"); + }} + /> + setDeleteProfileDialogOpen(false)} + onConfirm={() => { + if (!activeProfile) return; + sync(api.deleteProfile(activeProfile.id), "Profile deleted"); + }} + /> + setDeleteFolderDialogOpen(false)} + onConfirm={() => { + if (!activeFolder) return; + sync(api.deleteFolder(activeFolder.id), "Folder deleted"); + }} + /> + setManualAppDialogOpen(false)} + onSubmit={(name, path, args) => sync(api.addManualApp(name, path, args), "Manual app added")} + /> +
    + ); +} + +function NameDialog(props: { + open: boolean; + title: string; + label: string; + defaultValue: string; + submitLabel: string; + onClose: () => void; + onSubmit: (value: string) => void; +}) { + const [value, setValue] = useState(props.defaultValue); + + useEffect(() => { + if (props.open) setValue(props.defaultValue); + }, [props.open, props.defaultValue]); + + if (!props.open) return null; + return ( +
    +
    event.stopPropagation()} onSubmit={event => { + event.preventDefault(); + const trimmed = value.trim(); + if (!trimmed) return; + props.onSubmit(trimmed); + props.onClose(); + }}> +

    {props.title}

    + + setValue(event.target.value)} /> + +
    + + +
    +
    +
    + ); +} + +function ConfirmDialog(props: { + open: boolean; + title: string; + body: string; + confirmLabel: string; + destructive?: boolean; + onClose: () => void; + onConfirm: () => void; +}) { + if (!props.open) return null; + return ( +
    +
    event.stopPropagation()}> +

    {props.title}

    +

    {props.body}

    +
    + + +
    +
    +
    + ); +} + +function ManualAppDialog(props: { + open: boolean; + onClose: () => void; + onSubmit: (name: string, path: string, args?: string) => void; +}) { + const [name, setName] = useState(""); + const [path, setPath] = useState(""); + const [args, setArgs] = useState(""); + + useEffect(() => { + if (!props.open) return; + setName(""); + setPath(""); + setArgs(""); + }, [props.open]); + + if (!props.open) return null; + return ( +
    +
    event.stopPropagation()} onSubmit={event => { + event.preventDefault(); + const trimmedName = name.trim(); + const trimmedPath = path.trim(); + if (!trimmedName || !trimmedPath) return; + props.onSubmit(trimmedName, trimmedPath, args.trim() || undefined); + props.onClose(); + }}> +

    Add Manual App

    + + setName(event.target.value)} /> + + + setPath(event.target.value)} /> + + + setArgs(event.target.value)} /> + +
    + + +
    +
    +
    + ); +} + +function StatPill(props: { label: string; value: number }) { + return ( +
    + {props.label} + {props.value} +
    + ); +} + +function DeckButton(props: { button: ButtonConfig; selected: boolean; pressed: boolean; clickCheck: boolean; canEditLayout: boolean; onSelect: () => void }) { + const { setNodeRef: setDropRef, isOver } = useDroppable({ + id: `position-${props.button.position}`, + data: { position: props.button.position } + }); + const { attributes, listeners, setNodeRef: setDragRef, transform, isDragging } = useDraggable({ + id: `physical-${props.button.physical_button}`, + data: { physical: props.button.physical_button }, + disabled: !props.canEditLayout + }); + const style: CSSProperties = { + transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined, + background: `linear-gradient(145deg, ${props.button.color}, #05070b)` + }; + return ( + + ); +} + +function Inspector(props: { + button?: ButtonConfig; + folders: Folder[]; + apps: AppEntry[]; + plugins: PluginInfo[]; + clickCheck: boolean; + canEditLayout: boolean; + onChange: (payload: Partial) => void; + onTest: () => void; +}) { + const button = props.button; + if (!button) { + return ; + } + const updateConfig = (patch: Record) => props.onChange({ action_config: { ...button.action_config, ...patch } }); + return ( + + ); +} + +function ActionForm(props: { + button: ButtonConfig; + folders: Folder[]; + apps: AppEntry[]; + plugins: PluginInfo[]; + updateConfig: (patch: Record) => void; + onChange: (payload: Partial) => void; +}) { + const { button } = props; + if (button.action_type === "noop") return

    This button only shows live press state.

    ; + if (button.action_type === "key_combo") { + return props.updateConfig({ combo: value })} />; + } + if (button.action_type === "app_launch") { + return ( + + + + ); + } + if (button.action_type === "folder") { + return ( + + + + ); + } + if (button.action_type === "folder_rotation") { + return ( + + + + ); + } + if (button.action_type === "chain") { + const steps = Array.isArray(button.action_config.steps) ? button.action_config.steps : []; + return ( +
    +
    + + +
    + {steps.map((step: any, index: number) => ( +
    + + {step.action_type === "app_launch" ? ( + + ) : ( + { + const next = [...steps]; + next[index] = { ...step, action_config: { combo: value } }; + props.updateConfig({ steps: next }); + }} /> + )} + { + const next = [...steps]; + next[index] = { ...step, delay_ms: Number(value) }; + props.updateConfig({ steps: next }); + }} /> +
    + ))} +
    + ); + } + return ; +} + +function PluginForm(props: { button: ButtonConfig; plugins: PluginInfo[]; updateConfig: (patch: Record) => void }) { + const plugin = props.plugins.find(item => item.id === props.button.action_config.plugin_id); + const action = plugin?.actions.find(item => item.id === props.button.action_config.action_id); + const enabledPlugins = props.plugins.filter(item => item.enabled); + return ( +
    + + + + {plugin && ( + + + + )} + {action?.fields.map(field => ( + props.updateConfig({ fields: { ...(props.button.action_config.fields ?? {}), [field.id]: value } })} + /> + ))} + {props.plugins.some(plugin => !plugin.enabled) &&

    Some plugins failed to load. Reload after fixing their backend code.

    } +
    + ); +} + +function PluginFieldInput(props: { field: PluginField; value: any; onChange: (value: any) => void }) { + if (props.field.type === "boolean") { + return ; + } + if (props.field.type === "key_value") { + return ; + } + if (props.field.type === "select") { + return ( + + + + ); + } + if (props.field.type === "textarea" || props.field.type === "json") { + return ( + + props.onChange(value)} + /> + + ); + } + return ( + + props.onChange(props.field.type === "number" ? Number(value) : value)} + /> + + ); +} + +function KeyValueField(props: { field: PluginField; value: any; onChange: (value: any) => void }) { + const rows = normalizeKeyValueRows(props.value); + const updateRow = (index: number, patch: Partial<{ key: string; value: string }>) => { + const next = rows.map((row, rowIndex) => rowIndex === index ? { ...row, ...patch } : row); + props.onChange(next); + }; + const removeRow = (index: number) => props.onChange(rows.filter((_, rowIndex) => rowIndex !== index)); + return ( +
    +
    + {props.field.label} + +
    +
    + {rows.map((row, index) => ( +
    + updateRow(index, { key: event.target.value })} /> + updateRow(index, { value: event.target.value })} /> + +
    + ))} + {!rows.length &&
    No headers configured.
    } +
    +
    + ); +} + +function normalizeKeyValueRows(value: any): { key: string; value: string }[] { + if (Array.isArray(value)) { + return value.map(row => ({ key: String(row?.key ?? ""), value: String(row?.value ?? "") })); + } + if (value && typeof value === "object") { + return Object.entries(value).map(([key, rowValue]) => ({ key, value: String(rowValue ?? "") })); + } + return []; +} + +function inputTypeForPluginField(field: PluginField): "text" | "number" | "url" | "password" { + if (field.type === "number" || field.type === "url" || field.type === "password") return field.type; + return "text"; +} + +function DraftTextArea(props: { + value: string | number; + placeholder?: string; + onCommit: (value: string) => void; +}) { + const [draft, setDraft] = useState(String(props.value ?? "")); + + useEffect(() => { + setDraft(String(props.value ?? "")); + }, [props.value]); + + function commit() { + const current = String(props.value ?? ""); + if (draft !== current) { + props.onCommit(draft); + } + } + + return ( +