gabraken commited on
Commit
15f5def
·
1 Parent(s): 8de6d60
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +7 -0
  2. README.md +6 -5
  3. backend/__pycache__/config.cpython-39.pyc +0 -0
  4. backend/__pycache__/main.cpython-39.pyc +0 -0
  5. backend/game/__pycache__/__init__.cpython-39.pyc +0 -0
  6. backend/game/__pycache__/buildings.cpython-39.pyc +0 -0
  7. backend/game/__pycache__/commands.cpython-39.pyc +0 -0
  8. backend/game/__pycache__/engine.cpython-39.pyc +0 -0
  9. backend/game/__pycache__/map.cpython-39.pyc +0 -0
  10. backend/game/__pycache__/state.cpython-39.pyc +0 -0
  11. backend/game/__pycache__/tech_tree.cpython-39.pyc +0 -0
  12. backend/game/__pycache__/units.cpython-39.pyc +0 -0
  13. backend/game/bot.py +133 -0
  14. backend/game/engine.py +4 -0
  15. backend/lobby/__pycache__/__init__.cpython-39.pyc +0 -0
  16. backend/lobby/__pycache__/manager.cpython-39.pyc +0 -0
  17. backend/lobby/manager.py +23 -1
  18. backend/main.py +7 -2
  19. backend/voice/__pycache__/__init__.cpython-39.pyc +0 -0
  20. backend/voice/__pycache__/command_parser.cpython-39.pyc +0 -0
  21. backend/voice/__pycache__/stt.cpython-39.pyc +0 -0
  22. backend/voice/__pycache__/tts.cpython-39.pyc +0 -0
  23. frontend/.svelte-kit/ambient.d.ts +24 -32
  24. frontend/.svelte-kit/generated/client-optimized/app.js +0 -31
  25. frontend/.svelte-kit/generated/client-optimized/matchers.js +0 -1
  26. frontend/.svelte-kit/generated/client-optimized/nodes/0.js +0 -1
  27. frontend/.svelte-kit/generated/client-optimized/nodes/1.js +0 -1
  28. frontend/.svelte-kit/generated/client-optimized/nodes/2.js +0 -3
  29. frontend/.svelte-kit/generated/client-optimized/nodes/3.js +0 -3
  30. frontend/.svelte-kit/generated/client/app.js +0 -31
  31. frontend/.svelte-kit/generated/client/matchers.js +0 -1
  32. frontend/.svelte-kit/generated/client/nodes/0.js +0 -1
  33. frontend/.svelte-kit/generated/client/nodes/1.js +0 -1
  34. frontend/.svelte-kit/generated/client/nodes/2.js +0 -3
  35. frontend/.svelte-kit/generated/client/nodes/3.js +0 -3
  36. frontend/.svelte-kit/generated/root.svelte +0 -62
  37. frontend/.svelte-kit/generated/server/internal.js +0 -53
  38. frontend/.svelte-kit/output/client/.vite/manifest.json +0 -110
  39. frontend/.svelte-kit/output/client/_app/immutable/assets/0.XtmqqaVM.css +0 -1
  40. frontend/.svelte-kit/output/client/_app/immutable/assets/2.BpyLQ8v8.css +0 -1
  41. frontend/.svelte-kit/output/client/_app/immutable/assets/3.CRf0cTrE.css +0 -1
  42. frontend/.svelte-kit/output/client/_app/immutable/chunks/BX82rj4I.js +0 -1
  43. frontend/.svelte-kit/output/client/_app/immutable/chunks/BxRIPBY0.js +0 -1
  44. frontend/.svelte-kit/output/client/_app/immutable/chunks/DQebRFVS.js +0 -1
  45. frontend/.svelte-kit/output/client/_app/immutable/chunks/J0QSAnNz.js +0 -1
  46. frontend/.svelte-kit/output/client/_app/immutable/entry/app.mfL3Z2b5.js +0 -2
  47. frontend/.svelte-kit/output/client/_app/immutable/entry/start.BPj5i5_S.js +0 -1
  48. frontend/.svelte-kit/output/client/_app/immutable/nodes/0.B4Km_xye.js +0 -1
  49. frontend/.svelte-kit/output/client/_app/immutable/nodes/1.CgjumiZZ.js +0 -1
  50. frontend/.svelte-kit/output/client/_app/immutable/nodes/2.CwsLFqkm.js +0 -4
.gitignore CHANGED
@@ -1,3 +1,10 @@
1
  .env
2
  node_modules/
3
  frontend/node_modules/
 
 
 
 
 
 
 
 
1
  .env
2
  node_modules/
3
  frontend/node_modules/
4
+
5
+ __pycache__/
6
+ **/*.pyc
7
+ **/__pycache__/
8
+ frontend/.svelte-kit/generated/
9
+ frontend/.svelte-kit/output/
10
+ frontend/build/
README.md CHANGED
@@ -1,14 +1,15 @@
1
  ---
2
- title: VoiceStrike
3
- emoji:
4
- colorFrom: blue
5
- colorTo: purple
6
  sdk: docker
7
  app_port: 7860
8
  pinned: false
 
9
  ---
10
 
11
- # VoiceStrike — RTS commandé à la voix
12
 
13
  > Hackathon Mistral × ElevenLabs — Hébergé sur Hugging Face Spaces
14
 
 
1
  ---
2
+ title: ChatCraft
3
+ emoji: 📚
4
+ colorFrom: gray
5
+ colorTo: green
6
  sdk: docker
7
  app_port: 7860
8
  pinned: false
9
+ license: mit
10
  ---
11
 
12
+ # ChatCraft — RTS commandé à la voix
13
 
14
  > Hackathon Mistral × ElevenLabs — Hébergé sur Hugging Face Spaces
15
 
backend/__pycache__/config.cpython-39.pyc DELETED
Binary file (676 Bytes)
 
backend/__pycache__/main.cpython-39.pyc DELETED
Binary file (8.07 kB)
 
backend/game/__pycache__/__init__.cpython-39.pyc DELETED
Binary file (139 Bytes)
 
backend/game/__pycache__/buildings.cpython-39.pyc DELETED
Binary file (3.41 kB)
 
backend/game/__pycache__/commands.cpython-39.pyc DELETED
Binary file (2.25 kB)
 
backend/game/__pycache__/engine.cpython-39.pyc DELETED
Binary file (23 kB)
 
backend/game/__pycache__/map.cpython-39.pyc DELETED
Binary file (4.98 kB)
 
backend/game/__pycache__/state.cpython-39.pyc DELETED
Binary file (6.23 kB)
 
backend/game/__pycache__/tech_tree.cpython-39.pyc DELETED
Binary file (2.74 kB)
 
backend/game/__pycache__/units.cpython-39.pyc DELETED
Binary file (3.87 kB)
 
backend/game/bot.py ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ BotPlayer — simple rule-based AI opponent.
3
+
4
+ Strategy phases (evaluated every BOT_TICK_INTERVAL ticks ≈ 2 s):
5
+ 1. SCVs gather minerals immediately
6
+ 2. Build Supply Depot when minerals >= 100
7
+ 3. Build Barracks when Supply Depot active & minerals >= 150
8
+ 4. Train Marines continuously when Barracks active
9
+ 5. Attack enemy base when military count >= 4
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import logging
15
+ from typing import TYPE_CHECKING
16
+
17
+ from .buildings import BuildingType
18
+ from .commands import ActionType, GameAction, ParsedCommand
19
+ from .units import UnitStatus, UnitType
20
+
21
+ if TYPE_CHECKING:
22
+ from .engine import GameEngine
23
+
24
+ log = logging.getLogger(__name__)
25
+
26
+ BOT_PLAYER_ID = "__bot__"
27
+ BOT_PLAYER_NAME = "Bot IA"
28
+
29
+ # Ticks between each bot decision (~4 ticks/s → 8 ticks ≈ 2 s)
30
+ BOT_TICK_INTERVAL = 8
31
+
32
+
33
+ def _cmd(*actions: GameAction) -> ParsedCommand:
34
+ return ParsedCommand(actions=list(actions), feedback="")
35
+
36
+
37
+ class BotPlayer:
38
+ """Rule-based bot that drives one player slot in the game engine."""
39
+
40
+ def __init__(self, engine: "GameEngine", player_id: str) -> None:
41
+ self.engine = engine
42
+ self.player_id = player_id
43
+ self._initial_gather_done = False
44
+
45
+ # ------------------------------------------------------------------
46
+ # Main entry point — called by engine every BOT_TICK_INTERVAL ticks
47
+ # ------------------------------------------------------------------
48
+
49
+ def act(self) -> None:
50
+ state = self.engine.state
51
+ player = state.players.get(self.player_id)
52
+ if not player:
53
+ return
54
+
55
+ # 1. Send all SCVs to gather minerals (once)
56
+ if not self._initial_gather_done:
57
+ self.engine.apply_command(
58
+ self.player_id,
59
+ _cmd(GameAction(
60
+ type=ActionType.GATHER,
61
+ unit_selector="all_scv",
62
+ resource_type="minerals",
63
+ )),
64
+ )
65
+ self._initial_gather_done = True
66
+
67
+ # 2. Supply Depot
68
+ if (
69
+ player.minerals >= 100
70
+ and not player.has_active(BuildingType.SUPPLY_DEPOT)
71
+ and not _building_in_progress(player, BuildingType.SUPPLY_DEPOT)
72
+ ):
73
+ self.engine.apply_command(
74
+ self.player_id,
75
+ _cmd(GameAction(
76
+ type=ActionType.BUILD,
77
+ building_type=BuildingType.SUPPLY_DEPOT.value,
78
+ )),
79
+ )
80
+
81
+ # 3. Barracks
82
+ if (
83
+ player.minerals >= 150
84
+ and player.has_active(BuildingType.SUPPLY_DEPOT)
85
+ and not player.has_active(BuildingType.BARRACKS)
86
+ and not _building_in_progress(player, BuildingType.BARRACKS)
87
+ ):
88
+ self.engine.apply_command(
89
+ self.player_id,
90
+ _cmd(GameAction(
91
+ type=ActionType.BUILD,
92
+ building_type=BuildingType.BARRACKS.value,
93
+ )),
94
+ )
95
+
96
+ # 4. Train Marines
97
+ if (
98
+ player.has_active(BuildingType.BARRACKS)
99
+ and player.minerals >= 50
100
+ and player.supply_used < player.supply_max
101
+ ):
102
+ self.engine.apply_command(
103
+ self.player_id,
104
+ _cmd(GameAction(
105
+ type=ActionType.TRAIN,
106
+ unit_type=UnitType.MARINE.value,
107
+ count=2,
108
+ )),
109
+ )
110
+
111
+ # 5. Attack with military when strong enough
112
+ military = [u for u in player.units.values() if u.unit_type != UnitType.SCV]
113
+ if len(military) >= 4:
114
+ self.engine.apply_command(
115
+ self.player_id,
116
+ _cmd(GameAction(
117
+ type=ActionType.ATTACK,
118
+ unit_selector="all_military",
119
+ target_zone="enemy_base",
120
+ )),
121
+ )
122
+
123
+
124
+ # ------------------------------------------------------------------
125
+ # Helpers
126
+ # ------------------------------------------------------------------
127
+
128
+ def _building_in_progress(player, bt: BuildingType) -> bool:
129
+ from .buildings import BuildingStatus # local import to avoid cycle
130
+ return any(
131
+ b.building_type == bt and b.status == BuildingStatus.CONSTRUCTING
132
+ for b in player.buildings.values()
133
+ )
backend/game/engine.py CHANGED
@@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, Optional
18
 
19
  from config import TICK_INTERVAL, HARVEST_INTERVAL_TICKS, MINERAL_PER_HARVEST, GAS_PER_HARVEST
20
 
 
21
  from .buildings import Building, BuildingDef, BuildingStatus, BuildingType, BUILDING_DEFS
22
  from .commands import ActionResult, ActionType, CommandResult, GameAction, ParsedCommand
23
  from .map import MAP_HEIGHT, MAP_WIDTH, ResourceType
@@ -39,6 +40,7 @@ class GameEngine:
39
  self.state = state
40
  self.sio = sio
41
  self._task: Optional[asyncio.Task] = None # type: ignore[type-arg]
 
42
 
43
  # ------------------------------------------------------------------
44
  # Lifecycle
@@ -80,6 +82,8 @@ class GameEngine:
80
  while self.state.phase == GamePhase.PLAYING:
81
  await asyncio.sleep(TICK_INTERVAL)
82
  self._tick()
 
 
83
  await self._broadcast()
84
 
85
  def _tick(self) -> None:
 
18
 
19
  from config import TICK_INTERVAL, HARVEST_INTERVAL_TICKS, MINERAL_PER_HARVEST, GAS_PER_HARVEST
20
 
21
+ from .bot import BOT_TICK_INTERVAL, BotPlayer
22
  from .buildings import Building, BuildingDef, BuildingStatus, BuildingType, BUILDING_DEFS
23
  from .commands import ActionResult, ActionType, CommandResult, GameAction, ParsedCommand
24
  from .map import MAP_HEIGHT, MAP_WIDTH, ResourceType
 
40
  self.state = state
41
  self.sio = sio
42
  self._task: Optional[asyncio.Task] = None # type: ignore[type-arg]
43
+ self.bot: Optional[BotPlayer] = None
44
 
45
  # ------------------------------------------------------------------
46
  # Lifecycle
 
82
  while self.state.phase == GamePhase.PLAYING:
83
  await asyncio.sleep(TICK_INTERVAL)
84
  self._tick()
85
+ if self.bot and self.state.tick % BOT_TICK_INTERVAL == 0:
86
+ self.bot.act()
87
  await self._broadcast()
88
 
89
  def _tick(self) -> None:
backend/lobby/__pycache__/__init__.cpython-39.pyc DELETED
Binary file (140 Bytes)
 
backend/lobby/__pycache__/manager.cpython-39.pyc DELETED
Binary file (7.29 kB)
 
backend/lobby/manager.py CHANGED
@@ -25,6 +25,8 @@ import random
25
  import string
26
  from typing import Optional
27
 
 
 
28
  log = logging.getLogger(__name__)
29
 
30
 
@@ -148,6 +150,22 @@ class LobbyManager:
148
  if room:
149
  room.status = "playing"
150
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  def finish_room(self, room_id: str) -> None:
152
  room = self._rooms.get(room_id)
153
  if room:
@@ -155,12 +173,16 @@ class LobbyManager:
155
 
156
  def disconnect(self, sid: str) -> Optional[Room]:
157
  """Handle disconnection. Returns affected room (if any)."""
 
 
158
  room = self._get_room(sid)
159
  if room:
160
  player = room.get_player(sid)
161
  if player:
162
  room.players.remove(player)
163
- if not room.players:
 
 
164
  del self._rooms[room.room_id]
165
  room = None
166
  elif room.status == "playing":
 
25
  import string
26
  from typing import Optional
27
 
28
+ from game.bot import BOT_PLAYER_ID, BOT_PLAYER_NAME
29
+
30
  log = logging.getLogger(__name__)
31
 
32
 
 
150
  if room:
151
  room.status = "playing"
152
 
153
+ def add_bot(self, room_id: str) -> tuple[Optional[Room], Optional[str]]:
154
+ """Add the bot as the second player in a waiting room."""
155
+ room = self._rooms.get(room_id)
156
+ if not room:
157
+ return None, "Room introuvable."
158
+ if room.is_full:
159
+ return None, "Room pleine."
160
+ if room.status != "waiting":
161
+ return None, "La partie est déjà commencée."
162
+
163
+ bot = RoomPlayer(BOT_PLAYER_ID, BOT_PLAYER_NAME)
164
+ bot.ready = True
165
+ room.players.append(bot)
166
+ log.info("Bot added to room %s", room_id)
167
+ return room, None
168
+
169
  def finish_room(self, room_id: str) -> None:
170
  room = self._rooms.get(room_id)
171
  if room:
 
173
 
174
  def disconnect(self, sid: str) -> Optional[Room]:
175
  """Handle disconnection. Returns affected room (if any)."""
176
+ if sid == BOT_PLAYER_ID:
177
+ return None
178
  room = self._get_room(sid)
179
  if room:
180
  player = room.get_player(sid)
181
  if player:
182
  room.players.remove(player)
183
+ # Keep the room alive if only the bot remains (game already over)
184
+ real_players = [p for p in room.players if p.sid != BOT_PLAYER_ID]
185
+ if not real_players:
186
  del self._rooms[room.room_id]
187
  room = None
188
  elif room.status == "playing":
backend/main.py CHANGED
@@ -28,6 +28,7 @@ Server → Client
28
 
29
  from __future__ import annotations
30
 
 
31
  import base64
32
  import logging
33
  import os
@@ -39,11 +40,14 @@ from fastapi import FastAPI
39
  from fastapi.middleware.cors import CORSMiddleware
40
  from fastapi.staticfiles import StaticFiles
41
 
 
42
  from game.engine import GameEngine
43
  from game.state import GameState
44
  from lobby.manager import LobbyManager
45
  from voice import command_parser, stt
46
 
 
 
47
  logging.basicConfig(level=logging.INFO)
48
  log = logging.getLogger(__name__)
49
 
@@ -60,7 +64,7 @@ sio = socketio.AsyncServer(
60
  engineio_logger=False,
61
  )
62
 
63
- fastapi_app = FastAPI(title="VoiceStrike API")
64
  fastapi_app.add_middleware(
65
  CORSMiddleware,
66
  allow_origins=["*"],
@@ -85,7 +89,8 @@ app = socketio.ASGIApp(sio, fastapi_app)
85
  # ---------------------------------------------------------------------------
86
 
87
  lobby = LobbyManager()
88
- engines: dict[str, GameEngine] = {} # room_id → GameEngine
 
89
 
90
  # ---------------------------------------------------------------------------
91
  # Helpers
 
28
 
29
  from __future__ import annotations
30
 
31
+ import asyncio
32
  import base64
33
  import logging
34
  import os
 
40
  from fastapi.middleware.cors import CORSMiddleware
41
  from fastapi.staticfiles import StaticFiles
42
 
43
+ from game.bot import BOT_PLAYER_ID, BotPlayer
44
  from game.engine import GameEngine
45
  from game.state import GameState
46
  from lobby.manager import LobbyManager
47
  from voice import command_parser, stt
48
 
49
+ BOT_OFFER_DELAY = 10 # seconds before offering bot opponent
50
+
51
  logging.basicConfig(level=logging.INFO)
52
  log = logging.getLogger(__name__)
53
 
 
64
  engineio_logger=False,
65
  )
66
 
67
+ fastapi_app = FastAPI(title="ChatCraft API")
68
  fastapi_app.add_middleware(
69
  CORSMiddleware,
70
  allow_origins=["*"],
 
89
  # ---------------------------------------------------------------------------
90
 
91
  lobby = LobbyManager()
92
+ engines: dict[str, GameEngine] = {} # room_id → GameEngine
93
+ _bot_timers: dict[str, asyncio.Task] = {} # sid → pending bot-offer timer
94
 
95
  # ---------------------------------------------------------------------------
96
  # Helpers
backend/voice/__pycache__/__init__.cpython-39.pyc DELETED
Binary file (140 Bytes)
 
backend/voice/__pycache__/command_parser.cpython-39.pyc DELETED
Binary file (4.73 kB)
 
backend/voice/__pycache__/stt.cpython-39.pyc DELETED
Binary file (1.38 kB)
 
backend/voice/__pycache__/tts.cpython-39.pyc DELETED
Binary file (1.39 kB)
 
frontend/.svelte-kit/ambient.d.ts CHANGED
@@ -40,16 +40,11 @@
40
  declare module '$env/static/private' {
41
  export const GJS_DEBUG_TOPICS: string;
42
  export const LESSOPEN: string;
43
- export const VSCODE_CWD: string;
44
- export const CURSOR_EXTENSION_HOST_ROLE: string;
45
- export const VSCODE_ESM_ENTRYPOINT: string;
46
  export const CONDA_PROMPT_MODIFIER: string;
47
  export const USER: string;
48
- export const VSCODE_NLS_CONFIG: string;
49
  export const npm_config_user_agent: string;
50
- export const CI: string;
51
- export const VSCODE_HANDLES_UNCAUGHT_ERRORS: string;
52
  export const XDG_SESSION_TYPE: string;
 
53
  export const npm_node_execpath: string;
54
  export const SHLVL: string;
55
  export const LD_LIBRARY_PATH: string;
@@ -59,29 +54,30 @@ declare module '$env/static/private' {
59
  export const APPDIR: string;
60
  export const CONDA_SHLVL: string;
61
  export const OLDPWD: string;
 
62
  export const DESKTOP_SESSION: string;
63
  export const npm_package_json: string;
64
  export const PERLLIB: string;
65
- export const VSCODE_IPC_HOOK: string;
66
  export const GIO_LAUNCHED_DESKTOP_FILE: string;
67
  export const GNOME_SHELL_SESSION_MODE: string;
68
  export const GTK_MODULES: string;
 
 
69
  export const MANAGERPID: string;
70
  export const npm_config_userconfig: string;
71
  export const npm_config_local_prefix: string;
 
72
  export const SYSTEMD_EXEC_PID: string;
73
- export const IM_CONFIG_CHECK_ENV: string;
74
- export const NO_COLOR: string;
75
  export const DBUS_SESSION_BUS_ADDRESS: string;
 
76
  export const _CE_M: string;
77
  export const GIO_LAUNCHED_DESKTOP_FILE_PID: string;
78
  export const COLOR: string;
79
- export const VSCODE_CRASH_REPORTER_PROCESS_TYPE: string;
80
  export const DEBUGINFOD_URLS: string;
81
  export const IM_CONFIG_PHASE: string;
82
  export const WAYLAND_DISPLAY: string;
83
  export const LOGNAME: string;
84
- export const FORCE_COLOR: string;
85
  export const OWD: string;
86
  export const JOURNAL_STREAM: string;
87
  export const _: string;
@@ -102,18 +98,19 @@ declare module '$env/static/private' {
102
  export const NODE: string;
103
  export const npm_package_name: string;
104
  export const XDG_MENU_PREFIX: string;
105
- export const VSCODE_PROCESS_TITLE: string;
106
  export const GNOME_SETUP_DISPLAY: string;
107
  export const XDG_RUNTIME_DIR: string;
108
  export const GDK_BACKEND: string;
109
- export const CURSOR_AGENT: string;
110
  export const DISPLAY: string;
 
111
  export const LANG: string;
112
  export const XDG_CURRENT_DESKTOP: string;
113
  export const XMODIFIERS: string;
114
  export const XDG_SESSION_DESKTOP: string;
115
  export const XAUTHORITY: string;
116
  export const LS_COLORS: string;
 
 
117
  export const CURSOR_TRACE_ID: string;
118
  export const npm_lifecycle_script: string;
119
  export const SSH_AUTH_SOCK: string;
@@ -129,6 +126,8 @@ declare module '$env/static/private' {
129
  export const CONDA_DEFAULT_ENV: string;
130
  export const GPG_AGENT_INFO: string;
131
  export const GJS_DEBUG_OUTPUT: string;
 
 
132
  export const QT_IM_MODULE: string;
133
  export const npm_config_globalconfig: string;
134
  export const npm_config_init_module: string;
@@ -136,16 +135,13 @@ declare module '$env/static/private' {
136
  export const npm_execpath: string;
137
  export const XDG_CONFIG_DIRS: string;
138
  export const CONDA_EXE: string;
139
- export const VSCODE_CODE_CACHE_PATH: string;
140
  export const XDG_DATA_DIRS: string;
141
  export const npm_config_global_prefix: string;
142
  export const npm_command: string;
143
  export const CONDA_PREFIX: string;
144
  export const QT_PLUGIN_PATH: string;
145
- export const _ZO_DOCTOR: string;
146
  export const QT_IM_MODULES: string;
147
  export const MEMORY_PRESSURE_WRITE: string;
148
- export const VSCODE_PID: string;
149
  export const INIT_CWD: string;
150
  export const EDITOR: string;
151
  export const NODE_ENV: string;
@@ -237,16 +233,11 @@ declare module '$env/dynamic/private' {
237
  export const env: {
238
  GJS_DEBUG_TOPICS: string;
239
  LESSOPEN: string;
240
- VSCODE_CWD: string;
241
- CURSOR_EXTENSION_HOST_ROLE: string;
242
- VSCODE_ESM_ENTRYPOINT: string;
243
  CONDA_PROMPT_MODIFIER: string;
244
  USER: string;
245
- VSCODE_NLS_CONFIG: string;
246
  npm_config_user_agent: string;
247
- CI: string;
248
- VSCODE_HANDLES_UNCAUGHT_ERRORS: string;
249
  XDG_SESSION_TYPE: string;
 
250
  npm_node_execpath: string;
251
  SHLVL: string;
252
  LD_LIBRARY_PATH: string;
@@ -256,29 +247,30 @@ declare module '$env/dynamic/private' {
256
  APPDIR: string;
257
  CONDA_SHLVL: string;
258
  OLDPWD: string;
 
259
  DESKTOP_SESSION: string;
260
  npm_package_json: string;
261
  PERLLIB: string;
262
- VSCODE_IPC_HOOK: string;
263
  GIO_LAUNCHED_DESKTOP_FILE: string;
264
  GNOME_SHELL_SESSION_MODE: string;
265
  GTK_MODULES: string;
 
 
266
  MANAGERPID: string;
267
  npm_config_userconfig: string;
268
  npm_config_local_prefix: string;
 
269
  SYSTEMD_EXEC_PID: string;
270
- IM_CONFIG_CHECK_ENV: string;
271
- NO_COLOR: string;
272
  DBUS_SESSION_BUS_ADDRESS: string;
 
273
  _CE_M: string;
274
  GIO_LAUNCHED_DESKTOP_FILE_PID: string;
275
  COLOR: string;
276
- VSCODE_CRASH_REPORTER_PROCESS_TYPE: string;
277
  DEBUGINFOD_URLS: string;
278
  IM_CONFIG_PHASE: string;
279
  WAYLAND_DISPLAY: string;
280
  LOGNAME: string;
281
- FORCE_COLOR: string;
282
  OWD: string;
283
  JOURNAL_STREAM: string;
284
  _: string;
@@ -299,18 +291,19 @@ declare module '$env/dynamic/private' {
299
  NODE: string;
300
  npm_package_name: string;
301
  XDG_MENU_PREFIX: string;
302
- VSCODE_PROCESS_TITLE: string;
303
  GNOME_SETUP_DISPLAY: string;
304
  XDG_RUNTIME_DIR: string;
305
  GDK_BACKEND: string;
306
- CURSOR_AGENT: string;
307
  DISPLAY: string;
 
308
  LANG: string;
309
  XDG_CURRENT_DESKTOP: string;
310
  XMODIFIERS: string;
311
  XDG_SESSION_DESKTOP: string;
312
  XAUTHORITY: string;
313
  LS_COLORS: string;
 
 
314
  CURSOR_TRACE_ID: string;
315
  npm_lifecycle_script: string;
316
  SSH_AUTH_SOCK: string;
@@ -326,6 +319,8 @@ declare module '$env/dynamic/private' {
326
  CONDA_DEFAULT_ENV: string;
327
  GPG_AGENT_INFO: string;
328
  GJS_DEBUG_OUTPUT: string;
 
 
329
  QT_IM_MODULE: string;
330
  npm_config_globalconfig: string;
331
  npm_config_init_module: string;
@@ -333,16 +328,13 @@ declare module '$env/dynamic/private' {
333
  npm_execpath: string;
334
  XDG_CONFIG_DIRS: string;
335
  CONDA_EXE: string;
336
- VSCODE_CODE_CACHE_PATH: string;
337
  XDG_DATA_DIRS: string;
338
  npm_config_global_prefix: string;
339
  npm_command: string;
340
  CONDA_PREFIX: string;
341
  QT_PLUGIN_PATH: string;
342
- _ZO_DOCTOR: string;
343
  QT_IM_MODULES: string;
344
  MEMORY_PRESSURE_WRITE: string;
345
- VSCODE_PID: string;
346
  INIT_CWD: string;
347
  EDITOR: string;
348
  NODE_ENV: string;
 
40
  declare module '$env/static/private' {
41
  export const GJS_DEBUG_TOPICS: string;
42
  export const LESSOPEN: string;
 
 
 
43
  export const CONDA_PROMPT_MODIFIER: string;
44
  export const USER: string;
 
45
  export const npm_config_user_agent: string;
 
 
46
  export const XDG_SESSION_TYPE: string;
47
+ export const GIT_ASKPASS: string;
48
  export const npm_node_execpath: string;
49
  export const SHLVL: string;
50
  export const LD_LIBRARY_PATH: string;
 
54
  export const APPDIR: string;
55
  export const CONDA_SHLVL: string;
56
  export const OLDPWD: string;
57
+ export const TERM_PROGRAM_VERSION: string;
58
  export const DESKTOP_SESSION: string;
59
  export const npm_package_json: string;
60
  export const PERLLIB: string;
 
61
  export const GIO_LAUNCHED_DESKTOP_FILE: string;
62
  export const GNOME_SHELL_SESSION_MODE: string;
63
  export const GTK_MODULES: string;
64
+ export const VSCODE_GIT_ASKPASS_MAIN: string;
65
+ export const VSCODE_GIT_ASKPASS_NODE: string;
66
  export const MANAGERPID: string;
67
  export const npm_config_userconfig: string;
68
  export const npm_config_local_prefix: string;
69
+ export const PYDEVD_DISABLE_FILE_VALIDATION: string;
70
  export const SYSTEMD_EXEC_PID: string;
71
+ export const BUNDLED_DEBUGPY_PATH: string;
 
72
  export const DBUS_SESSION_BUS_ADDRESS: string;
73
+ export const COLORTERM: string;
74
  export const _CE_M: string;
75
  export const GIO_LAUNCHED_DESKTOP_FILE_PID: string;
76
  export const COLOR: string;
 
77
  export const DEBUGINFOD_URLS: string;
78
  export const IM_CONFIG_PHASE: string;
79
  export const WAYLAND_DISPLAY: string;
80
  export const LOGNAME: string;
 
81
  export const OWD: string;
82
  export const JOURNAL_STREAM: string;
83
  export const _: string;
 
98
  export const NODE: string;
99
  export const npm_package_name: string;
100
  export const XDG_MENU_PREFIX: string;
 
101
  export const GNOME_SETUP_DISPLAY: string;
102
  export const XDG_RUNTIME_DIR: string;
103
  export const GDK_BACKEND: string;
 
104
  export const DISPLAY: string;
105
+ export const VSCODE_DEBUGPY_ADAPTER_ENDPOINTS: string;
106
  export const LANG: string;
107
  export const XDG_CURRENT_DESKTOP: string;
108
  export const XMODIFIERS: string;
109
  export const XDG_SESSION_DESKTOP: string;
110
  export const XAUTHORITY: string;
111
  export const LS_COLORS: string;
112
+ export const VSCODE_GIT_IPC_HANDLE: string;
113
+ export const TERM_PROGRAM: string;
114
  export const CURSOR_TRACE_ID: string;
115
  export const npm_lifecycle_script: string;
116
  export const SSH_AUTH_SOCK: string;
 
126
  export const CONDA_DEFAULT_ENV: string;
127
  export const GPG_AGENT_INFO: string;
128
  export const GJS_DEBUG_OUTPUT: string;
129
+ export const VSCODE_GIT_IPC_AUTH_TOKEN: string;
130
+ export const VSCODE_GIT_ASKPASS_EXTRA_ARGS: string;
131
  export const QT_IM_MODULE: string;
132
  export const npm_config_globalconfig: string;
133
  export const npm_config_init_module: string;
 
135
  export const npm_execpath: string;
136
  export const XDG_CONFIG_DIRS: string;
137
  export const CONDA_EXE: string;
 
138
  export const XDG_DATA_DIRS: string;
139
  export const npm_config_global_prefix: string;
140
  export const npm_command: string;
141
  export const CONDA_PREFIX: string;
142
  export const QT_PLUGIN_PATH: string;
 
143
  export const QT_IM_MODULES: string;
144
  export const MEMORY_PRESSURE_WRITE: string;
 
145
  export const INIT_CWD: string;
146
  export const EDITOR: string;
147
  export const NODE_ENV: string;
 
233
  export const env: {
234
  GJS_DEBUG_TOPICS: string;
235
  LESSOPEN: string;
 
 
 
236
  CONDA_PROMPT_MODIFIER: string;
237
  USER: string;
 
238
  npm_config_user_agent: string;
 
 
239
  XDG_SESSION_TYPE: string;
240
+ GIT_ASKPASS: string;
241
  npm_node_execpath: string;
242
  SHLVL: string;
243
  LD_LIBRARY_PATH: string;
 
247
  APPDIR: string;
248
  CONDA_SHLVL: string;
249
  OLDPWD: string;
250
+ TERM_PROGRAM_VERSION: string;
251
  DESKTOP_SESSION: string;
252
  npm_package_json: string;
253
  PERLLIB: string;
 
254
  GIO_LAUNCHED_DESKTOP_FILE: string;
255
  GNOME_SHELL_SESSION_MODE: string;
256
  GTK_MODULES: string;
257
+ VSCODE_GIT_ASKPASS_MAIN: string;
258
+ VSCODE_GIT_ASKPASS_NODE: string;
259
  MANAGERPID: string;
260
  npm_config_userconfig: string;
261
  npm_config_local_prefix: string;
262
+ PYDEVD_DISABLE_FILE_VALIDATION: string;
263
  SYSTEMD_EXEC_PID: string;
264
+ BUNDLED_DEBUGPY_PATH: string;
 
265
  DBUS_SESSION_BUS_ADDRESS: string;
266
+ COLORTERM: string;
267
  _CE_M: string;
268
  GIO_LAUNCHED_DESKTOP_FILE_PID: string;
269
  COLOR: string;
 
270
  DEBUGINFOD_URLS: string;
271
  IM_CONFIG_PHASE: string;
272
  WAYLAND_DISPLAY: string;
273
  LOGNAME: string;
 
274
  OWD: string;
275
  JOURNAL_STREAM: string;
276
  _: string;
 
291
  NODE: string;
292
  npm_package_name: string;
293
  XDG_MENU_PREFIX: string;
 
294
  GNOME_SETUP_DISPLAY: string;
295
  XDG_RUNTIME_DIR: string;
296
  GDK_BACKEND: string;
 
297
  DISPLAY: string;
298
+ VSCODE_DEBUGPY_ADAPTER_ENDPOINTS: string;
299
  LANG: string;
300
  XDG_CURRENT_DESKTOP: string;
301
  XMODIFIERS: string;
302
  XDG_SESSION_DESKTOP: string;
303
  XAUTHORITY: string;
304
  LS_COLORS: string;
305
+ VSCODE_GIT_IPC_HANDLE: string;
306
+ TERM_PROGRAM: string;
307
  CURSOR_TRACE_ID: string;
308
  npm_lifecycle_script: string;
309
  SSH_AUTH_SOCK: string;
 
319
  CONDA_DEFAULT_ENV: string;
320
  GPG_AGENT_INFO: string;
321
  GJS_DEBUG_OUTPUT: string;
322
+ VSCODE_GIT_IPC_AUTH_TOKEN: string;
323
+ VSCODE_GIT_ASKPASS_EXTRA_ARGS: string;
324
  QT_IM_MODULE: string;
325
  npm_config_globalconfig: string;
326
  npm_config_init_module: string;
 
328
  npm_execpath: string;
329
  XDG_CONFIG_DIRS: string;
330
  CONDA_EXE: string;
 
331
  XDG_DATA_DIRS: string;
332
  npm_config_global_prefix: string;
333
  npm_command: string;
334
  CONDA_PREFIX: string;
335
  QT_PLUGIN_PATH: string;
 
336
  QT_IM_MODULES: string;
337
  MEMORY_PRESSURE_WRITE: string;
 
338
  INIT_CWD: string;
339
  EDITOR: string;
340
  NODE_ENV: string;
frontend/.svelte-kit/generated/client-optimized/app.js DELETED
@@ -1,31 +0,0 @@
1
- export { matchers } from './matchers.js';
2
-
3
- export const nodes = [
4
- () => import('./nodes/0'),
5
- () => import('./nodes/1'),
6
- () => import('./nodes/2'),
7
- () => import('./nodes/3')
8
- ];
9
-
10
- export const server_loads = [];
11
-
12
- export const dictionary = {
13
- "/": [2],
14
- "/game": [3]
15
- };
16
-
17
- export const hooks = {
18
- handleError: (({ error }) => { console.error(error) }),
19
-
20
- reroute: (() => {}),
21
- transport: {}
22
- };
23
-
24
- export const decoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.decode]));
25
- export const encoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.encode]));
26
-
27
- export const hash = false;
28
-
29
- export const decode = (type, value) => decoders[type](value);
30
-
31
- export { default as root } from '../root.svelte';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/.svelte-kit/generated/client-optimized/matchers.js DELETED
@@ -1 +0,0 @@
1
- export const matchers = {};
 
 
frontend/.svelte-kit/generated/client-optimized/nodes/0.js DELETED
@@ -1 +0,0 @@
1
- export { default as component } from "../../../../src/routes/+layout.svelte";
 
 
frontend/.svelte-kit/generated/client-optimized/nodes/1.js DELETED
@@ -1 +0,0 @@
1
- export { default as component } from "../../../../node_modules/@sveltejs/kit/src/runtime/components/svelte-4/error.svelte";
 
 
frontend/.svelte-kit/generated/client-optimized/nodes/2.js DELETED
@@ -1,3 +0,0 @@
1
- import * as universal from "../../../../src/routes/+page.js";
2
- export { universal };
3
- export { default as component } from "../../../../src/routes/+page.svelte";
 
 
 
 
frontend/.svelte-kit/generated/client-optimized/nodes/3.js DELETED
@@ -1,3 +0,0 @@
1
- import * as universal from "../../../../src/routes/game/+page.js";
2
- export { universal };
3
- export { default as component } from "../../../../src/routes/game/+page.svelte";
 
 
 
 
frontend/.svelte-kit/generated/client/app.js DELETED
@@ -1,31 +0,0 @@
1
- export { matchers } from './matchers.js';
2
-
3
- export const nodes = [
4
- () => import('./nodes/0'),
5
- () => import('./nodes/1'),
6
- () => import('./nodes/2'),
7
- () => import('./nodes/3')
8
- ];
9
-
10
- export const server_loads = [];
11
-
12
- export const dictionary = {
13
- "/": [2],
14
- "/game": [3]
15
- };
16
-
17
- export const hooks = {
18
- handleError: (({ error }) => { console.error(error) }),
19
-
20
- reroute: (() => {}),
21
- transport: {}
22
- };
23
-
24
- export const decoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.decode]));
25
- export const encoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.encode]));
26
-
27
- export const hash = false;
28
-
29
- export const decode = (type, value) => decoders[type](value);
30
-
31
- export { default as root } from '../root.svelte';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/.svelte-kit/generated/client/matchers.js DELETED
@@ -1 +0,0 @@
1
- export const matchers = {};
 
 
frontend/.svelte-kit/generated/client/nodes/0.js DELETED
@@ -1 +0,0 @@
1
- export { default as component } from "../../../../src/routes/+layout.svelte";
 
 
frontend/.svelte-kit/generated/client/nodes/1.js DELETED
@@ -1 +0,0 @@
1
- export { default as component } from "../../../../node_modules/@sveltejs/kit/src/runtime/components/svelte-4/error.svelte";
 
 
frontend/.svelte-kit/generated/client/nodes/2.js DELETED
@@ -1,3 +0,0 @@
1
- import * as universal from "../../../../src/routes/+page.js";
2
- export { universal };
3
- export { default as component } from "../../../../src/routes/+page.svelte";
 
 
 
 
frontend/.svelte-kit/generated/client/nodes/3.js DELETED
@@ -1,3 +0,0 @@
1
- import * as universal from "../../../../src/routes/game/+page.js";
2
- export { universal };
3
- export { default as component } from "../../../../src/routes/game/+page.svelte";
 
 
 
 
frontend/.svelte-kit/generated/root.svelte DELETED
@@ -1,62 +0,0 @@
1
- <!-- This file is generated by @sveltejs/kit — do not edit it! -->
2
-
3
- <script>
4
- import { setContext, afterUpdate, onMount, tick } from 'svelte';
5
- import { browser } from '$app/environment';
6
-
7
- // stores
8
- export let stores;
9
- export let page;
10
-
11
- export let constructors;
12
- export let components = [];
13
- export let form;
14
- export let data_0 = null;
15
- export let data_1 = null;
16
-
17
- if (!browser) {
18
- // svelte-ignore state_referenced_locally
19
- setContext('__svelte__', stores);
20
- }
21
-
22
- $: stores.page.set(page);
23
- afterUpdate(stores.page.notify);
24
-
25
- let mounted = false;
26
- let navigated = false;
27
- let title = null;
28
-
29
- onMount(() => {
30
- const unsubscribe = stores.page.subscribe(() => {
31
- if (mounted) {
32
- navigated = true;
33
- tick().then(() => {
34
- title = document.title || 'untitled page';
35
- });
36
- }
37
- });
38
-
39
- mounted = true;
40
- return unsubscribe;
41
- });
42
-
43
-
44
- </script>
45
-
46
- {#if constructors[1]}
47
- <svelte:component this={constructors[0]} bind:this={components[0]} data={data_0} params={page.params}>
48
- <svelte:component this={constructors[1]} bind:this={components[1]} data={data_1} {form} params={page.params} />
49
- </svelte:component>
50
-
51
- {:else}
52
- <svelte:component this={constructors[0]} bind:this={components[0]} data={data_0} {form} params={page.params} />
53
-
54
- {/if}
55
-
56
- {#if mounted}
57
- <div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px">
58
- {#if navigated}
59
- {title}
60
- {/if}
61
- </div>
62
- {/if}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/.svelte-kit/generated/server/internal.js DELETED
@@ -1,53 +0,0 @@
1
-
2
- import root from '../root.svelte';
3
- import { set_building, set_prerendering } from '__sveltekit/environment';
4
- import { set_assets } from '$app/paths/internal/server';
5
- import { set_manifest, set_read_implementation } from '__sveltekit/server';
6
- import { set_private_env, set_public_env } from '../../../node_modules/@sveltejs/kit/src/runtime/shared-server.js';
7
-
8
- export const options = {
9
- app_template_contains_nonce: false,
10
- async: false,
11
- csp: {"mode":"auto","directives":{"upgrade-insecure-requests":false,"block-all-mixed-content":false},"reportOnly":{"upgrade-insecure-requests":false,"block-all-mixed-content":false}},
12
- csrf_check_origin: true,
13
- csrf_trusted_origins: [],
14
- embedded: false,
15
- env_public_prefix: 'PUBLIC_',
16
- env_private_prefix: '',
17
- hash_routing: false,
18
- hooks: null, // added lazily, via `get_hooks`
19
- preload_strategy: "modulepreload",
20
- root,
21
- service_worker: false,
22
- service_worker_options: undefined,
23
- templates: {
24
- app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"fr\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no\" />\n <meta name=\"mobile-web-app-capable\" content=\"yes\" />\n <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n <meta name=\"theme-color\" content=\"#0d1117\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n <title>VoiceStrike</title>\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"hover\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
25
- error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
26
- },
27
- version_hash: "ofzaah"
28
- };
29
-
30
- export async function get_hooks() {
31
- let handle;
32
- let handleFetch;
33
- let handleError;
34
- let handleValidationError;
35
- let init;
36
-
37
-
38
- let reroute;
39
- let transport;
40
-
41
-
42
- return {
43
- handle,
44
- handleFetch,
45
- handleError,
46
- handleValidationError,
47
- init,
48
- reroute,
49
- transport
50
- };
51
- }
52
-
53
- export { set_assets, set_building, set_manifest, set_prerendering, set_private_env, set_public_env, set_read_implementation };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/.svelte-kit/output/client/.vite/manifest.json DELETED
@@ -1,110 +0,0 @@
1
- {
2
- ".svelte-kit/generated/client-optimized/app.js": {
3
- "file": "_app/immutable/entry/app.mfL3Z2b5.js",
4
- "name": "entry/app",
5
- "src": ".svelte-kit/generated/client-optimized/app.js",
6
- "isEntry": true,
7
- "imports": [
8
- "_DQebRFVS.js",
9
- "_BX82rj4I.js"
10
- ],
11
- "dynamicImports": [
12
- ".svelte-kit/generated/client-optimized/nodes/0.js",
13
- ".svelte-kit/generated/client-optimized/nodes/1.js",
14
- ".svelte-kit/generated/client-optimized/nodes/2.js",
15
- ".svelte-kit/generated/client-optimized/nodes/3.js"
16
- ]
17
- },
18
- ".svelte-kit/generated/client-optimized/nodes/0.js": {
19
- "file": "_app/immutable/nodes/0.B4Km_xye.js",
20
- "name": "nodes/0",
21
- "src": ".svelte-kit/generated/client-optimized/nodes/0.js",
22
- "isEntry": true,
23
- "isDynamicEntry": true,
24
- "imports": [
25
- "_DQebRFVS.js",
26
- "_BX82rj4I.js"
27
- ],
28
- "css": [
29
- "_app/immutable/assets/0.XtmqqaVM.css"
30
- ]
31
- },
32
- ".svelte-kit/generated/client-optimized/nodes/1.js": {
33
- "file": "_app/immutable/nodes/1.CgjumiZZ.js",
34
- "name": "nodes/1",
35
- "src": ".svelte-kit/generated/client-optimized/nodes/1.js",
36
- "isEntry": true,
37
- "isDynamicEntry": true,
38
- "imports": [
39
- "_DQebRFVS.js",
40
- "_BX82rj4I.js",
41
- "_J0QSAnNz.js"
42
- ]
43
- },
44
- ".svelte-kit/generated/client-optimized/nodes/2.js": {
45
- "file": "_app/immutable/nodes/2.CwsLFqkm.js",
46
- "name": "nodes/2",
47
- "src": ".svelte-kit/generated/client-optimized/nodes/2.js",
48
- "isEntry": true,
49
- "isDynamicEntry": true,
50
- "imports": [
51
- "_DQebRFVS.js",
52
- "_BxRIPBY0.js",
53
- "_BX82rj4I.js",
54
- "_J0QSAnNz.js"
55
- ],
56
- "css": [
57
- "_app/immutable/assets/2.BpyLQ8v8.css"
58
- ]
59
- },
60
- ".svelte-kit/generated/client-optimized/nodes/3.js": {
61
- "file": "_app/immutable/nodes/3.xYrSFp1n.js",
62
- "name": "nodes/3",
63
- "src": ".svelte-kit/generated/client-optimized/nodes/3.js",
64
- "isEntry": true,
65
- "isDynamicEntry": true,
66
- "imports": [
67
- "_DQebRFVS.js",
68
- "_BX82rj4I.js",
69
- "_J0QSAnNz.js",
70
- "_BxRIPBY0.js"
71
- ],
72
- "css": [
73
- "_app/immutable/assets/3.CRf0cTrE.css"
74
- ]
75
- },
76
- "_BX82rj4I.js": {
77
- "file": "_app/immutable/chunks/BX82rj4I.js",
78
- "name": "index",
79
- "imports": [
80
- "_DQebRFVS.js"
81
- ]
82
- },
83
- "_BxRIPBY0.js": {
84
- "file": "_app/immutable/chunks/BxRIPBY0.js",
85
- "name": "game",
86
- "imports": [
87
- "_J0QSAnNz.js"
88
- ]
89
- },
90
- "_DQebRFVS.js": {
91
- "file": "_app/immutable/chunks/DQebRFVS.js",
92
- "name": "scheduler"
93
- },
94
- "_J0QSAnNz.js": {
95
- "file": "_app/immutable/chunks/J0QSAnNz.js",
96
- "name": "entry",
97
- "imports": [
98
- "_DQebRFVS.js"
99
- ]
100
- },
101
- "node_modules/@sveltejs/kit/src/runtime/client/entry.js": {
102
- "file": "_app/immutable/entry/start.BPj5i5_S.js",
103
- "name": "entry/start",
104
- "src": "node_modules/@sveltejs/kit/src/runtime/client/entry.js",
105
- "isEntry": true,
106
- "imports": [
107
- "_J0QSAnNz.js"
108
- ]
109
- }
110
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/.svelte-kit/output/client/_app/immutable/assets/0.XtmqqaVM.css DELETED
@@ -1 +0,0 @@
1
- :root{--bg: #0d1117;--surface: #161b22;--surface2: #1c2128;--border: #30363d;--border-focus: #58a6ff;--mineral: #4fc3f7;--gas: #69f0ae;--supply: #ffa726;--player: #58a6ff;--enemy: #f85149;--neutral: #8b949e;--text: #e6edf3;--text-muted: #8b949e;--text-dim: #484f58;--accent: #58a6ff;--success: #3fb950;--warning: #d29922;--danger: #f85149;--map-bg: #0b1a0b;--map-grid: rgba(255, 255, 255, .03);--radius: 8px;--radius-lg: 16px;--radius-xl: 24px;--font-mono: "JetBrains Mono", "Fira Code", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;height:-webkit-fill-available}body{height:100%;min-height:-webkit-fill-available;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,sans-serif;overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}button{cursor:pointer;border:none;background:none;color:inherit;font:inherit;-webkit-tap-highlight-color:transparent}input{font:inherit;color:inherit}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--surface)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.mono{font-family:var(--font-mono)}.glow-mineral{text-shadow:0 0 8px var(--mineral)}.glow-gas{text-shadow:0 0 8px var(--gas)}.glow-danger{text-shadow:0 0 8px var(--danger)}
 
 
frontend/.svelte-kit/output/client/_app/immutable/assets/2.BpyLQ8v8.css DELETED
@@ -1 +0,0 @@
1
- .lobby.svelte-cigodj.svelte-cigodj{min-height:100dvh;display:flex;flex-direction:column;align-items:center;gap:20px;padding:40px 20px 32px;max-width:440px;margin:0 auto}.lobby-header.svelte-cigodj.svelte-cigodj{text-align:center;padding:8px 0}.logo.svelte-cigodj.svelte-cigodj{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:6px}.logo-icon.svelte-cigodj.svelte-cigodj{font-size:2rem}.logo-text.svelte-cigodj.svelte-cigodj{font-size:2rem;font-weight:800;letter-spacing:-1px;background:linear-gradient(135deg,var(--player),#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tagline.svelte-cigodj.svelte-cigodj{color:var(--text-muted);font-size:.85rem}.card.svelte-cigodj.svelte-cigodj{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.center.svelte-cigodj.svelte-cigodj{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:40px 20px}.field-label.svelte-cigodj.svelte-cigodj{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:8px}.text-input.svelte-cigodj.svelte-cigodj{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;font-size:1rem;color:var(--text);outline:none;transition:border-color .15s}.text-input.svelte-cigodj.svelte-cigodj:focus{border-color:var(--border-focus)}.code-input.svelte-cigodj.svelte-cigodj{text-transform:uppercase;letter-spacing:.2em;font-weight:700;font-size:1.1rem;flex:1}.actions.svelte-cigodj.svelte-cigodj{width:100%;display:flex;flex-direction:column;gap:10px}.join-row.svelte-cigodj.svelte-cigodj{display:flex;gap:8px;align-items:stretch}.btn.svelte-cigodj.svelte-cigodj{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 20px;border-radius:var(--radius-lg);font-size:.95rem;font-weight:600;transition:all .15s;width:100%}.btn-sm.svelte-cigodj.svelte-cigodj{padding:12px 16px;width:auto;flex-shrink:0}.btn-large.svelte-cigodj.svelte-cigodj{padding:18px 20px;font-size:1.1rem}.btn-icon.svelte-cigodj.svelte-cigodj{font-size:1.1rem}.btn-primary.svelte-cigodj.svelte-cigodj{background:var(--player);color:#fff}.btn-primary.svelte-cigodj.svelte-cigodj:hover{filter:brightness(1.1)}.btn-primary.svelte-cigodj.svelte-cigodj:active{filter:brightness(.9)}.btn-secondary.svelte-cigodj.svelte-cigodj{background:var(--surface2);border:1px solid var(--border);color:var(--text)}.btn-secondary.svelte-cigodj.svelte-cigodj:hover{border-color:var(--player)}.btn-ghost.svelte-cigodj.svelte-cigodj{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.btn-ghost.svelte-cigodj.svelte-cigodj:hover{color:var(--text);border-color:var(--border-focus)}.room-code-block.svelte-cigodj.svelte-cigodj{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.room-code-label.svelte-cigodj.svelte-cigodj{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.room-code.svelte-cigodj.svelte-cigodj{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;letter-spacing:.15em;color:var(--accent);flex:1}.copy-btn.svelte-cigodj.svelte-cigodj{padding:6px 12px;border-radius:var(--radius);background:var(--surface2);border:1px solid var(--border);font-size:.8rem;color:var(--text-muted);cursor:pointer}.copy-btn.svelte-cigodj.svelte-cigodj:active{opacity:.7}.players-list.svelte-cigodj.svelte-cigodj{width:100%;display:flex;flex-direction:column;gap:8px}.player-row.svelte-cigodj.svelte-cigodj{display:flex;align-items:center;gap:8px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.player-row.is-you.svelte-cigodj.svelte-cigodj{border-color:var(--player)}.player-name.svelte-cigodj.svelte-cigodj{flex:1;font-weight:600}.player-placeholder.svelte-cigodj.svelte-cigodj{opacity:.5}.badge.svelte-cigodj.svelte-cigodj{padding:3px 8px;border-radius:99px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.badge-you.svelte-cigodj.svelte-cigodj{background:#58a6ff33;color:var(--player)}.badge-ready.svelte-cigodj.svelte-cigodj{background:#3fb95033;color:var(--success)}.badge-waiting.svelte-cigodj.svelte-cigodj{background:#8b949e26;color:var(--text-muted)}.status-text.svelte-cigodj.svelte-cigodj{color:var(--text);font-size:1rem;font-weight:500}.status-muted.svelte-cigodj.svelte-cigodj{color:var(--text-muted);font-size:.85rem}.error-toast.svelte-cigodj.svelte-cigodj{width:100%;background:#f8514926;border:1px solid var(--danger);color:var(--danger);border-radius:var(--radius);padding:10px 14px;font-size:.9rem;text-align:center}.spinner.svelte-cigodj.svelte-cigodj{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--player);border-radius:50%;animation:svelte-cigodj-spin .8s linear infinite}@keyframes svelte-cigodj-spin{to{transform:rotate(360deg)}}.dot-pulse.svelte-cigodj.svelte-cigodj{display:flex;gap:4px;align-items:center}.dot-pulse.svelte-cigodj span.svelte-cigodj{width:6px;height:6px;background:var(--text-muted);border-radius:50%;animation:svelte-cigodj-pulse 1.2s ease-in-out infinite}.dot-pulse.svelte-cigodj span.svelte-cigodj:nth-child(2){animation-delay:.2s}.dot-pulse.svelte-cigodj span.svelte-cigodj:nth-child(3){animation-delay:.4s}@keyframes svelte-cigodj-pulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}
 
 
frontend/.svelte-kit/output/client/_app/immutable/assets/3.CRf0cTrE.css DELETED
@@ -1 +0,0 @@
1
- .map-svg.svelte-1uzb49f{width:100%;height:100%;display:block;cursor:grab;touch-action:none}.map-svg.svelte-1uzb49f:active{cursor:grabbing}.resource-bar.svelte-ra6vcp.svelte-ra6vcp{display:flex;align-items:center;justify-content:space-between;padding:0 14px;height:44px;background:#0d1117f2;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-shrink:0;gap:8px}.resources.svelte-ra6vcp.svelte-ra6vcp{display:flex;align-items:center;gap:10px}.res.svelte-ra6vcp.svelte-ra6vcp{display:flex;align-items:center;gap:4px}.res-icon.svelte-ra6vcp.svelte-ra6vcp{font-size:.85rem}.res-val.svelte-ra6vcp.svelte-ra6vcp{font-size:.85rem;font-weight:700}.mineral.svelte-ra6vcp .res-val.svelte-ra6vcp{color:var(--mineral)}.gas.svelte-ra6vcp .res-val.svelte-ra6vcp{color:var(--gas)}.supply.svelte-ra6vcp .res-val.svelte-ra6vcp{color:var(--supply)}.supply-critical.svelte-ra6vcp .res-val.svelte-ra6vcp{color:var(--danger);animation:svelte-ra6vcp-blink .8s ease-in-out infinite alternate}@keyframes svelte-ra6vcp-blink{0%{opacity:1}to{opacity:.4}}.timer.svelte-ra6vcp.svelte-ra6vcp{font-size:.9rem;font-weight:700;color:var(--text-muted);letter-spacing:.05em}.enemy-label.svelte-ra6vcp.svelte-ra6vcp{display:flex;align-items:center;gap:6px;flex-direction:row-reverse}.enemy-name.svelte-ra6vcp.svelte-ra6vcp{font-size:.8rem;color:var(--enemy);font-weight:600;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.enemy-dot.svelte-ra6vcp.svelte-ra6vcp{width:7px;height:7px;border-radius:50%;background:var(--enemy);flex-shrink:0}.voice-btn.svelte-i113ea{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;width:80px;height:80px;border-radius:50%;background:var(--surface2);border:2px solid var(--border);color:var(--text);transition:all .15s;flex-shrink:0;overflow:visible}.voice-btn.svelte-i113ea:not(:disabled):active,.voice-btn.recording.svelte-i113ea{transform:scale(.96);border-color:var(--danger);background:#f8514926}.voice-btn.processing.svelte-i113ea{border-color:var(--player);opacity:.7}.mic-icon.svelte-i113ea{font-size:1.8rem;line-height:1;margin-top:14px}.btn-label.svelte-i113ea{position:absolute;bottom:-22px;font-size:.65rem;color:var(--text-muted);white-space:nowrap;pointer-events:none}.pulse-ring.svelte-i113ea{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:2px solid var(--danger);opacity:0;animation:svelte-i113ea-pulse-out 1.2s ease-out infinite;pointer-events:none}.ring2.svelte-i113ea{animation-delay:.4s}@keyframes svelte-i113ea-pulse-out{0%{top:-4px;right:-4px;bottom:-4px;left:-4px;opacity:.7}to{top:-20px;right:-20px;bottom:-20px;left:-20px;opacity:0}}.spinner.svelte-i113ea{position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--player);animation:svelte-i113ea-spin .7s linear infinite}@keyframes svelte-i113ea-spin{to{transform:rotate(360deg)}}.panel-backdrop.svelte-15lj9ka{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9}.panel.svelte-15lj9ka{position:absolute;bottom:110px;left:12px;right:12px;background:#161b22f7;border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 -4px 24px #00000080;animation:svelte-15lj9ka-slide-up .18s ease}.panel.is-enemy.svelte-15lj9ka{border-color:#f8514966}@keyframes svelte-15lj9ka-slide-up{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.close-btn.svelte-15lj9ka{position:absolute;top:10px;right:12px;font-size:.9rem;color:var(--text-muted);padding:4px 8px}.panel-header.svelte-15lj9ka{display:flex;align-items:center;gap:8px;margin-bottom:10px}.owner-dot.svelte-15lj9ka{width:10px;height:10px;border-radius:50%;background:var(--enemy);flex-shrink:0}.owner-dot.own.svelte-15lj9ka{background:var(--player)}.unit-name.svelte-15lj9ka{font-weight:800;font-size:1rem;letter-spacing:.05em;flex:1}.owner-label.svelte-15lj9ka{font-size:.72rem;color:var(--text-muted);font-weight:600}.description.svelte-15lj9ka{font-size:.8rem;color:var(--text-muted);margin-bottom:12px;line-height:1.4}.stat-row.svelte-15lj9ka{display:flex;align-items:center;gap:8px;margin-bottom:8px}.stat-label.svelte-15lj9ka{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;width:60px;flex-shrink:0}.stat-val.svelte-15lj9ka{font-size:.82rem;font-weight:600;font-family:var(--font-mono)}.stat-val.status.svelte-15lj9ka{font-family:inherit;color:var(--accent)}.hp-bar-wrap.svelte-15lj9ka{flex:1;height:8px;background:#ffffff14;border-radius:99px;overflow:hidden}.hp-bar.svelte-15lj9ka{height:100%;border-radius:99px;transition:width .3s}.badge-row.svelte-15lj9ka{margin-top:6px}.badge.svelte-15lj9ka{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:99px;font-size:.72rem;font-weight:600}.orange.svelte-15lj9ka{background:#ffa72626;color:var(--supply)}.purple.svelte-15lj9ka{background:#b39ddb26;color:#b39ddb}.section-label.svelte-15lj9ka{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin:12px 0 6px}.queue-item.svelte-15lj9ka{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:var(--radius);font-size:.8rem;color:var(--text-muted)}.queue-item.active.svelte-15lj9ka{background:#58a6ff14;color:var(--text)}.queue-icon.svelte-15lj9ka{font-size:.65rem;color:var(--player)}.queue-name.svelte-15lj9ka{flex:1;font-weight:600;font-family:var(--font-mono)}.queue-time.svelte-15lj9ka{font-family:var(--font-mono);font-size:.75rem;color:var(--supply)}.overlay.svelte-1rkl0l5.svelte-1rkl0l5{padding:8px 14px;background:#0d1117d9;border-top:1px solid var(--border);min-height:44px;display:flex;flex-direction:column;justify-content:center;gap:2px}.transcription.svelte-1rkl0l5.svelte-1rkl0l5{font-size:.75rem;color:var(--text-muted);font-style:italic;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback.svelte-1rkl0l5.svelte-1rkl0l5{font-size:.88rem;color:var(--text);font-weight:500;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.processing-dots.svelte-1rkl0l5.svelte-1rkl0l5{display:flex;gap:5px;align-items:center;justify-content:center;padding:8px 0}.processing-dots.svelte-1rkl0l5 span.svelte-1rkl0l5{width:7px;height:7px;border-radius:50%;background:var(--player);animation:svelte-1rkl0l5-bounce .9s ease-in-out infinite}.processing-dots.svelte-1rkl0l5 span.svelte-1rkl0l5:nth-child(2){animation-delay:.15s}.processing-dots.svelte-1rkl0l5 span.svelte-1rkl0l5:nth-child(3){animation-delay:.3s}@keyframes svelte-1rkl0l5-bounce{0%,80%,to{transform:scale(.7);opacity:.4}40%{transform:scale(1);opacity:1}}.game-layout.svelte-3ubry2{height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--map-bg)}.map-wrap.svelte-3ubry2{flex:1;position:relative;overflow:hidden;min-height:0}.bottom-panel.svelte-3ubry2{flex-shrink:0;display:flex;flex-direction:column;background:var(--bg);border-top:1px solid var(--border)}.voice-row.svelte-3ubry2{display:flex;align-items:center;justify-content:center;padding:16px 20px 24px;padding-bottom:max(24px,env(safe-area-inset-bottom,24px))}.modal-backdrop.svelte-3ubry2{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal.svelte-3ubry2{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:36px 28px;text-align:center;max-width:320px;width:90%;animation:svelte-3ubry2-pop-in .25s cubic-bezier(.34,1.56,.64,1)}@keyframes svelte-3ubry2-pop-in{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.modal-icon.svelte-3ubry2{font-size:3rem;margin-bottom:12px}.modal-title.svelte-3ubry2{font-size:1.6rem;font-weight:800;margin-bottom:10px;background:linear-gradient(135deg,var(--player),#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.modal-body.svelte-3ubry2{color:var(--text-muted);font-size:.9rem;line-height:1.5;margin-bottom:24px}.btn-back.svelte-3ubry2{background:var(--player);color:#fff;padding:13px 28px;border-radius:var(--radius-lg);font-size:.95rem;font-weight:600;width:100%;transition:filter .15s}.btn-back.svelte-3ubry2:hover{filter:brightness(1.1)}.btn-back.svelte-3ubry2:active{filter:brightness(.9)}
 
 
frontend/.svelte-kit/output/client/_app/immutable/chunks/BX82rj4I.js DELETED
@@ -1 +0,0 @@
1
- var E=Object.defineProperty;var I=(t,e,n)=>e in t?E(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var _=(t,e,n)=>I(t,typeof e!="symbol"?e+"":e,n);import{w as $,n as c,H as v,I as O,J as b,K as p,h as C,d as L,L as M,M as x,N,O as w,P,Q as R,R as j,S as B,T as H}from"./DQebRFVS.js";const u=new Set;let d;function A(){d={r:0,c:[],p:d}}function D(){d.r||$(d.c),d=d.p}function J(t,e){t&&t.i&&(u.delete(t),t.i(e))}function F(t,e,n,a){if(t&&t.o){if(u.has(t))return;u.add(t),d.c.push(()=>{u.delete(t),a&&(n&&t.d(1),a())}),t.o(e)}else a&&a()}function G(t){t&&t.c()}function W(t,e){t&&t.l(e)}function K(t,e,n){const{fragment:a,after_update:i}=t.$$;a&&a.m(e,n),w(()=>{const f=t.$$.on_mount.map(P).filter(v);t.$$.on_destroy?t.$$.on_destroy.push(...f):$(f),t.$$.on_mount=[]}),i.forEach(w)}function Q(t,e){const n=t.$$;n.fragment!==null&&(N(n.after_update),$(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function T(t,e){t.$$.dirty[0]===-1&&(B.push(t),H(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function X(t,e,n,a,i,f,l=null,S=[-1]){const o=b;x(t);const s=t.$$={fragment:null,ctx:[],props:f,update:c,not_equal:i,bound:p(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(o?o.$$.context:[])),callbacks:p(),dirty:S,skip_bound:!1,root:e.target||o.$$.root};l&&l(s.root);let h=!1;if(s.ctx=n?n(t,e.props||{},(r,g,...m)=>{const y=m.length?m[0]:g;return s.ctx&&i(s.ctx[r],s.ctx[r]=y)&&(!s.skip_bound&&s.bound[r]&&s.bound[r](y),h&&T(t,r)),g}):[],s.update(),h=!0,$(s.before_update),s.fragment=a?a(s.ctx):!1,e.target){if(e.hydrate){R();const r=C(e.target);s.fragment&&s.fragment.l(r),r.forEach(L)}else s.fragment&&s.fragment.c();e.intro&&J(t.$$.fragment),K(t,e.target,e.anchor),j(),M()}x(o)}class Y{constructor(){_(this,"$$");_(this,"$$set")}$destroy(){Q(this,1),this.$destroy=c}$on(e,n){if(!v(n))return c;const a=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return a.push(n),()=>{const i=a.indexOf(n);i!==-1&&a.splice(i,1)}}$set(e){this.$$set&&!O(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const U="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(U);export{Y as S,J as a,G as b,D as c,Q as d,W as e,A as g,X as i,K as m,F as t};
 
 
frontend/.svelte-kit/output/client/_app/immutable/chunks/BxRIPBY0.js DELETED
@@ -1 +0,0 @@
1
- import{d as H,w as d}from"./J0QSAnNz.js";function ct(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}const m=Object.create(null);m.open="0";m.close="1";m.ping="2";m.pong="3";m.message="4";m.upgrade="5";m.noop="6";const O=Object.create(null);Object.keys(m).forEach(n=>{O[m[n]]=n});const D={type:"error",data:"parser error"},ee=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",te=typeof ArrayBuffer=="function",se=n=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(n):n&&n.buffer instanceof ArrayBuffer,K=({type:n,data:e},t,s)=>ee&&e instanceof Blob?t?s(e):X(e,s):te&&(e instanceof ArrayBuffer||se(e))?t?s(e):X(new Blob([e]),s):s(m[n]+(e||"")),X=(n,e)=>{const t=new FileReader;return t.onload=function(){const s=t.result.split(",")[1];e("b"+(s||""))},t.readAsDataURL(n)};function Q(n){return n instanceof Uint8Array?n:n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let L;function de(n,e){if(ee&&n.data instanceof Blob)return n.data.arrayBuffer().then(Q).then(e);if(te&&(n.data instanceof ArrayBuffer||se(n.data)))return e(Q(n.data));K(n,!1,t=>{L||(L=new TextEncoder),e(L.encode(t))})}const j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let n=0;n<j.length;n++)A[j.charCodeAt(n)]=n;const ye=n=>{let e=n.length*.75,t=n.length,s,i=0,r,o,c,h;n[n.length-1]==="="&&(e--,n[n.length-2]==="="&&e--);const g=new ArrayBuffer(e),f=new Uint8Array(g);for(s=0;s<t;s+=4)r=A[n.charCodeAt(s)],o=A[n.charCodeAt(s+1)],c=A[n.charCodeAt(s+2)],h=A[n.charCodeAt(s+3)],f[i++]=r<<2|o>>4,f[i++]=(o&15)<<4|c>>2,f[i++]=(c&3)<<6|h&63;return g},me=typeof ArrayBuffer=="function",W=(n,e)=>{if(typeof n!="string")return{type:"message",data:ne(n,e)};const t=n.charAt(0);return t==="b"?{type:"message",data:ge(n.substring(1),e)}:O[t]?n.length>1?{type:O[t],data:n.substring(1)}:{type:O[t]}:D},ge=(n,e)=>{if(me){const t=ye(n);return ne(t,e)}else return{base64:!0,data:n}},ne=(n,e)=>{switch(e){case"blob":return n instanceof Blob?n:new Blob([n]);case"arraybuffer":default:return n instanceof ArrayBuffer?n:n.buffer}},ie="",_e=(n,e)=>{const t=n.length,s=new Array(t);let i=0;n.forEach((r,o)=>{K(r,!1,c=>{s[o]=c,++i===t&&e(s.join(ie))})})},be=(n,e)=>{const t=n.split(ie),s=[];for(let i=0;i<t.length;i++){const r=W(t[i],e);if(s.push(r),r.type==="error")break}return s};function we(){return new TransformStream({transform(n,e){de(n,t=>{const s=t.length;let i;if(s<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,s);else if(s<65536){i=new Uint8Array(3);const r=new DataView(i.buffer);r.setUint8(0,126),r.setUint16(1,s)}else{i=new Uint8Array(9);const r=new DataView(i.buffer);r.setUint8(0,127),r.setBigUint64(1,BigInt(s))}n.data&&typeof n.data!="string"&&(i[0]|=128),e.enqueue(i),e.enqueue(t)})}})}let P;function T(n){return n.reduce((e,t)=>e+t.length,0)}function R(n,e){if(n[0].length===e)return n.shift();const t=new Uint8Array(e);let s=0;for(let i=0;i<e;i++)t[i]=n[0][s++],s===n[0].length&&(n.shift(),s=0);return n.length&&s<n[0].length&&(n[0]=n[0].slice(s)),t}function ve(n,e){P||(P=new TextDecoder);const t=[];let s=0,i=-1,r=!1;return new TransformStream({transform(o,c){for(t.push(o);;){if(s===0){if(T(t)<1)break;const h=R(t,1);r=(h[0]&128)===128,i=h[0]&127,i<126?s=3:i===126?s=1:s=2}else if(s===1){if(T(t)<2)break;const h=R(t,2);i=new DataView(h.buffer,h.byteOffset,h.length).getUint16(0),s=3}else if(s===2){if(T(t)<8)break;const h=R(t,8),g=new DataView(h.buffer,h.byteOffset,h.length),f=g.getUint32(0);if(f>Math.pow(2,21)-1){c.enqueue(D);break}i=f*Math.pow(2,32)+g.getUint32(4),s=3}else{if(T(t)<i)break;const h=R(t,i);c.enqueue(W(r?h:P.decode(h),e)),s=0}if(i===0||i>n){c.enqueue(D);break}}}})}const re=4;function u(n){if(n)return Ee(n)}function Ee(n){for(var e in u.prototype)n[e]=u.prototype[e];return n}u.prototype.on=u.prototype.addEventListener=function(n,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+n]=this._callbacks["$"+n]||[]).push(e),this};u.prototype.once=function(n,e){function t(){this.off(n,t),e.apply(this,arguments)}return t.fn=e,this.on(n,t),this};u.prototype.off=u.prototype.removeListener=u.prototype.removeAllListeners=u.prototype.removeEventListener=function(n,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+n];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+n],this;for(var s,i=0;i<t.length;i++)if(s=t[i],s===e||s.fn===e){t.splice(i,1);break}return t.length===0&&delete this._callbacks["$"+n],this};u.prototype.emit=function(n){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks["$"+n],s=1;s<arguments.length;s++)e[s-1]=arguments[s];if(t){t=t.slice(0);for(var s=0,i=t.length;s<i;++s)t[s].apply(this,e)}return this};u.prototype.emitReserved=u.prototype.emit;u.prototype.listeners=function(n){return this._callbacks=this._callbacks||{},this._callbacks["$"+n]||[]};u.prototype.hasListeners=function(n){return!!this.listeners(n).length};const x=typeof Promise=="function"&&typeof Promise.resolve=="function"?e=>Promise.resolve().then(e):(e,t)=>t(e,0),l=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),ke="arraybuffer";function oe(n,...e){return e.reduce((t,s)=>(n.hasOwnProperty(s)&&(t[s]=n[s]),t),{})}const Ae=l.setTimeout,Te=l.clearTimeout;function N(n,e){e.useNativeTimers?(n.setTimeoutFn=Ae.bind(l),n.clearTimeoutFn=Te.bind(l)):(n.setTimeoutFn=l.setTimeout.bind(l),n.clearTimeoutFn=l.clearTimeout.bind(l))}const Re=1.33;function Oe(n){return typeof n=="string"?Se(n):Math.ceil((n.byteLength||n.size)*Re)}function Se(n){let e=0,t=0;for(let s=0,i=n.length;s<i;s++)e=n.charCodeAt(s),e<128?t+=1:e<2048?t+=2:e<55296||e>=57344?t+=3:(s++,t+=4);return t}function ae(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function Be(n){let e="";for(let t in n)n.hasOwnProperty(t)&&(e.length&&(e+="&"),e+=encodeURIComponent(t)+"="+encodeURIComponent(n[t]));return e}function Ce(n){let e={},t=n.split("&");for(let s=0,i=t.length;s<i;s++){let r=t[s].split("=");e[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return e}class xe extends Error{constructor(e,t,s){super(e),this.description=t,this.context=s,this.type="TransportError"}}class Y extends u{constructor(e){super(),this.writable=!1,N(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,s){return super.emitReserved("error",new xe(e,t,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(e){this.readyState==="open"&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=W(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return e.indexOf(":")===-1?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(e){const t=Be(e);return t.length?"?"+t:""}}class Ne extends Y{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let s=0;this._polling&&(s++,this.once("pollComplete",function(){--s||t()})),this.writable||(s++,this.once("drain",function(){--s||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){const t=s=>{if(this.readyState==="opening"&&s.type==="open"&&this.onOpen(),s.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(s)};be(e,this.socket.binaryType).forEach(t),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};this.readyState==="open"?e():this.once("open",e)}write(e){this.writable=!1,_e(e,t=>{this.doWrite(t,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return this.opts.timestampRequests!==!1&&(t[this.opts.timestampParam]=ae()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.createUri(e,t)}}let ce=!1;try{ce=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const Le=ce;function Pe(){}class qe extends Ne{constructor(e){if(super(e),typeof location<"u"){const t=location.protocol==="https:";let s=location.port;s||(s=t?"443":"80"),this.xd=typeof location<"u"&&e.hostname!==location.hostname||s!==e.port}}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",(i,r)=>{this.onError("xhr post error",i,r)})}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(t,s)=>{this.onError("xhr poll error",t,s)}),this.pollXhr=e}}class y extends u{constructor(e,t,s){super(),this.createRequest=e,N(this,s),this._opts=s,this._method=s.method||"GET",this._uri=t,this._data=s.data!==void 0?s.data:null,this._create()}_create(){var e;const t=oe(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const s=this._xhr=this.createRequest(t);try{s.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){s.setDisableHeaderCheck&&s.setDisableHeaderCheck(!0);for(let i in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(i)&&s.setRequestHeader(i,this._opts.extraHeaders[i])}}catch{}if(this._method==="POST")try{s.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{s.setRequestHeader("Accept","*/*")}catch{}(e=this._opts.cookieJar)===null||e===void 0||e.addCookies(s),"withCredentials"in s&&(s.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(s.timeout=this._opts.requestTimeout),s.onreadystatechange=()=>{var i;s.readyState===3&&((i=this._opts.cookieJar)===null||i===void 0||i.parseCookies(s.getResponseHeader("set-cookie"))),s.readyState===4&&(s.status===200||s.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof s.status=="number"?s.status:0)},0))},s.send(this._data)}catch(i){this.setTimeoutFn(()=>{this._onError(i)},0);return}typeof document<"u"&&(this._index=y.requestsCount++,y.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=Pe,e)try{this._xhr.abort()}catch{}typeof document<"u"&&delete y.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;e!==null&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}y.requestsCount=0;y.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",G);else if(typeof addEventListener=="function"){const n="onpagehide"in l?"pagehide":"unload";addEventListener(n,G,!1)}}function G(){for(let n in y.requests)y.requests.hasOwnProperty(n)&&y.requests[n].abort()}const De=function(){const n=he({xdomain:!1});return n&&n.responseType!==null}();class Ie extends qe{constructor(e){super(e);const t=e&&e.forceBase64;this.supportsBinary=De&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new y(he,this.uri(),e)}}function he(n){const e=n.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!e||Le))return new XMLHttpRequest}catch{}if(!e)try{return new l[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const ue=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class Ue extends Y{get name(){return"websocket"}doOpen(){const e=this.uri(),t=this.opts.protocols,s=ue?{}:oe(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,s)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],i=t===e.length-1;K(s,this.supportsBinary,r=>{try{this.doWrite(s,r)}catch{}i&&x(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=ae()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}}const q=l.WebSocket||l.MozWebSocket;class Fe extends Ue{createSocket(e,t,s){return ue?new q(e,t,s):t?new q(e,t):new q(e)}doWrite(e,t){this.ws.send(t)}}class Ve extends Y{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{const t=ve(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=e.readable.pipeThrough(t).getReader(),i=we();i.readable.pipeTo(e.writable),this._writer=i.writable.getWriter();const r=()=>{s.read().then(({done:c,value:h})=>{c||(this.onPacket(h),r())}).catch(c=>{})};r();const o={type:"open"};this.query.sid&&(o.data=`{"sid":"${this.query.sid}"}`),this._writer.write(o).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],i=t===e.length-1;this._writer.write(s).then(()=>{i&&x(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;(e=this._transport)===null||e===void 0||e.close()}}const Me={websocket:Fe,webtransport:Ve,polling:Ie},He=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ke=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function I(n){if(n.length>8e3)throw"URI too long";const e=n,t=n.indexOf("["),s=n.indexOf("]");t!=-1&&s!=-1&&(n=n.substring(0,t)+n.substring(t,s).replace(/:/g,";")+n.substring(s,n.length));let i=He.exec(n||""),r={},o=14;for(;o--;)r[Ke[o]]=i[o]||"";return t!=-1&&s!=-1&&(r.source=e,r.host=r.host.substring(1,r.host.length-1).replace(/;/g,":"),r.authority=r.authority.replace("[","").replace("]","").replace(/;/g,":"),r.ipv6uri=!0),r.pathNames=We(r,r.path),r.queryKey=Ye(r,r.query),r}function We(n,e){const t=/\/{2,9}/g,s=e.replace(t,"/").split("/");return(e.slice(0,1)=="/"||e.length===0)&&s.splice(0,1),e.slice(-1)=="/"&&s.splice(s.length-1,1),s}function Ye(n,e){const t={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(s,i,r){i&&(t[i]=r)}),t}const U=typeof addEventListener=="function"&&typeof removeEventListener=="function",S=[];U&&addEventListener("offline",()=>{S.forEach(n=>n())},!1);class w extends u{constructor(e,t){if(super(),this.binaryType=ke,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&typeof e=="object"&&(t=e,e=null),e){const s=I(e);t.hostname=s.host,t.secure=s.protocol==="https"||s.protocol==="wss",t.port=s.port,s.query&&(t.query=s.query)}else t.host&&(t.hostname=I(t.host).host);N(this,t),this.secure=t.secure!=null?t.secure:typeof location<"u"&&location.protocol==="https:",t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=t.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(s=>{const i=s.prototype.name;this.transports.push(i),this._transportsByName[i]=s}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=Ce(this.opts.query)),U&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},S.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=re,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](s)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const e=this.opts.rememberUpgrade&&w.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",t=>this._onClose("transport close",t))}onOpen(){this.readyState="open",w.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(e){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data);break}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let s=0;s<this.writeBuffer.length;s++){const i=this.writeBuffer[s].data;if(i&&(t+=Oe(i)),s>0&&t>this._maxPayload)return this.writeBuffer.slice(0,s);t+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,x(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,t,s){return this._sendPacket("message",e,t,s),this}send(e,t,s){return this._sendPacket("message",e,t,s),this}_sendPacket(e,t,s,i){if(typeof t=="function"&&(i=t,t=void 0),typeof s=="function"&&(i=s,s=null),this.readyState==="closing"||this.readyState==="closed")return;s=s||{},s.compress=s.compress!==!1;const r={type:e,data:t,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?s():e()}):this.upgrading?s():e()),this}_onError(e){if(w.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),U&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const s=S.indexOf(this._offlineEventListener);s!==-1&&S.splice(s,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}}w.protocol=re;class ze extends w{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),s=!1;w.priorWebsocketSuccess=!1;const i=()=>{s||(t.send([{type:"ping",data:"probe"}]),t.once("packet",b=>{if(!s)if(b.type==="pong"&&b.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;w.priorWebsocketSuccess=t.name==="websocket",this.transport.pause(()=>{s||this.readyState!=="closed"&&(f(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{const E=new Error("probe error");E.transport=t.name,this.emitReserved("upgradeError",E)}}))};function r(){s||(s=!0,f(),t.close(),t=null)}const o=b=>{const E=new Error("probe error: "+b);E.transport=t.name,r(),this.emitReserved("upgradeError",E)};function c(){o("transport closed")}function h(){o("socket closed")}function g(b){t&&b.name!==t.name&&r()}const f=()=>{t.removeListener("open",i),t.removeListener("error",o),t.removeListener("close",c),this.off("close",h),this.off("upgrading",g)};t.once("open",i),t.once("error",o),t.once("close",c),this.once("close",h),this.once("upgrading",g),this._upgrades.indexOf("webtransport")!==-1&&e!=="webtransport"?this.setTimeoutFn(()=>{s||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const t=[];for(let s=0;s<e.length;s++)~this.transports.indexOf(e[s])&&t.push(e[s]);return t}}let $e=class extends ze{constructor(e,t={}){const s=typeof e=="object"?e:t;(!s.transports||s.transports&&typeof s.transports[0]=="string")&&(s.transports=(s.transports||["polling","websocket","webtransport"]).map(i=>Me[i]).filter(i=>!!i)),super(e,s)}};function Je(n,e="",t){let s=n;t=t||typeof location<"u"&&location,n==null&&(n=t.protocol+"//"+t.host),typeof n=="string"&&(n.charAt(0)==="/"&&(n.charAt(1)==="/"?n=t.protocol+n:n=t.host+n),/^(https?|wss?):\/\//.test(n)||(typeof t<"u"?n=t.protocol+"//"+n:n="https://"+n),s=I(n)),s.port||(/^(http|ws)$/.test(s.protocol)?s.port="80":/^(http|ws)s$/.test(s.protocol)&&(s.port="443")),s.path=s.path||"/";const r=s.host.indexOf(":")!==-1?"["+s.host+"]":s.host;return s.id=s.protocol+"://"+r+":"+s.port+e,s.href=s.protocol+"://"+r+(t&&t.port===s.port?"":":"+s.port),s}const Xe=typeof ArrayBuffer=="function",Qe=n=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(n):n.buffer instanceof ArrayBuffer,fe=Object.prototype.toString,je=typeof Blob=="function"||typeof Blob<"u"&&fe.call(Blob)==="[object BlobConstructor]",Ge=typeof File=="function"||typeof File<"u"&&fe.call(File)==="[object FileConstructor]";function z(n){return Xe&&(n instanceof ArrayBuffer||Qe(n))||je&&n instanceof Blob||Ge&&n instanceof File}function B(n,e){if(!n||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0,s=n.length;t<s;t++)if(B(n[t]))return!0;return!1}if(z(n))return!0;if(n.toJSON&&typeof n.toJSON=="function"&&arguments.length===1)return B(n.toJSON(),!0);for(const t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&B(n[t]))return!0;return!1}function Ze(n){const e=[],t=n.data,s=n;return s.data=F(t,e),s.attachments=e.length,{packet:s,buffers:e}}function F(n,e){if(!n)return n;if(z(n)){const t={_placeholder:!0,num:e.length};return e.push(n),t}else if(Array.isArray(n)){const t=new Array(n.length);for(let s=0;s<n.length;s++)t[s]=F(n[s],e);return t}else if(typeof n=="object"&&!(n instanceof Date)){const t={};for(const s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=F(n[s],e));return t}return n}function et(n,e){return n.data=V(n.data,e),delete n.attachments,n}function V(n,e){if(!n)return n;if(n&&n._placeholder===!0){if(typeof n.num=="number"&&n.num>=0&&n.num<e.length)return e[n.num];throw new Error("illegal attachments")}else if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=V(n[t],e);else if(typeof n=="object")for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=V(n[t],e));return n}const tt=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var a;(function(n){n[n.CONNECT=0]="CONNECT",n[n.DISCONNECT=1]="DISCONNECT",n[n.EVENT=2]="EVENT",n[n.ACK=3]="ACK",n[n.CONNECT_ERROR=4]="CONNECT_ERROR",n[n.BINARY_EVENT=5]="BINARY_EVENT",n[n.BINARY_ACK=6]="BINARY_ACK"})(a||(a={}));class st{constructor(e){this.replacer=e}encode(e){return(e.type===a.EVENT||e.type===a.ACK)&&B(e)?this.encodeAsBinary({type:e.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=""+e.type;return(e.type===a.BINARY_EVENT||e.type===a.BINARY_ACK)&&(t+=e.attachments+"-"),e.nsp&&e.nsp!=="/"&&(t+=e.nsp+","),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Ze(e),s=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(s),i}}class $ extends u{constructor(e){super(),this.reviver=e}add(e){let t;if(typeof e=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const s=t.type===a.BINARY_EVENT;s||t.type===a.BINARY_ACK?(t.type=s?a.EVENT:a.ACK,this.reconstructor=new nt(t),t.attachments===0&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else if(z(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+e)}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(a[s.type]===void 0)throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const r=t+1;for(;e.charAt(++t)!=="-"&&t!=e.length;);const o=e.substring(r,t);if(o!=Number(o)||e.charAt(t)!=="-")throw new Error("Illegal attachments");s.attachments=Number(o)}if(e.charAt(t+1)==="/"){const r=t+1;for(;++t&&!(e.charAt(t)===","||t===e.length););s.nsp=e.substring(r,t)}else s.nsp="/";const i=e.charAt(t+1);if(i!==""&&Number(i)==i){const r=t+1;for(;++t;){const o=e.charAt(t);if(o==null||Number(o)!=o){--t;break}if(t===e.length)break}s.id=Number(e.substring(r,t+1))}if(e.charAt(++t)){const r=this.tryParse(e.substr(t));if($.isPayloadValid(s.type,r))s.data=r;else throw new Error("invalid payload")}return s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case a.CONNECT:return Z(t);case a.DISCONNECT:return t===void 0;case a.CONNECT_ERROR:return typeof t=="string"||Z(t);case a.EVENT:case a.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]=="number"||typeof t[0]=="string"&&tt.indexOf(t[0])===-1);case a.ACK:case a.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class nt{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const t=et(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function Z(n){return Object.prototype.toString.call(n)==="[object Object]"}const it=Object.freeze(Object.defineProperty({__proto__:null,Decoder:$,Encoder:st,get PacketType(){return a}},Symbol.toStringTag,{value:"Module"}));function p(n,e,t){return n.on(e,t),function(){n.off(e,t)}}const rt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class le extends u{constructor(e,t,s){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,s&&s.auth&&(this.auth=s.auth),this._opts=Object.assign({},s),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[p(e,"open",this.onopen.bind(this)),p(e,"packet",this.onpacket.bind(this)),p(e,"error",this.onerror.bind(this)),p(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var s,i,r;if(rt.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const o={type:a.EVENT,data:t};if(o.options={},o.options.compress=this.flags.compress!==!1,typeof t[t.length-1]=="function"){const f=this.ids++,b=t.pop();this._registerAckCallback(f,b),o.id=f}const c=(i=(s=this.io.engine)===null||s===void 0?void 0:s.transport)===null||i===void 0?void 0:i.writable,h=this.connected&&!(!((r=this.io.engine)===null||r===void 0)&&r._hasPingExpired());return this.flags.volatile&&!c||(h?(this.notifyOutgoingListeners(o),this.packet(o)):this.sendBuffer.push(o)),this.flags={},this}_registerAckCallback(e,t){var s;const i=(s=this.flags.timeout)!==null&&s!==void 0?s:this._opts.ackTimeout;if(i===void 0){this.acks[e]=t;return}const r=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let c=0;c<this.sendBuffer.length;c++)this.sendBuffer[c].id===e&&this.sendBuffer.splice(c,1);t.call(this,new Error("operation has timed out"))},i),o=(...c)=>{this.io.clearTimeoutFn(r),t.apply(this,c)};o.withError=!0,this.acks[e]=o}emitWithAck(e,...t){return new Promise((s,i)=>{const r=(o,c)=>o?i(o):s(c);r.withError=!0,t.push(r),this.emit(e,...t)})}_addToQueue(e){let t;typeof e[e.length-1]=="function"&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((i,...r)=>(this._queue[0],i!==null?s.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(i)):(this._queue.shift(),t&&t(null,...r)),s.pending=!1,this._drainQueue())),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||this._queue.length===0)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){typeof this.auth=="function"?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:a.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(s=>String(s.id)===e)){const s=this.acks[e];delete this.acks[e],s.withError&&s.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case a.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case a.EVENT:case a.BINARY_EVENT:this.onevent(e);break;case a.ACK:case a.BINARY_ACK:this.onack(e);break;case a.DISCONNECT:this.ondisconnect();break;case a.CONNECT_ERROR:this.destroy();const s=new Error(e.data.message);s.data=e.data.data,this.emitReserved("connect_error",s);break}}onevent(e){const t=e.data||[];e.id!=null&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const s of t)s.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&typeof e[e.length-1]=="string"&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...i){s||(s=!0,t.packet({type:a.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];typeof t=="function"&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:a.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const s of t)s.apply(this,e.data)}}}function v(n){n=n||{},this.ms=n.min||100,this.max=n.max||1e4,this.factor=n.factor||2,this.jitter=n.jitter>0&&n.jitter<=1?n.jitter:0,this.attempts=0}v.prototype.duration=function(){var n=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),t=Math.floor(e*this.jitter*n);n=Math.floor(e*10)&1?n+t:n-t}return Math.min(n,this.max)|0};v.prototype.reset=function(){this.attempts=0};v.prototype.setMin=function(n){this.ms=n};v.prototype.setMax=function(n){this.max=n};v.prototype.setJitter=function(n){this.jitter=n};class M extends u{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&typeof e=="object"&&(t=e,e=void 0),t=t||{},t.path=t.path||"/socket.io",this.opts=t,N(this,t),this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor((s=t.randomizationFactor)!==null&&s!==void 0?s:.5),this.backoff=new v({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||it;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=t.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return e===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return e===void 0?this._reconnectionDelay:(this._reconnectionDelay=e,(t=this.backoff)===null||t===void 0||t.setMin(e),this)}randomizationFactor(e){var t;return e===void 0?this._randomizationFactor:(this._randomizationFactor=e,(t=this.backoff)===null||t===void 0||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return e===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,(t=this.backoff)===null||t===void 0||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new $e(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const i=p(t,"open",function(){s.onopen(),e&&e()}),r=c=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",c),e?e(c):this.maybeReconnectOnOpen()},o=p(t,"error",r);if(this._timeout!==!1){const c=this._timeout,h=this.setTimeoutFn(()=>{i(),r(new Error("timeout")),t.close()},c);this.opts.autoUnref&&h.unref(),this.subs.push(()=>{this.clearTimeoutFn(h)})}return this.subs.push(i),this.subs.push(o),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(p(e,"ping",this.onping.bind(this)),p(e,"data",this.ondata.bind(this)),p(e,"error",this.onerror.bind(this)),p(e,"close",this.onclose.bind(this)),p(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(t){this.onclose("parse error",t)}}ondecoded(e){x(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new le(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const s of t)if(this.nsps[s].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let s=0;s<t.length;s++)this.engine.write(t[s],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var s;this.cleanup(),(s=this.engine)===null||s===void 0||s.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),!e.skipReconnect&&e.open(i=>{i?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",i)):e.onreconnect()}))},t);this.opts.autoUnref&&s.unref(),this.subs.push(()=>{this.clearTimeoutFn(s)})}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const k={};function C(n,e){typeof n=="object"&&(e=n,n=void 0),e=e||{};const t=Je(n,e.path||"/socket.io"),s=t.source,i=t.id,r=t.path,o=k[i]&&r in k[i].nsps,c=e.forceNew||e["force new connection"]||e.multiplex===!1||o;let h;return c?h=new M(s,e):(k[i]||(k[i]=new M(s,e)),h=k[i]),t.query&&!e.query&&(e.query=t.queryKey),h.socket(t.path,e)}Object.assign(C,{Manager:M,Socket:le,io:C,connect:C});let _=null;function ot(){return typeof window>"u"?"http://localhost:8000":window.location.origin}function ut(){return _||(_=C(ot(),{transports:["websocket","polling"],reconnectionAttempts:5,reconnectionDelay:1500}),_.on("connect",()=>console.log("[socket] connected",_==null?void 0:_.id)),_.on("disconnect",n=>console.log("[socket] disconnected",n)),_.on("connect_error",n=>console.error("[socket] error",n.message))),_}const pe=d(null),ft=d(""),lt=d(null),pt=d(null),J=d(null),dt=d(null),yt=d(null),mt=d(null),gt=d("idle"),_t=d(""),bt=d(""),wt=H([J,pe],([n,e])=>!n||!e?null:n.players[e]??null),vt=H([J,pe],([n,e])=>!n||!e?null:Object.values(n.players).find(t=>t.player_id!==e)??null);H(J,n=>n?Object.values(n.players).flatMap(e=>Object.values(e.units).map(t=>({unit:t,isOwn:!1}))):[]);export{lt as a,J as b,yt as c,vt as d,ct as e,wt as f,ut as g,_t as h,bt as l,pe as m,ft as p,pt as r,mt as s,gt as v,dt as w};
 
 
frontend/.svelte-kit/output/client/_app/immutable/chunks/DQebRFVS.js DELETED
@@ -1 +0,0 @@
1
- function C(){}function P(n,t){for(const e in t)n[e]=t[e];return n}function B(n){return n()}function K(){return Object.create(null)}function D(n){n.forEach(B)}function Q(n){return typeof n=="function"}function R(n,t){return n!=n?t==t:n!==t||n&&typeof n=="object"||typeof n=="function"}function V(n){return Object.keys(n).length===0}function L(n,...t){if(n==null){for(const i of t)i(void 0);return C}const e=n.subscribe(...t);return e.unsubscribe?()=>e.unsubscribe():e}function X(n,t,e){n.$$.on_destroy.push(L(t,e))}function Y(n,t,e,i){if(n){const l=k(n,t,e,i);return n[0](l)}}function k(n,t,e,i){return n[1]&&i?P(e.ctx.slice(),n[1](i(t))):e.ctx}function Z(n,t,e,i){return n[2],t.dirty}function $(n,t,e,i,l,u){if(l){const c=k(t,e,i,u);n.p(c,l)}}function nn(n){if(n.ctx.length>32){const t=[],e=n.ctx.length/32;for(let i=0;i<e;i++)t[i]=-1;return t}return-1}let m=!1;function tn(){m=!0}function en(){m=!1}function O(n,t,e,i){for(;n<t;){const l=n+(t-n>>1);e(l)<=i?n=l+1:t=l}return n}function T(n){if(n.hydrate_init)return;n.hydrate_init=!0;let t=n.childNodes;if(n.nodeName==="HEAD"){const r=[];for(let o=0;o<t.length;o++){const a=t[o];a.claim_order!==void 0&&r.push(a)}t=r}const e=new Int32Array(t.length+1),i=new Int32Array(t.length);e[0]=-1;let l=0;for(let r=0;r<t.length;r++){const o=t[r].claim_order,a=(l>0&&t[e[l]].claim_order<=o?l+1:O(1,l,S=>t[e[S]].claim_order,o))-1;i[r]=e[a]+1;const v=a+1;e[v]=r,l=Math.max(v,l)}const u=[],c=[];let s=t.length-1;for(let r=e[l]+1;r!=0;r=i[r-1]){for(u.push(t[r-1]);s>=r;s--)c.push(t[s]);s--}for(;s>=0;s--)c.push(t[s]);u.reverse(),c.sort((r,o)=>r.claim_order-o.claim_order);for(let r=0,o=0;r<c.length;r++){for(;o<u.length&&c[r].claim_order>=u[o].claim_order;)o++;const a=o<u.length?u[o]:null;n.insertBefore(c[r],a)}}function q(n,t){if(m){for(T(n),(n.actual_end_child===void 0||n.actual_end_child!==null&&n.actual_end_child.parentNode!==n)&&(n.actual_end_child=n.firstChild);n.actual_end_child!==null&&n.actual_end_child.claim_order===void 0;)n.actual_end_child=n.actual_end_child.nextSibling;t!==n.actual_end_child?(t.claim_order!==void 0||t.parentNode!==n)&&n.insertBefore(t,n.actual_end_child):n.actual_end_child=t.nextSibling}else(t.parentNode!==n||t.nextSibling!==null)&&n.appendChild(t)}function cn(n,t,e){m&&!e?q(n,t):(t.parentNode!==n||t.nextSibling!=e)&&n.insertBefore(t,e||null)}function ln(n){n.parentNode&&n.parentNode.removeChild(n)}function rn(n,t){for(let e=0;e<n.length;e+=1)n[e]&&n[e].d(t)}function H(n){return document.createElement(n)}function I(n){return document.createElementNS("http://www.w3.org/2000/svg",n)}function x(n){return document.createTextNode(n)}function sn(){return x(" ")}function un(){return x("")}function on(n,t,e,i){return n.addEventListener(t,e,i),()=>n.removeEventListener(t,e,i)}function an(n,t,e){e==null?n.removeAttribute(t):n.getAttribute(t)!==e&&n.setAttribute(t,e)}function fn(n){return n.dataset.svelteH}function _n(n){return Array.from(n.childNodes)}function M(n){n.claim_info===void 0&&(n.claim_info={last_index:0,total_claimed:0})}function N(n,t,e,i,l=!1){M(n);const u=(()=>{for(let c=n.claim_info.last_index;c<n.length;c++){const s=n[c];if(t(s)){const r=e(s);return r===void 0?n.splice(c,1):n[c]=r,l||(n.claim_info.last_index=c),s}}for(let c=n.claim_info.last_index-1;c>=0;c--){const s=n[c];if(t(s)){const r=e(s);return r===void 0?n.splice(c,1):n[c]=r,l?r===void 0&&n.claim_info.last_index--:n.claim_info.last_index=c,s}}return i()})();return u.claim_order=n.claim_info.total_claimed,n.claim_info.total_claimed+=1,u}function A(n,t,e,i){return N(n,l=>l.nodeName===t,l=>{const u=[];for(let c=0;c<l.attributes.length;c++){const s=l.attributes[c];e[s.name]||u.push(s.name)}u.forEach(c=>l.removeAttribute(c))},()=>i(t))}function dn(n,t,e){return A(n,t,e,H)}function hn(n,t,e){return A(n,t,e,I)}function z(n,t){return N(n,e=>e.nodeType===3,e=>{const i=""+t;if(e.data.startsWith(i)){if(e.data.length!==i.length)return e.splitText(i.length)}else e.data=i},()=>x(t),!0)}function mn(n){return z(n," ")}function pn(n,t){t=""+t,n.data!==t&&(n.data=t)}function bn(n,t){n.value=t??""}function yn(n,t,e,i){e==null?n.style.removeProperty(t):n.style.setProperty(t,e,"")}function gn(n,t,e){n.classList.toggle(t,!!e)}function F(n,t,{bubbles:e=!1,cancelable:i=!1}={}){return new CustomEvent(n,{detail:t,bubbles:e,cancelable:i})}function xn(n,t){return new n(t)}let h;function b(n){h=n}function p(){if(!h)throw new Error("Function called outside component initialization");return h}function vn(n){p().$$.on_mount.push(n)}function wn(n){p().$$.after_update.push(n)}function En(n){p().$$.on_destroy.push(n)}function kn(){const n=p();return(t,e,{cancelable:i=!1}={})=>{const l=n.$$.callbacks[t];if(l){const u=F(t,e,{cancelable:i});return l.slice().forEach(c=>{c.call(n,u)}),!u.defaultPrevented}return!0}}const d=[],w=[];let _=[];const E=[],j=Promise.resolve();let g=!1;function U(){g||(g=!0,j.then(G))}function Nn(){return U(),j}function W(n){_.push(n)}const y=new Set;let f=0;function G(){if(f!==0)return;const n=h;do{try{for(;f<d.length;){const t=d[f];f++,b(t),J(t.$$)}}catch(t){throw d.length=0,f=0,t}for(b(null),d.length=0,f=0;w.length;)w.pop()();for(let t=0;t<_.length;t+=1){const e=_[t];y.has(e)||(y.add(e),e())}_.length=0}while(d.length);for(;E.length;)E.pop()();g=!1,y.clear(),b(n)}function J(n){if(n.fragment!==null){n.update(),D(n.before_update);const t=n.dirty;n.dirty=[-1],n.fragment&&n.fragment.p(n.ctx,t),n.after_update.forEach(W)}}function An(n){const t=[],e=[];_.forEach(i=>n.indexOf(i)===-1?t.push(i):e.push(i)),e.forEach(i=>i()),_=t}export{un as A,gn as B,wn as C,Nn as D,xn as E,yn as F,w as G,Q as H,V as I,h as J,K,G as L,b as M,An as N,W as O,B as P,tn as Q,en as R,d as S,U as T,hn as U,I as V,kn as W,L as X,Z as a,pn as b,Y as c,ln as d,q as e,dn as f,nn as g,_n as h,cn as i,z as j,mn as k,H as l,sn as m,C as n,X as o,an as p,fn as q,vn as r,R as s,x as t,$ as u,En as v,D as w,bn as x,on as y,rn as z};
 
 
frontend/.svelte-kit/output/client/_app/immutable/chunks/J0QSAnNz.js DELETED
@@ -1 +0,0 @@
1
- var gt=Object.defineProperty;var mt=(e,t,n)=>t in e?gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var A=(e,t,n)=>mt(e,typeof t!="symbol"?t+"":t,n);import{n as K,s as _t,X as wt,w as vt,H as yt,r as De,D as te}from"./DQebRFVS.js";class Se{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Re{constructor(t,n){this.status=t,this.location=n}}class xe extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function bt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function kt(e){return e.split("%25").map(decodeURI).join("%25")}function Et(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ge({href:e}){return e.split("#")[0]}function St(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function Rt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const xt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&M.delete(Le(e)),xt(e,t));const M=new Map;function Lt(e,t){const n=Le(e,t),r=document.querySelector(n);if(r!=null&&r.textContent){r.remove();let{body:a,...i}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&M.set(n,{body:a,init:i,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=Rt(a)),Promise.resolve(new Response(a,i))}return window.fetch(e,t)}function At(e,t,n){if(M.size>0){const r=Le(e,n),a=M.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(a.body,a.init);M.delete(r)}}return window.fetch(t,n)}function Le(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${St(...a)}"]`}return r}const Ut=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Tt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${It(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return me(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return me(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const h=Ut.exec(l),[,u,w,f,d]=h;return t.push({name:f,matcher:d,optional:!!u,rest:!!w,chained:w?c===1&&o[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return me(l)}).join("")}).join("")}/?$`),params:t}}function $t(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function It(e){return e.slice(1).split("/").filter($t)}function Pt(e,t,n){const r={},a=e.slice(1),i=a.filter(s=>s!==void 0);let o=0;for(let s=0;s<t.length;s+=1){const l=t[s];let c=a[s-o];if(l.chained&&l.rest&&o&&(c=a.slice(s-o,s+1).filter(h=>h).join("/"),o=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){r[l.name]=c;const h=t[s+1],u=a[s+1];h&&!h.rest&&h.optional&&u&&l.chained&&(o=0),!h&&!u&&Object.keys(r).length===i.length&&(o=0);continue}if(l.optional&&l.chained){o++;continue}return}if(!o)return r}function me(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ot({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([s,[l,c,h]])=>{const{pattern:u,params:w}=Tt(s),f={id:s,exec:d=>{const m=u.exec(d);if(m)return Pt(m,w,r)},errors:[1,...h||[]].map(d=>e[d]),layouts:[0,...c||[]].map(o),leaf:i(l)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function i(s){const l=s<0;return l&&(s=~s),[l,e[s]]}function o(s){return s===void 0?s:[a.has(s),e[s]]}}function He(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function qe(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const D=[];function Ct(e,t){return{subscribe:fe(e,t).subscribe}}function fe(e,t=K){let n;const r=new Set;function a(s){if(_t(e,s)&&(e=s,n)){const l=!D.length;for(const c of r)c[1](),D.push(c,e);if(l){for(let c=0;c<D.length;c+=2)D[c][0](D[c+1]);D.length=0}}}function i(s){a(s(e))}function o(s,l=K){const c=[s,l];return r.add(c),r.size===1&&(n=t(a,i)||K),s(e),()=>{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:a,update:i,subscribe:o}}function hn(e,t,n){const r=!Array.isArray(e),a=r?[e]:e;if(!a.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return Ct(n,(o,s)=>{let l=!1;const c=[];let h=0,u=K;const w=()=>{if(h)return;u();const d=t(r?c[0]:c,o,s);i?o(d):u=yt(d)?d:K},f=a.map((d,m)=>wt(d,p=>{c[m]=p,h&=~(1<<m),l&&w()},()=>{h|=1<<m}));return l=!0,w(),function(){vt(f),u(),l=!1}})}var Ge;const L=((Ge=globalThis.__sveltekit_ofzaah)==null?void 0:Ge.base)??"";var We;const jt=((We=globalThis.__sveltekit_ofzaah)==null?void 0:We.assets)??L??"",Nt="1772279345188",Ye="sveltekit:snapshot",Je="sveltekit:scroll",Xe="sveltekit:states",Dt="sveltekit:pageurl",V="sveltekit:history",G="sveltekit:navigation",O={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ue=location.origin;function Ae(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function j(){return{x:pageXOffset,y:pageYOffset}}function q(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ve={...O,"":O.hover};function Qe(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function Ze(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Qe(e)}}function ve(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";r.hash=`#${s}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,i=!r||!!a||de(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(r==null?void 0:r.origin)===ue&&e.hasAttribute("download");return{url:r,external:i,target:a,download:o}}function ne(e){let t=null,n=null,r=null,a=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=q(s,"preload-code")),a===null&&(a=q(s,"preload-data")),t===null&&(t=q(s,"keepfocus")),n===null&&(n=q(s,"noscroll")),i===null&&(i=q(s,"reload")),o===null&&(o=q(s,"replacestate")),s=Qe(s);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ve[r??"off"],preload_data:Ve[a??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(o)}}function ze(e){const t=fe(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(l=>{(s===void 0||n&&l!==s)&&o(s=l)})}return{notify:r,set:a,subscribe:i}}const et={v:()=>{}};function qt(){const{set:e,subscribe:t}=fe(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${jt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==Nt;return o&&(e(!0),et.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function de(e,t,n){return e.origin!==ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function pn(e){}const tt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...tt];const Vt=new Set([...tt]);[...Vt];function zt(e){return e.filter(t=>t!=null)}function Ue(e){return e instanceof Se||e instanceof xe?e.status:500}function Bt(e){return e instanceof xe?e.text:"Internal Error"}let S,W,_e;const Kt=De.toString().includes("$$")||/function \w+\(\) \{\}/.test(De.toString());Kt?(S={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},W={current:null},_e={current:!1}):(S=new class{constructor(){A(this,"data",$state.raw({}));A(this,"form",$state.raw(null));A(this,"error",$state.raw(null));A(this,"params",$state.raw({}));A(this,"route",$state.raw({id:null}));A(this,"state",$state.raw({}));A(this,"status",$state.raw(-1));A(this,"url",$state.raw(new URL("https://example.com")))}},W=new class{constructor(){A(this,"current",$state.raw(null))}},_e=new class{constructor(){A(this,"current",$state.raw(!1))}},et.v=()=>_e.current=!0);function Mt(e){Object.assign(S,e)}const Ft=new Set(["icon","shortcut icon","apple-touch-icon"]),I=He(Je)??{},H=He(Ye)??{},$={url:ze({}),page:ze({}),navigating:fe(null),updated:qt()};function Te(e){I[e]=j()}function Gt(e,t){let n=e+1;for(;I[n];)delete I[n],n+=1;for(n=t+1;H[n];)delete H[n],n+=1}function Y(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function nt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(L||"/");e&&await e.update()}}function Be(){}let $e,ye,ae,U,be,E;const re=[],oe=[];let v=null;function ke(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const ee=new Map,at=new Set,Wt=new Set,F=new Set;let _={branch:[],error:null,url:null},rt=!1,se=!1,Ke=!0,J=!1,B=!1,ot=!1,Ie=!1,st,k,x,C;const ie=new Set,Me=new Map;async function wn(e,t,n){var i,o,s,l,c;(i=globalThis.__sveltekit_ofzaah)!=null&&i.data&&globalThis.__sveltekit_ofzaah.data,document.URL!==location.href&&(location.href=location.href),E=e,await((s=(o=e.hooks).init)==null?void 0:s.call(o)),$e=Ot(e),U=document.documentElement,be=t,ye=e.nodes[0],ae=e.nodes[1],ye(),ae(),k=(l=history.state)==null?void 0:l[V],x=(c=history.state)==null?void 0:c[G],k||(k=x=Date.now(),history.replaceState({...history.state,[V]:k,[G]:x},""));const r=I[k];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await sn(be,n)):(await z({type:"enter",url:Ae(E.hash?fn(new URL(location.href)):location.href),replace_state:!0}),a()),on()}function Ht(){re.length=0,Ie=!1}function it(e){oe.some(t=>t==null?void 0:t.snapshot)&&(H[e]=oe.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function lt(e){var t;(t=H[e])==null||t.forEach((n,r)=>{var a,i;(i=(a=oe[r])==null?void 0:a.snapshot)==null||i.restore(n)})}function Fe(){Te(k),qe(Je,I),it(x),qe(Ye,H)}async function ct(e,t,n,r){let a;t.invalidateAll&&ke(),await z({type:"goto",url:Ae(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Ie=!0,a=[...Me.keys()]),t.invalidate&&t.invalidate.forEach(rn)}}),t.invalidateAll&&te().then(te).then(()=>{Me.forEach(({resource:i},o)=>{var s;a!=null&&a.includes(o)&&((s=i.refresh)==null||s.call(i))})})}async function Yt(e){if(e.id!==(v==null?void 0:v.id)){ke();const t={};ie.add(t),v={id:e.id,token:t,promise:ut({...e,preload:t}).then(n=>(ie.delete(t),n.type==="loaded"&&n.state.error&&ke(),n)),fork:null}}return v.promise}async function we(e){var n;const t=(n=await he(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(r=>r[1]()))}async function ft(e,t,n){var a;_=e.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(S,e.props.page),st=new E.root({target:t,props:{...e.props,stores:$,components:oe},hydrate:n,sync:!1}),await Promise.resolve(),lt(x),n){const i={from:null,to:{params:_.params,route:{id:((a=_.route)==null?void 0:a.id)??null},url:new URL(location.href),scroll:I[k]??j()},willUnload:!1,type:"enter",complete:Promise.resolve()};F.forEach(o=>o(i))}se=!0}function le({url:e,params:t,branch:n,status:r,error:a,route:i,form:o}){let s="never";if(L&&(e.pathname===L||e.pathname===L+"/"))s="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(s=f.slash);e.pathname=bt(e.pathname,s),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:a,route:i},props:{constructors:zt(n).map(f=>f.node.component),page:Ne(S)}};o!==void 0&&(l.props.form=o);let c={},h=!S,u=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const d=n[f],m=_.branch[f];(d==null?void 0:d.data)!==(m==null?void 0:m.data)&&(h=!0),d&&(c={...c,...d.data},h&&(l.props[`data_${u}`]=c),u+=1)}return(!_.url||e.href!==_.url.href||_.error!==a||o!==void 0&&o!==S.form||h)&&(l.props.page={error:a,params:t,route:{id:(i==null?void 0:i.id)??null},state:{},status:r,url:new URL(e),form:o??null,data:h?c:S.data}),l}async function Pe({loader:e,parent:t,url:n,params:r,route:a,server_data_node:i}){var c,h;let o=null;const s={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:o,uses:s}:null,data:o??(i==null?void 0:i.data)??null,slash:((h=l.universal)==null?void 0:h.trailingSlash)??(i==null?void 0:i.slash)}}function Jt(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const i=se?At(r,a.href,t):Lt(r,t);return{resolved:a,promise:i}}function Xt(e,t,n,r,a,i){if(Ie)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const o of a.search_params)if(r.has(o))return!0;for(const o of a.params)if(i[o]!==_.params[o])return!0;for(const o of a.dependencies)if(re.some(s=>s(new URL(o))))return!0;return!1}function Oe(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function Qt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),i=t.searchParams.getAll(r);a.every(o=>i.includes(o))&&i.every(o=>a.includes(o))&&n.delete(r)}return n}function Zt({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ne(S),constructors:[]}}}async function ut({id:e,invalidating:t,url:n,params:r,route:a,preload:i}){if((v==null?void 0:v.id)===e)return ie.delete(v.token),v.promise;const{errors:o,layouts:s,leaf:l}=a,c=[...s,l];o.forEach(p=>p==null?void 0:p().catch(()=>{})),c.forEach(p=>p==null?void 0:p[1]().catch(()=>{}));const h=_.url?e!==ce(_.url):!1,u=_.route?a.id!==_.route.id:!1,w=Qt(_.url,n);let f=!1;const d=c.map(async(p,g)=>{var T;if(!p)return;const b=_.branch[g];return p[1]===(b==null?void 0:b.loader)&&!Xt(f,u,h,w,(T=b.universal)==null?void 0:T.uses,r)?b:(f=!0,Pe({loader:p[1],url:n,params:r,route:a,parent:async()=>{var Q;const P={};for(let y=0;y<g;y+=1)Object.assign(P,(Q=await d[y])==null?void 0:Q.data);return P},server_data_node:Oe(p[0]?{type:"skip"}:null,p[0]?b==null?void 0:b.server:void 0)}))});for(const p of d)p.catch(()=>{});const m=[];for(let p=0;p<c.length;p+=1)if(c[p])try{m.push(await d[p])}catch(g){if(g instanceof Re)return{type:"redirect",location:g.location};if(ie.has(i))return Zt({error:await X(g,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let b=Ue(g),R;if(g instanceof Se)R=g.body;else{if(await $.updated.check())return await nt(),await Y(n);R=await X(g,{params:r,url:n,route:{id:a.id}})}const T=await en(p,m,o);return T?le({url:n,params:r,branch:m.slice(0,T.idx).concat(T.node),status:b,error:R,route:a}):await ht(n,{id:a.id},R,b)}else m.push(void 0);return le({url:n,params:r,branch:m,status:200,error:null,route:a,form:t?void 0:null})}async function en(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ce({status:e,error:t,url:n,route:r}){const a={};let i=null;try{const o=await Pe({loader:ye,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:Oe(i)}),s={node:await ae(),loader:ae,universal:null,server:null,data:null};return le({url:n,params:a,branch:[o,s],status:e,error:t,route:null})}catch(o){if(o instanceof Re)return ct(new URL(o.location,location.href),{},0);throw o}}async function tn(e){const t=e.href;if(ee.has(t))return ee.get(t);let n;try{const r=(async()=>{let a=await E.hooks.reroute({url:new URL(e),fetch:async(i,o)=>Jt(i,o,e).promise})??e;if(typeof a=="string"){const i=new URL(e);E.hash?i.hash=a:i.pathname=a,a=i}return a})();ee.set(t,r),n=await r}catch{ee.delete(t);return}return n}async function he(e,t){if(e&&!de(e,L,E.hash)){const n=await tn(e);if(!n)return;const r=nn(n);for(const a of $e){const i=a.exec(r);if(i)return{id:ce(e),invalidating:t,route:a,params:Et(i),url:e}}}}function nn(e){return kt(E.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(L.length))||"/"}function ce(e){return(E.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function dt({url:e,type:t,intent:n,delta:r,event:a,scroll:i}){let o=!1;const s=je(_,n,e,t,i??null);r!==void 0&&(s.navigation.delta=r),a!==void 0&&(s.navigation.event=a);const l={...s.navigation,cancel:()=>{o=!0,s.reject(new Error("navigation cancelled"))}};return J||at.forEach(c=>c(l)),o?null:s}async function z({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:i,state:o={},redirect_count:s=0,nav_token:l={},accept:c=Be,block:h=Be,event:u}){const w=C;C=l;const f=await he(t,!1),d=e==="enter"?je(_,f,t,e):dt({url:t,type:e,delta:n==null?void 0:n.delta,intent:f,scroll:n==null?void 0:n.scroll,event:u});if(!d){h(),C===l&&(C=w);return}const m=k,p=x;c(),J=!0,se&&d.navigation.type!=="enter"&&$.navigating.set(W.current=d.navigation);let g=f&&await ut(f);if(!g){if(de(t,L,E.hash))return await Y(t,i);g=await ht(t,{id:null},await X(new xe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(f==null?void 0:f.url)||t,C!==l)return d.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(s<20){await z({type:e,url:new URL(g.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:i,state:o,redirect_count:s+1,nav_token:l}),d.fulfil(void 0);return}g=await Ce({status:500,error:await X(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await $.updated.check()&&(await nt(),await Y(t,i));if(Ht(),Te(m),it(p),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),o=n?n.state:o,!n){const y=i?0:1,Z={[V]:k+=y,[G]:x+=y,[Xe]:o};(i?history.replaceState:history.pushState).call(history,Z,"",t),i||Gt(k,x)}const b=f&&(v==null?void 0:v.id)===f.id?v.fork:null;v=null,g.props.page.state=o;let R;if(se){const y=(await Promise.all(Array.from(Wt,N=>N(d.navigation)))).filter(N=>typeof N=="function");if(y.length>0){let N=function(){y.forEach(pe=>{F.delete(pe)})};y.push(N),y.forEach(pe=>{F.add(pe)})}_=g.state,g.props.page&&(g.props.page.url=t);const Z=b&&await b;Z?R=Z.commit():(st.$set(g.props),Mt(g.props.page),R=void 0),ot=!0}else await ft(g,be,!1);const{activeElement:T}=document;await R,await te(),await te();let P=null;if(Ke){const y=n?n.scroll:a?j():null;y?scrollTo(y.x,y.y):(P=t.hash&&document.getElementById(pt(t)))?P.scrollIntoView():scrollTo(0,0)}const Q=document.activeElement!==T&&document.activeElement!==document.body;!r&&!Q&&cn(t,!P),Ke=!0,g.props.page&&Object.assign(S,g.props.page),J=!1,e==="popstate"&&lt(x),d.fulfil(void 0),d.navigation.to&&(d.navigation.to.scroll=j()),F.forEach(y=>y(d.navigation)),$.navigating.set(W.current=null)}async function ht(e,t,n,r,a){return e.origin===ue&&e.pathname===location.pathname&&!rt?await Ce({status:r,error:n,url:e,route:t}):await Y(e,a)}function an(){let e,t={element:void 0,href:void 0},n;U.addEventListener("mousemove",s=>{const l=s.target;clearTimeout(e),e=setTimeout(()=>{i(l,O.hover)},20)});function r(s){s.defaultPrevented||i(s.composedPath()[0],O.tap)}U.addEventListener("mousedown",r),U.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(s=>{for(const l of s)l.isIntersecting&&(we(new URL(l.target.href)),a.unobserve(l.target))},{threshold:0});async function i(s,l){const c=Ze(s,U),h=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||h)return;const{url:u,external:w,download:f}=ve(c,L,E.hash);if(w||f)return;const d=ne(c),m=u&&ce(_.url)===ce(u);if(!(d.reload||m))if(l<=d.preload_data){t={element:c,href:c.href},n=O.tap;const p=await he(u,!1);if(!p)return;Yt(p)}else l<=d.preload_code&&(t={element:c,href:c.href},n=l,we(u))}function o(){a.disconnect();for(const s of U.querySelectorAll("a")){const{url:l,external:c,download:h}=ve(s,L,E.hash);if(c||h)continue;const u=ne(s);u.reload||(u.preload_code===O.viewport&&a.observe(s),u.preload_code===O.eager&&we(l))}}F.add(o),o()}function X(e,t){if(e instanceof Se)return e.body;const n=Ue(e),r=Bt(e);return E.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function vn(e,t={}){return e=new URL(Ae(e)),e.origin!==ue?Promise.reject(new Error("goto: invalid URL")):ct(e,t,0)}function rn(e){if(typeof e=="function")re.push(e);else{const{href:t}=new URL(e,location.href);re.push(n=>n.href===t)}}function on(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let r=!1;if(Fe(),!J){const a=je(_,void 0,null,"leave"),i={...a.navigation,cancel:()=>{r=!0,a.reject(new Error("navigation cancelled"))}};at.forEach(o=>o(i))}r?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Fe()}),(t=navigator.connection)!=null&&t.saveData||an(),U.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const r=Ze(n.composedPath()[0],U);if(!r)return;const{url:a,external:i,target:o,download:s}=ve(r,L,E.hash);if(!a)return;if(o==="_parent"||o==="_top"){if(window.parent!==window)return}else if(o&&o!=="_self")return;const l=ne(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||s)return;const[h,u]=(E.hash?a.hash.replace(/^#/,""):a.href).split("#"),w=h===ge(location);if(i||l.reload&&(!w||!u)){dt({url:a,type:"link",event:n})?J=!0:n.preventDefault();return}if(u!==void 0&&w){const[,f]=_.url.href.split("#");if(f===u){if(n.preventDefault(),u===""||u==="top"&&r.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const d=r.ownerDocument.getElementById(decodeURIComponent(u));d&&(d.scrollIntoView(),d.focus())}return}if(B=!0,Te(k),e(a),!l.replace_state)return;B=!1}n.preventDefault(),await new Promise(f=>{requestAnimationFrame(()=>{setTimeout(f,0)}),setTimeout(f,100)}),await z({type:"link",url:a,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??a.href===location.href,event:n})}),U.addEventListener("submit",n=>{if(n.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formTarget)||r.target)==="_blank"||((a==null?void 0:a.formMethod)||r.method)!=="get")return;const s=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(de(s,L,!1))return;const l=n.target,c=ne(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const h=new FormData(l,a);s.search=new URLSearchParams(h).toString(),z({type:"form",url:s,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??s.href===location.href,event:n})}),addEventListener("popstate",async n=>{var r;if(!Ee){if((r=n.state)!=null&&r[V]){const a=n.state[V];if(C={},a===k)return;const i=I[a],o=n.state[Xe]??{},s=new URL(n.state[Dt]??location.href),l=n.state[G],c=_.url?ge(location)===ge(_.url):!1;if(l===x&&(ot||c)){o!==S.state&&(S.state=o),e(s),I[k]=j(),i&&scrollTo(i.x,i.y),k=a;return}const u=a-k;await z({type:"popstate",url:s,popped:{state:o,scroll:i,delta:u},accept:()=>{k=a,x=l},block:()=>{history.go(-u)},nav_token:C,event:n})}else if(!B){const a=new URL(location.href);e(a),E.hash&&location.reload()}}}),addEventListener("hashchange",()=>{B&&(B=!1,history.replaceState({...history.state,[V]:++k,[G]:x},"",location.href))});for(const n of document.querySelectorAll("link"))Ft.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&$.navigating.set(W.current=null)});function e(n){_.url=S.url=n,$.page.set(Ne(S)),$.page.notify()}}async function sn(e,{status:t=200,error:n,node_ids:r,params:a,route:i,server_route:o,data:s,form:l}){rt=!0;const c=new URL(location.href);let h;({params:a={},route:i={id:null}}=await he(c,!1)||{}),h=$e.find(({id:f})=>f===i.id);let u,w=!0;try{const f=r.map(async(m,p)=>{const g=s[p];return g!=null&&g.uses&&(g.uses=ln(g.uses)),Pe({loader:E.nodes[m],url:c,params:a,route:i,parent:async()=>{const b={};for(let R=0;R<p;R+=1)Object.assign(b,(await f[R]).data);return b},server_data_node:Oe(g)})}),d=await Promise.all(f);if(h){const m=h.layouts;for(let p=0;p<m.length;p++)m[p]||d.splice(p,0,void 0)}u=le({url:c,params:a,branch:d,status:t,error:n,form:l,route:h??null})}catch(f){if(f instanceof Re){await Y(new URL(f.location,location.href));return}u=await Ce({status:Ue(f),error:await X(f,{url:c,params:a,route:i}),url:c,route:i}),e.textContent="",w=!1}u.props.page&&(u.props.page.state={}),await ft(u,e,w)}function ln(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Ee=!1;function cn(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=pt(e);if(r&&document.getElementById(r)){const{x:i,y:o}=j();setTimeout(()=>{const s=history.state;Ee=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(s,"",e),t&&scrollTo(i,o),Ee=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const i=[];for(let o=0;o<a.rangeCount;o+=1)i.push(a.getRangeAt(o));setTimeout(()=>{if(a.rangeCount===i.length){for(let o=0;o<a.rangeCount;o+=1){const s=i[o],l=a.getRangeAt(o);if(s.commonAncestorContainer!==l.commonAncestorContainer||s.startContainer!==l.startContainer||s.endContainer!==l.endContainer||s.startOffset!==l.startOffset||s.endOffset!==l.endOffset)return}a.removeAllRanges()}})}}}function je(e,t,n,r,a=null){var c,h;let i,o;const s=new Promise((u,w)=>{i=u,o=w});return s.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:j()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((h=t==null?void 0:t.route)==null?void 0:h.id)??null},url:n,scroll:a},willUnload:!t,type:r,complete:s},fulfil:i,reject:o}}function Ne(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function fn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function pt(e){let t;if(E.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{wn as a,hn as d,vn as g,pn as l,$ as s,fe as w};
 
 
frontend/.svelte-kit/output/client/_app/immutable/entry/app.mfL3Z2b5.js DELETED
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.B4Km_xye.js","../chunks/DQebRFVS.js","../chunks/BX82rj4I.js","../assets/0.XtmqqaVM.css","../nodes/1.CgjumiZZ.js","../chunks/J0QSAnNz.js","../nodes/2.CwsLFqkm.js","../chunks/BxRIPBY0.js","../assets/2.BpyLQ8v8.css","../nodes/3.xYrSFp1n.js","../assets/3.CRf0cTrE.css"])))=>i.map(i=>d[i]);
2
- import{s as q,d,i as E,k as B,A as h,m as U,C as F,r as G,D as W,E as y,p as j,F as p,f as z,h as H,l as J,G as D,b as K,j as Q,t as X}from"../chunks/DQebRFVS.js";import{S as Y,i as Z,t as g,a as w,g as S,c as A,d as P,b as R,m as O,e as C}from"../chunks/BX82rj4I.js";const M="modulepreload",$=function(o,e){return new URL(o,e).href},I={},L=function(e,n,r){let i=Promise.resolve();if(n&&n.length>0){const t=document.getElementsByTagName("link"),s=document.querySelector("meta[property=csp-nonce]"),a=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));i=Promise.allSettled(n.map(f=>{if(f=$(f,r),f in I)return;I[f]=!0;const l=f.endsWith(".css"),_=l?'[rel="stylesheet"]':"";if(!!r)for(let k=t.length-1;k>=0;k--){const v=t[k];if(v.href===f&&(!l||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${_}`))return;const m=document.createElement("link");if(m.rel=l?"stylesheet":M,l||(m.as="script"),m.crossOrigin="",m.href=f,a&&m.setAttribute("nonce",a),document.head.appendChild(m),l)return new Promise((k,v)=>{m.addEventListener("load",k),m.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${f}`)))})}))}function u(t){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=t,window.dispatchEvent(s),!s.defaultPrevented)throw t}return i.then(t=>{for(const s of t||[])s.status==="rejected"&&u(s.reason);return e().catch(u)})},ae={};function x(o){let e,n,r;var i=o[2][0];function u(t,s){return{props:{data:t[4],form:t[3],params:t[1].params}}}return i&&(e=y(i,u(o)),o[12](e)),{c(){e&&R(e.$$.fragment),n=h()},l(t){e&&C(e.$$.fragment,t),n=h()},m(t,s){e&&O(e,t,s),E(t,n,s),r=!0},p(t,s){if(s&4&&i!==(i=t[2][0])){if(e){S();const a=e;g(a.$$.fragment,1,0,()=>{P(a,1)}),A()}i?(e=y(i,u(t)),t[12](e),R(e.$$.fragment),w(e.$$.fragment,1),O(e,n.parentNode,n)):e=null}else if(i){const a={};s&16&&(a.data=t[4]),s&8&&(a.form=t[3]),s&2&&(a.params=t[1].params),e.$set(a)}},i(t){r||(e&&w(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){t&&d(n),o[12](null),e&&P(e,t)}}}function ee(o){let e,n,r;var i=o[2][0];function u(t,s){return{props:{data:t[4],params:t[1].params,$$slots:{default:[te]},$$scope:{ctx:t}}}}return i&&(e=y(i,u(o)),o[11](e)),{c(){e&&R(e.$$.fragment),n=h()},l(t){e&&C(e.$$.fragment,t),n=h()},m(t,s){e&&O(e,t,s),E(t,n,s),r=!0},p(t,s){if(s&4&&i!==(i=t[2][0])){if(e){S();const a=e;g(a.$$.fragment,1,0,()=>{P(a,1)}),A()}i?(e=y(i,u(t)),t[11](e),R(e.$$.fragment),w(e.$$.fragment,1),O(e,n.parentNode,n)):e=null}else if(i){const a={};s&16&&(a.data=t[4]),s&2&&(a.params=t[1].params),s&8239&&(a.$$scope={dirty:s,ctx:t}),e.$set(a)}},i(t){r||(e&&w(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){t&&d(n),o[11](null),e&&P(e,t)}}}function te(o){let e,n,r;var i=o[2][1];function u(t,s){return{props:{data:t[5],form:t[3],params:t[1].params}}}return i&&(e=y(i,u(o)),o[10](e)),{c(){e&&R(e.$$.fragment),n=h()},l(t){e&&C(e.$$.fragment,t),n=h()},m(t,s){e&&O(e,t,s),E(t,n,s),r=!0},p(t,s){if(s&4&&i!==(i=t[2][1])){if(e){S();const a=e;g(a.$$.fragment,1,0,()=>{P(a,1)}),A()}i?(e=y(i,u(t)),t[10](e),R(e.$$.fragment),w(e.$$.fragment,1),O(e,n.parentNode,n)):e=null}else if(i){const a={};s&32&&(a.data=t[5]),s&8&&(a.form=t[3]),s&2&&(a.params=t[1].params),e.$set(a)}},i(t){r||(e&&w(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){t&&d(n),o[10](null),e&&P(e,t)}}}function T(o){let e,n=o[7]&&V(o);return{c(){e=J("div"),n&&n.c(),this.h()},l(r){e=z(r,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var i=H(e);n&&n.l(i),i.forEach(d),this.h()},h(){j(e,"id","svelte-announcer"),j(e,"aria-live","assertive"),j(e,"aria-atomic","true"),p(e,"position","absolute"),p(e,"left","0"),p(e,"top","0"),p(e,"clip","rect(0 0 0 0)"),p(e,"clip-path","inset(50%)"),p(e,"overflow","hidden"),p(e,"white-space","nowrap"),p(e,"width","1px"),p(e,"height","1px")},m(r,i){E(r,e,i),n&&n.m(e,null)},p(r,i){r[7]?n?n.p(r,i):(n=V(r),n.c(),n.m(e,null)):n&&(n.d(1),n=null)},d(r){r&&d(e),n&&n.d()}}}function V(o){let e;return{c(){e=X(o[8])},l(n){e=Q(n,o[8])},m(n,r){E(n,e,r)},p(n,r){r&256&&K(e,n[8])},d(n){n&&d(e)}}}function ne(o){let e,n,r,i,u;const t=[ee,x],s=[];function a(l,_){return l[2][1]?0:1}e=a(o),n=s[e]=t[e](o);let f=o[6]&&T(o);return{c(){n.c(),r=U(),f&&f.c(),i=h()},l(l){n.l(l),r=B(l),f&&f.l(l),i=h()},m(l,_){s[e].m(l,_),E(l,r,_),f&&f.m(l,_),E(l,i,_),u=!0},p(l,[_]){let b=e;e=a(l),e===b?s[e].p(l,_):(S(),g(s[b],1,1,()=>{s[b]=null}),A(),n=s[e],n?n.p(l,_):(n=s[e]=t[e](l),n.c()),w(n,1),n.m(r.parentNode,r)),l[6]?f?f.p(l,_):(f=T(l),f.c(),f.m(i.parentNode,i)):f&&(f.d(1),f=null)},i(l){u||(w(n),u=!0)},o(l){g(n),u=!1},d(l){l&&(d(r),d(i)),s[e].d(l),f&&f.d(l)}}}function se(o,e,n){let{stores:r}=e,{page:i}=e,{constructors:u}=e,{components:t=[]}=e,{form:s}=e,{data_0:a=null}=e,{data_1:f=null}=e;F(r.page.notify);let l=!1,_=!1,b=null;G(()=>{const c=r.page.subscribe(()=>{l&&(n(7,_=!0),W().then(()=>{n(8,b=document.title||"untitled page")}))});return n(6,l=!0),c});function m(c){D[c?"unshift":"push"](()=>{t[1]=c,n(0,t)})}function k(c){D[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}function v(c){D[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}return o.$$set=c=>{"stores"in c&&n(9,r=c.stores),"page"in c&&n(1,i=c.page),"constructors"in c&&n(2,u=c.constructors),"components"in c&&n(0,t=c.components),"form"in c&&n(3,s=c.form),"data_0"in c&&n(4,a=c.data_0),"data_1"in c&&n(5,f=c.data_1)},o.$$.update=()=>{o.$$.dirty&514&&r.page.set(i)},[t,i,u,s,a,f,l,_,b,r,m,k,v]}class le extends Y{constructor(e){super(),Z(this,e,se,ne,q,{stores:9,page:1,constructors:2,components:0,form:3,data_0:4,data_1:5})}}const fe=[()=>L(()=>import("../nodes/0.B4Km_xye.js"),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>L(()=>import("../nodes/1.CgjumiZZ.js"),__vite__mapDeps([4,1,2,5]),import.meta.url),()=>L(()=>import("../nodes/2.CwsLFqkm.js"),__vite__mapDeps([6,1,7,5,2,8]),import.meta.url),()=>L(()=>import("../nodes/3.xYrSFp1n.js"),__vite__mapDeps([9,1,2,5,7,10]),import.meta.url)],ce=[],ue={"/":[2],"/game":[3]},N={handleError:({error:o})=>{console.error(o)},reroute:()=>{},transport:{}},re=Object.fromEntries(Object.entries(N.transport).map(([o,e])=>[o,e.decode])),_e=Object.fromEntries(Object.entries(N.transport).map(([o,e])=>[o,e.encode])),me=!1,pe=(o,e)=>re[o](e);export{pe as decode,re as decoders,ue as dictionary,_e as encoders,me as hash,N as hooks,ae as matchers,fe as nodes,le as root,ce as server_loads};
 
 
 
frontend/.svelte-kit/output/client/_app/immutable/entry/start.BPj5i5_S.js DELETED
@@ -1 +0,0 @@
1
- import{l as o,a as r}from"../chunks/J0QSAnNz.js";export{o as load_css,r as start};
 
 
frontend/.svelte-kit/output/client/_app/immutable/nodes/0.B4Km_xye.js DELETED
@@ -1 +0,0 @@
1
- import{s as l,c as i,u as r,g as u,a as f}from"../chunks/DQebRFVS.js";import{S as _,i as c,t as p,a as m}from"../chunks/BX82rj4I.js";function $(a){let s;const n=a[1].default,e=i(n,a,a[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,o){e&&e.m(t,o),s=!0},p(t,[o]){e&&e.p&&(!s||o&1)&&r(e,n,t,t[0],s?f(n,t[0],o,null):u(t[0]),null)},i(t){s||(m(e,t),s=!0)},o(t){p(e,t),s=!1},d(t){e&&e.d(t)}}}function d(a,s,n){let{$$slots:e={},$$scope:t}=s;return a.$$set=o=>{"$$scope"in o&&n(0,t=o.$$scope)},[t,e]}class S extends _{constructor(s){super(),c(this,s,d,$,l,{})}}export{S as component};
 
 
frontend/.svelte-kit/output/client/_app/immutable/nodes/1.CgjumiZZ.js DELETED
@@ -1 +0,0 @@
1
- import{s as S,n as _,d as l,b as f,i as m,e as d,f as g,h,j as v,k as x,l as $,t as E,m as j,o as k}from"../chunks/DQebRFVS.js";import{S as q,i as y}from"../chunks/BX82rj4I.js";import{s as C}from"../chunks/J0QSAnNz.js";const H=()=>{const s=C;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},P={subscribe(s){return H().page.subscribe(s)}};function w(s){var b;let t,r=s[0].status+"",o,n,i,c=((b=s[0].error)==null?void 0:b.message)+"",u;return{c(){t=$("h1"),o=E(r),n=j(),i=$("p"),u=E(c)},l(e){t=g(e,"H1",{});var a=h(t);o=v(a,r),a.forEach(l),n=x(e),i=g(e,"P",{});var p=h(i);u=v(p,c),p.forEach(l)},m(e,a){m(e,t,a),d(t,o),m(e,n,a),m(e,i,a),d(i,u)},p(e,[a]){var p;a&1&&r!==(r=e[0].status+"")&&f(o,r),a&1&&c!==(c=((p=e[0].error)==null?void 0:p.message)+"")&&f(u,c)},i:_,o:_,d(e){e&&(l(t),l(n),l(i))}}}function z(s,t,r){let o;return k(s,P,n=>r(0,o=n)),[o]}let F=class extends q{constructor(t){super(),y(this,t,z,w,S,{})}};export{F as component};
 
 
frontend/.svelte-kit/output/client/_app/immutable/nodes/2.CwsLFqkm.js DELETED
@@ -1,4 +0,0 @@
1
- import{s as fe,n as x,d as g,i as S,e as v,p as _,f as j,h as q,q as H,k as L,l as y,m as P,o as pe,r as _e,v as he,b as G,j as Q,t as W,w as ue,x as X,y as B,z as me,A as se,B as z}from"../chunks/DQebRFVS.js";import{g as ve,r as Y,a as K,b as ge,m as be,w as je,p as F,e as le}from"../chunks/BxRIPBY0.js";import{S as ye,i as ke}from"../chunks/BX82rj4I.js";import{g as Ce}from"../chunks/J0QSAnNz.js";const Te=!1,Ee=!1,Be=Object.freeze(Object.defineProperty({__proto__:null,prerender:Ee,ssr:Te},Symbol.toStringTag,{value:"Module"}));function ne(l,e,t){const s=l.slice();return s[23]=e[t],s}function Ne(l){const e=l.slice(),t=e[0];return e[22]=t,e}function ie(l){let e,t;return{c(){e=y("div"),t=W(l[5]),this.h()},l(s){e=j(s,"DIV",{class:!0});var r=q(e);t=Q(r,l[5]),r.forEach(g),this.h()},h(){_(e,"class","error-toast svelte-cigodj")},m(s,r){S(s,e,r),v(e,t)},p(s,r){r&32&&G(t,s[5])},d(s){s&&g(e)}}}function ae(l){var Z,$,ee;let e,t,s,r="Code de la room",u,n,a=((Z=l[22])==null?void 0:Z.room_id)+"",d,f,o,i="Copier",c,C,N,A,O,U,D;function E(){return l[18](l[22])}let T=le((($=l[22])==null?void 0:$.players)??[]),h=[];for(let m=0;m<T.length;m+=1)h[m]=re(ne(l,T,m));let k=(((ee=l[22])==null?void 0:ee.players.length)??0)<2&&ce();function J(m,M){var w;if(m[7])return Me;if((w=m[1])!=null&&w.ready)return Ie}let p=J(l),b=p&&p(l);return{c(){e=y("section"),t=y("div"),s=y("span"),s.textContent=r,u=P(),n=y("span"),d=W(a),f=P(),o=y("button"),o.textContent=i,c=P(),C=y("section");for(let m=0;m<h.length;m+=1)h[m].c();N=P(),k&&k.c(),A=P(),b&&b.c(),O=se(),this.h()},l(m){e=j(m,"SECTION",{class:!0});var M=q(e);t=j(M,"DIV",{class:!0});var w=q(t);s=j(w,"SPAN",{class:!0,"data-svelte-h":!0}),H(s)!=="svelte-igtjir"&&(s.textContent=r),u=L(w),n=j(w,"SPAN",{class:!0});var R=q(n);d=Q(R,a),R.forEach(g),f=L(w),o=j(w,"BUTTON",{class:!0,"data-svelte-h":!0}),H(o)!=="svelte-vjii7a"&&(o.textContent=i),w.forEach(g),M.forEach(g),c=L(m),C=j(m,"SECTION",{class:!0});var V=q(C);for(let I=0;I<h.length;I+=1)h[I].l(V);N=L(V),k&&k.l(V),V.forEach(g),A=L(m),b&&b.l(m),O=se(),this.h()},h(){_(s,"class","room-code-label svelte-cigodj"),_(n,"class","room-code svelte-cigodj"),_(o,"class","copy-btn svelte-cigodj"),_(t,"class","room-code-block svelte-cigodj"),_(e,"class","card svelte-cigodj"),_(C,"class","players-list svelte-cigodj")},m(m,M){S(m,e,M),v(e,t),v(t,s),v(t,u),v(t,n),v(n,d),v(t,f),v(t,o),S(m,c,M),S(m,C,M);for(let w=0;w<h.length;w+=1)h[w]&&h[w].m(C,null);v(C,N),k&&k.m(C,null),S(m,A,M),b&&b.m(m,M),S(m,O,M),U||(D=B(o,"click",E),U=!0)},p(m,M){var w,R,V;if(l=m,M&1&&a!==(a=((w=l[22])==null?void 0:w.room_id)+"")&&G(d,a),M&257){T=le(((R=l[22])==null?void 0:R.players)??[]);let I;for(I=0;I<T.length;I+=1){const te=ne(l,T,I);h[I]?h[I].p(te,M):(h[I]=re(te),h[I].c(),h[I].m(C,N))}for(;I<h.length;I+=1)h[I].d(1);h.length=T.length}(((V=l[22])==null?void 0:V.players.length)??0)<2?k||(k=ce(),k.c(),k.m(C,null)):k&&(k.d(1),k=null),p===(p=J(l))&&b?b.p(l,M):(b&&b.d(1),b=p&&p(l),b&&(b.c(),b.m(O.parentNode,O)))},d(m){m&&(g(e),g(c),g(C),g(A),g(O)),me(h,m),k&&k.d(),b&&b.d(m),U=!1,D()}}}function we(l){let e,t='<div class="spinner svelte-cigodj"></div> <p class="status-text svelte-cigodj">Recherche d&#39;un adversaire…</p> <p class="status-muted svelte-cigodj">Le jeu démarre dès qu&#39;un autre joueur rejoint</p>';return{c(){e=y("section"),e.innerHTML=t,this.h()},l(s){e=j(s,"SECTION",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-13tu3ku"&&(e.innerHTML=t),this.h()},h(){_(e,"class","card center svelte-cigodj")},m(s,r){S(s,e,r)},p:x,d(s){s&&g(e)}}}function Se(l){let e,t,s="Ton nom",r,u,n,a,d,f=`<span class="btn-icon svelte-cigodj">⚔️</span>
2
- Partie rapide`,o,i,c=`<span class="btn-icon svelte-cigodj">🏠</span>
3
- Créer une room privée`,C,N,A=`<span class="btn-icon svelte-cigodj">🔗</span>
4
- Rejoindre avec un code`,O,U,D,E=l[6]&&de(l);return{c(){e=y("section"),t=y("label"),t.textContent=s,r=P(),u=y("input"),n=P(),a=y("section"),d=y("button"),d.innerHTML=f,o=P(),i=y("button"),i.innerHTML=c,C=P(),N=y("button"),N.innerHTML=A,O=P(),E&&E.c(),this.h()},l(T){e=j(T,"SECTION",{class:!0});var h=q(e);t=j(h,"LABEL",{class:!0,for:!0,"data-svelte-h":!0}),H(t)!=="svelte-1bn4wxd"&&(t.textContent=s),r=L(h),u=j(h,"INPUT",{id:!0,class:!0,placeholder:!0,maxlength:!0}),h.forEach(g),n=L(T),a=j(T,"SECTION",{class:!0});var k=q(a);d=j(k,"BUTTON",{class:!0,"data-svelte-h":!0}),H(d)!=="svelte-vmjj4t"&&(d.innerHTML=f),o=L(k),i=j(k,"BUTTON",{class:!0,"data-svelte-h":!0}),H(i)!=="svelte-1yhx17u"&&(i.innerHTML=c),C=L(k),N=j(k,"BUTTON",{class:!0,"data-svelte-h":!0}),H(N)!=="svelte-roe2vr"&&(N.innerHTML=A),O=L(k),E&&E.l(k),k.forEach(g),this.h()},h(){_(t,"class","field-label svelte-cigodj"),_(t,"for","name-input"),_(u,"id","name-input"),_(u,"class","text-input svelte-cigodj"),_(u,"placeholder","Commandant…"),_(u,"maxlength","20"),_(e,"class","card svelte-cigodj"),_(d,"class","btn btn-primary svelte-cigodj"),_(i,"class","btn btn-secondary svelte-cigodj"),_(N,"class","btn btn-ghost svelte-cigodj"),_(a,"class","actions svelte-cigodj")},m(T,h){S(T,e,h),v(e,t),v(e,r),v(e,u),X(u,l[2]),S(T,n,h),S(T,a,h),v(a,d),v(a,o),v(a,i),v(a,C),v(a,N),v(a,O),E&&E.m(a,null),U||(D=[B(u,"input",l[13]),B(u,"keydown",l[14]),B(d,"click",l[11]),B(i,"click",l[9]),B(N,"click",l[15])],U=!0)},p(T,h){h&4&&u.value!==T[2]&&X(u,T[2]),T[6]?E?E.p(T,h):(E=de(T),E.c(),E.m(a,null)):E&&(E.d(1),E=null)},d(T){T&&(g(e),g(n),g(a)),E&&E.d(),U=!1,ue(D)}}}function oe(l){let e,t="Toi";return{c(){e=y("span"),e.textContent=t,this.h()},l(s){e=j(s,"SPAN",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-1w50377"&&(e.textContent=t),this.h()},h(){_(e,"class","badge badge-you svelte-cigodj")},m(s,r){S(s,e,r)},d(s){s&&g(e)}}}function re(l){let e,t,s=l[23].name+"",r,u,n,a,d=l[23].ready?"✓ Prêt":"En attente",f,o=l[23].sid===l[8].id&&oe();return{c(){e=y("div"),t=y("span"),r=W(s),u=P(),o&&o.c(),n=P(),a=y("span"),f=W(d),this.h()},l(i){e=j(i,"DIV",{class:!0});var c=q(e);t=j(c,"SPAN",{class:!0});var C=q(t);r=Q(C,s),C.forEach(g),u=L(c),o&&o.l(c),n=L(c),a=j(c,"SPAN",{class:!0});var N=q(a);f=Q(N,d),N.forEach(g),c.forEach(g),this.h()},h(){_(t,"class","player-name svelte-cigodj"),_(a,"class","badge svelte-cigodj"),z(a,"badge-ready",l[23].ready),z(a,"badge-waiting",!l[23].ready),_(e,"class","player-row svelte-cigodj"),z(e,"is-you",l[23].sid===l[8].id)},m(i,c){S(i,e,c),v(e,t),v(t,r),v(e,u),o&&o.m(e,null),v(e,n),v(e,a),v(a,f)},p(i,c){c&1&&s!==(s=i[23].name+"")&&G(r,s),i[23].sid===i[8].id?o||(o=oe(),o.c(),o.m(e,n)):o&&(o.d(1),o=null),c&1&&d!==(d=i[23].ready?"✓ Prêt":"En attente")&&G(f,d),c&1&&z(a,"badge-ready",i[23].ready),c&1&&z(a,"badge-waiting",!i[23].ready),c&257&&z(e,"is-you",i[23].sid===i[8].id)},d(i){i&&g(e),o&&o.d()}}}function ce(l){let e,t='<span class="text-muted">En attente d&#39;un adversaire…</span> <div class="dot-pulse svelte-cigodj"><span class="svelte-cigodj"></span><span class="svelte-cigodj"></span><span class="svelte-cigodj"></span></div>';return{c(){e=y("div"),e.innerHTML=t,this.h()},l(s){e=j(s,"DIV",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-okzxxd"&&(e.innerHTML=t),this.h()},h(){_(e,"class","player-row player-placeholder svelte-cigodj")},m(s,r){S(s,e,r)},d(s){s&&g(e)}}}function Ie(l){let e,t="En attente que l'adversaire soit prêt…";return{c(){e=y("p"),e.textContent=t,this.h()},l(s){e=j(s,"P",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-bcni62"&&(e.textContent=t),this.h()},h(){_(e,"class","status-text svelte-cigodj")},m(s,r){S(s,e,r)},p:x,d(s){s&&g(e)}}}function Me(l){let e,t="✓ Prêt !",s,r;return{c(){e=y("button"),e.textContent=t,this.h()},l(u){e=j(u,"BUTTON",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-1kv5ql1"&&(e.textContent=t),this.h()},h(){_(e,"class","btn btn-primary btn-large svelte-cigodj")},m(u,n){S(u,e,n),s||(r=B(e,"click",l[12]),s=!0)},p:x,d(u){u&&g(e),s=!1,r()}}}function de(l){let e,t,s,r,u="OK",n,a;return{c(){e=y("div"),t=y("input"),s=P(),r=y("button"),r.textContent=u,this.h()},l(d){e=j(d,"DIV",{class:!0});var f=q(e);t=j(f,"INPUT",{class:!0,placeholder:!0,maxlength:!0}),s=L(f),r=j(f,"BUTTON",{class:!0,"data-svelte-h":!0}),H(r)!=="svelte-advd9m"&&(r.textContent=u),f.forEach(g),this.h()},h(){_(t,"class","text-input code-input svelte-cigodj"),_(t,"placeholder","ABC123"),_(t,"maxlength","6"),_(r,"class","btn btn-primary btn-sm svelte-cigodj"),_(e,"class","join-row svelte-cigodj")},m(d,f){S(d,e,f),v(e,t),X(t,l[3]),v(e,s),v(e,r),n||(a=[B(t,"input",l[16]),B(t,"keydown",l[17]),B(r,"click",l[10])],n=!0)},p(d,f){f&8&&t.value!==d[3]&&X(t,d[3])},d(d){d&&g(e),n=!1,ue(a)}}}function Le(l){let e,t,s='<div class="logo svelte-cigodj"><span class="logo-icon svelte-cigodj">⚡</span> <span class="logo-text svelte-cigodj">VoiceStrike</span></div> <p class="tagline svelte-cigodj">Stratégie en temps réel — commandé à la voix</p>',r,u,n=l[5]&&ie(l);function a(i,c){if(i[4]==="home")return Se;if(i[4]==="queue")return we;if(i[4]==="waiting")return ae}function d(i,c){return c===ae?Ne(i):i}let f=a(l),o=f&&f(d(l,f));return{c(){e=y("main"),t=y("header"),t.innerHTML=s,r=P(),n&&n.c(),u=P(),o&&o.c(),this.h()},l(i){e=j(i,"MAIN",{class:!0});var c=q(e);t=j(c,"HEADER",{class:!0,"data-svelte-h":!0}),H(t)!=="svelte-igadcu"&&(t.innerHTML=s),r=L(c),n&&n.l(c),u=L(c),o&&o.l(c),c.forEach(g),this.h()},h(){_(t,"class","lobby-header svelte-cigodj"),_(e,"class","lobby svelte-cigodj")},m(i,c){S(i,e,c),v(e,t),v(e,r),n&&n.m(e,null),v(e,u),o&&o.m(e,null)},p(i,[c]){i[5]?n?n.p(i,c):(n=ie(i),n.c(),n.m(e,u)):n&&(n.d(1),n=null),f===(f=a(i))&&o?o.p(d(i,f),c):(o&&o.d(1),o=f&&f(d(i,f)),o&&(o.c(),o.m(e,null)))},i:x,o:x,d(i){i&&g(e),n&&n.d(),o&&o.d()}}}function Pe(l,e,t){let s,r,u;pe(l,F,p=>t(20,u=p));let n=ve(),a=u||"",d="",f="home",o="",i=null,c=!1;function C(p){t(5,o=p),setTimeout(()=>t(5,o=""),3e3)}_e(()=>{n.on("room_created",({room_id:p,room:b})=>{Y.set(p),K.set(b),t(0,i=b),t(4,f="waiting")}),n.on("room_joined",({room_id:p,room:b})=>{Y.set(p),K.set(b),t(0,i=b),t(4,f="waiting")}),n.on("room_update",({room:p})=>{K.set(p),t(0,i=p)}),n.on("match_found",({room_id:p,room:b})=>{Y.set(p),K.set(b),t(0,i=b),t(4,f="waiting")}),n.on("match_queued",()=>{t(4,f="queue")}),n.on("game_start",({game_state:p,your_id:b})=>{ge.set(p),be.set(b),je.set(null),Ce("/game")}),n.on("error",({message:p})=>C(p))}),he(()=>{n.off("room_created"),n.off("room_joined"),n.off("room_update"),n.off("match_found"),n.off("match_queued"),n.off("game_start"),n.off("error")});function N(){if(!a.trim()){C("Entre ton nom");return}F.set(a.trim()),n.emit("create_room",{name:a.trim()})}function A(){if(!a.trim()){C("Entre ton nom");return}if(!d.trim()){C("Entre le code de la room");return}F.set(a.trim()),n.emit("join_room",{room_id:d.trim().toUpperCase(),name:a.trim()})}function O(){if(!a.trim()){C("Entre ton nom");return}F.set(a.trim()),n.emit("quick_match",{name:a.trim()})}function U(){n.emit("player_ready",{})}function D(){a=this.value,t(2,a)}const E=p=>p.key==="Enter"&&O(),T=()=>t(6,c=!c);function h(){d=this.value,t(3,d)}const k=p=>p.key==="Enter"&&A(),J=p=>navigator.clipboard.writeText((p==null?void 0:p.room_id)??"");return l.$$.update=()=>{l.$$.dirty&1&&t(1,s=i==null?void 0:i.players.find(p=>p.sid===n.id)),l.$$.dirty&1&&(i==null||i.players.find(p=>p.sid!==n.id)),l.$$.dirty&3&&t(7,r=(i==null?void 0:i.players.length)===2&&!(s!=null&&s.ready))},[i,s,a,d,f,o,c,r,n,N,A,O,U,D,E,T,h,k,J]}class Ue extends ye{constructor(e){super(),ke(this,e,Pe,Le,fe,{})}}export{Ue as component,Be as universal};