diff --git a/app/repository.py b/app/repository.py index dcdc115..9086a97 100644 --- a/app/repository.py +++ b/app/repository.py @@ -499,6 +499,15 @@ class RawPacketRepository: row = await cursor.fetchone() return row["count"] if row else 0 + @staticmethod + async def get_oldest_undecrypted() -> int | None: + """Get timestamp of oldest undecrypted packet, or None if none exist.""" + cursor = await db.conn.execute( + "SELECT MIN(timestamp) as oldest FROM raw_packets WHERE message_id IS NULL" + ) + row = await cursor.fetchone() + return row["oldest"] if row and row["oldest"] is not None else None + @staticmethod async def get_all_undecrypted() -> list[tuple[int, bytes, int]]: """Get all undecrypted packets as (id, data, timestamp) tuples.""" diff --git a/app/routers/health.py b/app/routers/health.py index 67f0e88..7e01b23 100644 --- a/app/routers/health.py +++ b/app/routers/health.py @@ -5,6 +5,7 @@ from pydantic import BaseModel from app.config import settings from app.radio import radio_manager +from app.repository import RawPacketRepository router = APIRouter(tags=["health"]) @@ -14,6 +15,7 @@ class HealthResponse(BaseModel): radio_connected: bool serial_port: str | None database_size_mb: float + oldest_undecrypted_timestamp: int | None @router.get("/health", response_model=HealthResponse) @@ -27,9 +29,17 @@ async def healthcheck() -> HealthResponse: except OSError: pass + # Get oldest undecrypted packet info (gracefully handle if DB not connected) + oldest_ts = None + try: + oldest_ts = await RawPacketRepository.get_oldest_undecrypted() + except RuntimeError: + pass # Database not connected + return HealthResponse( status="ok" if radio_manager.is_connected else "degraded", radio_connected=radio_manager.is_connected, serial_port=radio_manager.port, database_size_mb=db_size_mb, + oldest_undecrypted_timestamp=oldest_ts, ) diff --git a/app/routers/ws.py b/app/routers/ws.py index f41504b..8486d27 100644 --- a/app/routers/ws.py +++ b/app/routers/ws.py @@ -7,7 +7,7 @@ from fastapi import APIRouter, WebSocket, WebSocketDisconnect from app.config import settings from app.radio import radio_manager -from app.repository import ChannelRepository, ContactRepository +from app.repository import ChannelRepository, ContactRepository, RawPacketRepository from app.websocket import ws_manager logger = logging.getLogger(__name__) @@ -29,11 +29,19 @@ async def websocket_endpoint(websocket: WebSocket) -> None: except OSError: pass + # Get oldest undecrypted packet info + oldest_ts = None + try: + oldest_ts = await RawPacketRepository.get_oldest_undecrypted() + except RuntimeError: + pass # Database not connected + health_data = { "status": "ok" if radio_manager.is_connected else "degraded", "radio_connected": radio_manager.is_connected, "serial_port": radio_manager.port, "database_size_mb": db_size_mb, + "oldest_undecrypted_timestamp": oldest_ts, } await ws_manager.send_personal(websocket, "health", health_data) diff --git a/app/websocket.py b/app/websocket.py index ce8c07f..e9df424 100644 --- a/app/websocket.py +++ b/app/websocket.py @@ -88,22 +88,33 @@ def broadcast_error(message: str, details: str | None = None) -> None: def broadcast_health(radio_connected: bool, serial_port: str | None = None) -> None: """Broadcast health status change to all connected clients.""" - # Get database file size in MB - db_size_mb = 0.0 - try: - db_size_bytes = os.path.getsize(settings.database_path) - db_size_mb = round(db_size_bytes / (1024 * 1024), 2) - except OSError: - pass + from app.repository import RawPacketRepository - asyncio.create_task( - ws_manager.broadcast( + async def _broadcast(): + # Get database file size in MB + db_size_mb = 0.0 + try: + db_size_bytes = os.path.getsize(settings.database_path) + db_size_mb = round(db_size_bytes / (1024 * 1024), 2) + except OSError: + pass + + # Get oldest undecrypted packet info + oldest_ts = None + try: + oldest_ts = await RawPacketRepository.get_oldest_undecrypted() + except RuntimeError: + pass # Database not connected + + await ws_manager.broadcast( "health", { "status": "ok" if radio_connected else "degraded", "radio_connected": radio_connected, "serial_port": serial_port, "database_size_mb": db_size_mb, + "oldest_undecrypted_timestamp": oldest_ts, }, ) - ) + + asyncio.create_task(_broadcast()) diff --git a/frontend/CLAUDE.md b/frontend/CLAUDE.md index 7b70051..939b9ee 100644 --- a/frontend/CLAUDE.md +++ b/frontend/CLAUDE.md @@ -45,8 +45,7 @@ frontend/ │ │ ├── MapView.tsx # Leaflet map showing node locations │ │ ├── CrackerPanel.tsx # WebGPU channel key cracker (lazy-loads wordlist) │ │ ├── NewMessageModal.tsx -│ │ ├── ConfigModal.tsx # Radio config + app settings -│ │ └── MaintenanceModal.tsx # Database maintenance (packet cleanup) +│ │ └── SettingsModal.tsx # Unified settings: radio config, identity, serial, database, advertise │ └── test/ │ ├── setup.ts # Test setup (jsdom, matchers) │ ├── messageParser.test.ts diff --git a/frontend/dist/assets/index-C5j7uJOC.css b/frontend/dist/assets/index-C5j7uJOC.css deleted file mode 100644 index 0e391b1..0000000 --- a/frontend/dist/assets/index-C5j7uJOC.css +++ /dev/null @@ -1 +0,0 @@ -.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::-moz-selection{background:transparent}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 10%;--foreground: 0 0% 88%;--card: 0 0% 14%;--card-foreground: 0 0% 88%;--popover: 0 0% 14%;--popover-foreground: 0 0% 88%;--primary: 122 39% 49%;--primary-foreground: 0 0% 100%;--secondary: 0 0% 20%;--secondary-foreground: 0 0% 88%;--muted: 0 0% 20%;--muted-foreground: 0 0% 53%;--accent: 0 0% 20%;--accent-foreground: 0 0% 88%;--destructive: 0 62% 50%;--destructive-foreground: 0 0% 100%;--border: 0 0% 20%;--input: 0 0% 20%;--ring: 122 39% 49%;--radius: .5rem}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-\[50\%\]{left:50%}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-50{z-index:50}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mr-auto{margin-right:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[275px\]{height:275px}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-\[300px\]{max-height:300px}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-\[1px\]{width:1px}.w-\[280px\]{width:280px}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[18px\]{min-width:18px}.max-w-\[85\%\]{max-width:85%}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.self-end{align-self:flex-end}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-\[\#333\]{--tw-border-opacity: 1;border-color:rgb(51 51 51 / var(--tw-border-opacity, 1))}.border-\[\#444\]{--tw-border-opacity: 1;border-color:rgb(68 68 68 / var(--tw-border-opacity, 1))}.border-\[\#6b4500\]{--tw-border-opacity: 1;border-color:rgb(107 69 0 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-destructive\/50{border-color:hsl(var(--destructive) / .5)}.border-green-900\/50{border-color:#14532d80}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:transparent}.border-yellow-500\/50{border-color:#eab30880}.border-l-primary{border-left-color:hsl(var(--primary))}.bg-\[\#1e3a29\]{--tw-bg-opacity: 1;background-color:rgb(30 58 41 / var(--tw-bg-opacity, 1))}.bg-\[\#22c55e\]{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-\[\#252525\]{--tw-bg-opacity: 1;background-color:rgb(37 37 37 / var(--tw-bg-opacity, 1))}.bg-\[\#333\]{--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity, 1))}.bg-\[\#4a3000\]{--tw-bg-opacity: 1;background-color:rgb(74 48 0 / var(--tw-bg-opacity, 1))}.bg-\[\#4ade80\]{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-\[\#4caf50\]{--tw-bg-opacity: 1;background-color:rgb(76 175 80 / var(--tw-bg-opacity, 1))}.bg-\[\#666\]{--tw-bg-opacity: 1;background-color:rgb(102 102 102 / var(--tw-bg-opacity, 1))}.bg-\[\#9ca3af\]{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-\[\#a3e635\]{--tw-bg-opacity: 1;background-color:rgb(163 230 53 / var(--tw-bg-opacity, 1))}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:#000c}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-green-950\/30{background-color:#052e164d}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/20{background-color:hsl(var(--muted-foreground) / .2)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/30{background-color:hsl(var(--primary) / .3)}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:transparent}.bg-yellow-500\/10{background-color:#eab3081a}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pr-8{padding-right:2rem}.pt-0\.5{padding-top:.125rem}.pt-3{padding-top:.75rem}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.text-\[\#888\]{--tw-text-opacity: 1;color:rgb(136 136 136 / var(--tw-text-opacity, 1))}.text-\[\#e0e0e0\]{--tw-text-opacity: 1;color:rgb(224 224 224 / var(--tw-text-opacity, 1))}.text-\[\#ffa500\]{--tw-text-opacity: 1;color:rgb(255 165 0 / var(--tw-text-opacity, 1))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-yellow-200{--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-200{animation-duration:.2s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.running{animation-play-state:running}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-\[\#444\]:hover{--tw-bg-opacity: 1;background-color:rgb(68 68 68 / var(--tw-bg-opacity, 1))}.hover\:bg-\[\#5a3a00\]:hover{--tw-bg-opacity: 1;background-color:rgb(90 58 0 / var(--tw-bg-opacity, 1))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/20:hover{background-color:hsl(var(--destructive) / .2)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-yellow-500\/10:hover{background-color:#eab3081a}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-\[\#333\]:disabled{--tw-bg-opacity: 1;background-color:rgb(51 51 51 / var(--tw-bg-opacity, 1))}.disabled\:text-\[\#666\]:disabled{--tw-text-opacity: 1;color:rgb(102 102 102 / var(--tw-text-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.group.toaster .group-\[\.toaster\]\:border-\[\#4a2a2a\]{--tw-border-opacity: 1;border-color:rgb(74 42 42 / var(--tw-border-opacity, 1))}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-\[\#2a1a1a\]{--tw-bg-opacity: 1;background-color:rgb(42 26 26 / var(--tw-bg-opacity, 1))}.group.toaster .group-\[\.toaster\]\:bg-card{background-color:hsl(var(--card))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-\[\#e8a0a0\]{--tw-text-opacity: 1;color:rgb(232 160 160 / var(--tw-text-opacity, 1))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}@media(min-width:640px){.sm\:max-w-\[400px\]{max-width:400px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}@media(min-width:768px){.md\:block{display:block}.md\:hidden{display:none}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media(min-width:1024px){.lg\:block{display:block}.lg\:inline{display:inline}.lg\:flex{display:flex}.lg\:hidden{display:none}}@media(min-width:1280px){.xl\:flex{display:flex}}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-yellow-500>svg{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&_\.name\]\:font-bold .name{font-weight:700}.\[\&_\.name\]\:text-foreground .name{color:hsl(var(--foreground))}.\[\&_\[data-description\]\]\:text-\[\#b08080\] [data-description]{--tw-text-opacity: 1;color:rgb(176 128 128 / var(--tw-text-opacity, 1))}.\[\&_p\]\:leading-relaxed p{line-height:1.625}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overscroll-behavior:none}@supports not (height: 1dvh){.h-dvh{height:100vh}}[data-state] .sidebar{width:100%;border-right:none}.leaflet-container,.leaflet-pane{z-index:0!important}.leaflet-control{z-index:10!important} diff --git a/frontend/dist/assets/index-CGSJJsxM.js b/frontend/dist/assets/index-CGSJJsxM.js new file mode 100644 index 0000000..96e6846 --- /dev/null +++ b/frontend/dist/assets/index-CGSJJsxM.js @@ -0,0 +1,541 @@ +var bv=Object.defineProperty;var Cv=(r,a,o)=>a in r?bv(r,a,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[a]=o;var Mo=(r,a,o)=>Cv(r,typeof a!="symbol"?a+"":a,o);function Ev(r,a){for(var o=0;ol[f]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))l(f);new MutationObserver(f=>{for(const d of f)if(d.type==="childList")for(const m of d.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&l(m)}).observe(document,{childList:!0,subtree:!0});function o(f){const d={};return f.integrity&&(d.integrity=f.integrity),f.referrerPolicy&&(d.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?d.credentials="include":f.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function l(f){if(f.ep)return;f.ep=!0;const d=o(f);fetch(f.href,d)}})();var yf=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Gs(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function CA(r){if(Object.prototype.hasOwnProperty.call(r,"__esModule"))return r;var a=r.default;if(typeof a=="function"){var o=function l(){return this instanceof l?Reflect.construct(a,arguments,this.constructor):a.apply(this,arguments)};o.prototype=a.prototype}else o={};return Object.defineProperty(o,"__esModule",{value:!0}),Object.keys(r).forEach(function(l){var f=Object.getOwnPropertyDescriptor(r,l);Object.defineProperty(o,l,f.get?f:{enumerable:!0,get:function(){return r[l]}})}),o}var _f={exports:{}},ja={},wf={exports:{}},lt={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var gp;function kv(){if(gp)return lt;gp=1;var r=Symbol.for("react.element"),a=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),m=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),x=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),v=Symbol.iterator;function w(D){return D===null||typeof D!="object"?null:(D=v&&D[v]||D["@@iterator"],typeof D=="function"?D:null)}var P={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},R=Object.assign,C={};function E(D,U,Q){this.props=D,this.context=U,this.refs=C,this.updater=Q||P}E.prototype.isReactComponent={},E.prototype.setState=function(D,U){if(typeof D!="object"&&typeof D!="function"&&D!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,D,U,"setState")},E.prototype.forceUpdate=function(D){this.updater.enqueueForceUpdate(this,D,"forceUpdate")};function T(){}T.prototype=E.prototype;function B(D,U,Q){this.props=D,this.context=U,this.refs=C,this.updater=Q||P}var k=B.prototype=new T;k.constructor=B,R(k,E.prototype),k.isPureReactComponent=!0;var N=Array.isArray,I=Object.prototype.hasOwnProperty,z={current:null},j={key:!0,ref:!0,__self:!0,__source:!0};function H(D,U,Q){var $,he={},fe=null,ke=null;if(U!=null)for($ in U.ref!==void 0&&(ke=U.ref),U.key!==void 0&&(fe=""+U.key),U)I.call(U,$)&&!j.hasOwnProperty($)&&(he[$]=U[$]);var ge=arguments.length-2;if(ge===1)he.children=Q;else if(1>>1,U=G[D];if(0>>1;Df(he,q))fef(ke,he)?(G[D]=ke,G[fe]=q,D=fe):(G[D]=he,G[$]=q,D=$);else if(fef(ke,q))G[D]=ke,G[fe]=q,D=fe;else break e}}return J}function f(G,J){var q=G.sortIndex-J.sortIndex;return q!==0?q:G.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var m=Date,h=m.now();r.unstable_now=function(){return m.now()-h}}var x=[],p=[],y=1,v=null,w=3,P=!1,R=!1,C=!1,E=typeof setTimeout=="function"?setTimeout:null,T=typeof clearTimeout=="function"?clearTimeout:null,B=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function k(G){for(var J=o(p);J!==null;){if(J.callback===null)l(p);else if(J.startTime<=G)l(p),J.sortIndex=J.expirationTime,a(x,J);else break;J=o(p)}}function N(G){if(C=!1,k(G),!R)if(o(x)!==null)R=!0,ae(I);else{var J=o(p);J!==null&&pe(N,J.startTime-G)}}function I(G,J){R=!1,C&&(C=!1,T(H),H=-1),P=!0;var q=w;try{for(k(J),v=o(x);v!==null&&(!(v.expirationTime>J)||G&&!V());){var D=v.callback;if(typeof D=="function"){v.callback=null,w=v.priorityLevel;var U=D(v.expirationTime<=J);J=r.unstable_now(),typeof U=="function"?v.callback=U:v===o(x)&&l(x),k(J)}else l(x);v=o(x)}if(v!==null)var Q=!0;else{var $=o(p);$!==null&&pe(N,$.startTime-J),Q=!1}return Q}finally{v=null,w=q,P=!1}}var z=!1,j=null,H=-1,te=5,Z=-1;function V(){return!(r.unstable_now()-ZG||125D?(G.sortIndex=q,a(p,G),o(x)===null&&G===o(p)&&(C?(T(H),H=-1):C=!0,pe(N,q-D))):(G.sortIndex=U,a(x,G),R||P||(R=!0,ae(I))),G},r.unstable_shouldYield=V,r.unstable_wrapCallback=function(G){var J=w;return function(){var q=w;w=J;try{return G.apply(this,arguments)}finally{w=q}}}})(Ef)),Ef}var wp;function Tv(){return wp||(wp=1,Cf.exports=Pv()),Cf.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var bp;function Dv(){if(bp)return Un;bp=1;var r=o0(),a=Tv();function o(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,s=1;s"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),x=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,y={},v={};function w(e){return x.call(v,e)?!0:x.call(y,e)?!1:p.test(e)?v[e]=!0:(y[e]=!0,!1)}function P(e,n,s,c){if(s!==null&&s.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return c?!1:s!==null?!s.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function R(e,n,s,c){if(n===null||typeof n>"u"||P(e,n,s,c))return!0;if(c)return!1;if(s!==null)switch(s.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function C(e,n,s,c,g,_,M){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=c,this.attributeNamespace=g,this.mustUseProperty=s,this.propertyName=e,this.type=n,this.sanitizeURL=_,this.removeEmptyString=M}var E={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){E[e]=new C(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];E[n]=new C(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){E[e]=new C(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){E[e]=new C(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){E[e]=new C(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){E[e]=new C(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){E[e]=new C(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){E[e]=new C(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){E[e]=new C(e,5,!1,e.toLowerCase(),null,!1,!1)});var T=/[\-:]([a-z])/g;function B(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(T,B);E[n]=new C(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(T,B);E[n]=new C(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(T,B);E[n]=new C(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){E[e]=new C(e,1,!1,e.toLowerCase(),null,!1,!1)}),E.xlinkHref=new C("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){E[e]=new C(e,1,!1,e.toLowerCase(),null,!0,!0)});function k(e,n,s,c){var g=E.hasOwnProperty(n)?E[n]:null;(g!==null?g.type!==0:c||!(2W||g[M]!==_[W]){var Y=` +`+g[M].replace(" at new "," at ");return e.displayName&&Y.includes("")&&(Y=Y.replace("",e.displayName)),Y}while(1<=M&&0<=W);break}}}finally{Q=!1,Error.prepareStackTrace=s}return(e=e?e.displayName||e.name:"")?U(e):""}function he(e){switch(e.tag){case 5:return U(e.type);case 16:return U("Lazy");case 13:return U("Suspense");case 19:return U("SuspenseList");case 0:case 2:case 15:return e=$(e.type,!1),e;case 11:return e=$(e.type.render,!1),e;case 1:return e=$(e.type,!0),e;default:return""}}function fe(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case j:return"Fragment";case z:return"Portal";case te:return"Profiler";case H:return"StrictMode";case X:return"Suspense";case ie:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case V:return(e.displayName||"Context")+".Consumer";case Z:return(e._context.displayName||"Context")+".Provider";case ne:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case de:return n=e.displayName||null,n!==null?n:fe(e.type)||"Memo";case ae:n=e._payload,e=e._init;try{return fe(e(n))}catch{}}return null}function ke(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return fe(n);case 8:return n===H?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function ge(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ze(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function $e(e){var n=Ze(e)?"checked":"value",s=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),c=""+e[n];if(!e.hasOwnProperty(n)&&typeof s<"u"&&typeof s.get=="function"&&typeof s.set=="function"){var g=s.get,_=s.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return g.call(this)},set:function(M){c=""+M,_.call(this,M)}}),Object.defineProperty(e,n,{enumerable:s.enumerable}),{getValue:function(){return c},setValue:function(M){c=""+M},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function wt(e){e._valueTracker||(e._valueTracker=$e(e))}function ft(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var s=n.getValue(),c="";return e&&(c=Ze(e)?e.checked?"true":"false":e.value),e=c,e!==s?(n.setValue(e),!0):!1}function Se(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ue(e,n){var s=n.checked;return q({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s??e._wrapperState.initialChecked})}function at(e,n){var s=n.defaultValue==null?"":n.defaultValue,c=n.checked!=null?n.checked:n.defaultChecked;s=ge(n.value!=null?n.value:s),e._wrapperState={initialChecked:c,initialValue:s,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Dt(e,n){n=n.checked,n!=null&&k(e,"checked",n,!1)}function xt(e,n){Dt(e,n);var s=ge(n.value),c=n.type;if(s!=null)c==="number"?(s===0&&e.value===""||e.value!=s)&&(e.value=""+s):e.value!==""+s&&(e.value=""+s);else if(c==="submit"||c==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?Ke(e,n.type,s):n.hasOwnProperty("defaultValue")&&Ke(e,n.type,ge(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function ot(e,n,s){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var c=n.type;if(!(c!=="submit"&&c!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,s||n===e.value||(e.value=n),e.defaultValue=n}s=e.name,s!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,s!==""&&(e.name=s)}function Ke(e,n,s){(n!=="number"||Se(e.ownerDocument)!==e)&&(s==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+s&&(e.defaultValue=""+s))}var Xe=Array.isArray;function xe(e,n,s,c){if(e=e.options,n){n={};for(var g=0;g"+n.valueOf().toString()+"",n=pn.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Zt(e,n){if(n){var s=e.firstChild;if(s&&s===e.lastChild&&s.nodeType===3){s.nodeValue=n;return}}e.textContent=n}var Bt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Wt=["Webkit","ms","Moz","O"];Object.keys(Bt).forEach(function(e){Wt.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Bt[n]=Bt[e]})});function Wn(e,n,s){return n==null||typeof n=="boolean"||n===""?"":s||typeof n!="number"||n===0||Bt.hasOwnProperty(e)&&Bt[e]?(""+n).trim():n+"px"}function vn(e,n){e=e.style;for(var s in n)if(n.hasOwnProperty(s)){var c=s.indexOf("--")===0,g=Wn(s,n[s],c);s==="float"&&(s="cssFloat"),c?e.setProperty(s,g):e[s]=g}}var Ae=q({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,n){if(n){if(Ae[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(o(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(o(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(o(61))}if(n.style!=null&&typeof n.style!="object")throw Error(o(62))}}function De(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var se=null;function me(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Be=null,je=null,We=null;function Kt(e){if(e=ci(e)){if(typeof Be!="function")throw Error(o(280));var n=e.stateNode;n&&(n=ys(n),Be(e.stateNode,e.type,n))}}function Ve(e){je?We?We.push(e):We=[e]:je=e}function mt(){if(je){var e=je,n=We;if(We=je=null,Kt(e),n)for(e=0;e>>=0,e===0?32:31-(Rt(e)/Xo|0)|0}var vr=64,Bi=4194304;function et(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Pt(e,n){var s=e.pendingLanes;if(s===0)return 0;var c=0,g=e.suspendedLanes,_=e.pingedLanes,M=s&268435455;if(M!==0){var W=M&~g;W!==0?c=et(W):(_&=M,_!==0&&(c=et(_)))}else M=s&~g,M!==0?c=et(M):_!==0&&(c=et(_));if(c===0)return 0;if(n!==0&&n!==c&&(n&g)===0&&(g=c&-c,_=n&-n,g>=_||g===16&&(_&4194240)!==0))return n;if((c&4)!==0&&(c|=s&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=c;0s;s++)n.push(e);return n}function Qn(e,n,s){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-tt(n),e[n]=s}function Gt(e,n){var s=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var c=e.eventTimes;for(e=e.expirationTimes;0=vo),si=" ",Pl=!1;function Li(e,n){switch(e){case"keyup":return Xn.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function pa(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var br=!1;function cd(e,n){switch(e){case"compositionend":return pa(n);case"keypress":return n.which!==32?null:(Pl=!0,si);case"textInput":return e=n.data,e===si&&Pl?null:e;default:return null}}function Or(e,n){if(br)return e==="compositionend"||!Ir&&Li(e,n)?(e=oa(),Mr=Pn=Lr=null,br=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:s,offset:n-e};e=c}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Rl(s)}}function Fl(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Fl(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function ga(){for(var e=window,n=Se();n instanceof e.HTMLIFrameElement;){try{var s=typeof n.contentWindow.location.href=="string"}catch{s=!1}if(s)e=n.contentWindow;else break;n=Se(e.document)}return n}function xa(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function ur(e){var n=ga(),s=e.focusedElem,c=e.selectionRange;if(n!==s&&s&&s.ownerDocument&&Fl(s.ownerDocument.documentElement,s)){if(c!==null&&xa(s)){if(n=c.start,e=c.end,e===void 0&&(e=n),"selectionStart"in s)s.selectionStart=n,s.selectionEnd=Math.min(e,s.value.length);else if(e=(n=s.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var g=s.textContent.length,_=Math.min(c.start,g);c=c.end===void 0?_:Math.min(c.end,g),!e.extend&&_>c&&(g=c,c=_,_=g),g=Aa(s,_);var M=Aa(s,c);g&&M&&(e.rangeCount!==1||e.anchorNode!==g.node||e.anchorOffset!==g.offset||e.focusNode!==M.node||e.focusOffset!==M.offset)&&(n=n.createRange(),n.setStart(g.node,g.offset),e.removeAllRanges(),_>c?(e.addRange(n),e.extend(M.node,M.offset)):(n.setEnd(M.node,M.offset),e.addRange(n)))}}for(n=[],e=s;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;s=document.documentMode,Oi=null,zi=null,wo=null,xs=!1;function Nl(e,n,s){var c=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;xs||Oi==null||Oi!==Se(c)||(c=Oi,"selectionStart"in c&&xa(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),wo&&zr(wo,c)||(wo=c,c=u(zi,"onSelect"),0_s||(e.current=Ad[_s],Ad[_s]=null,_s--)}function Tt(e,n){_s++,Ad[_s]=e.current,e.current=n}var Qi={},bn=Gi(Qi),On=Gi(!1),Eo=Qi;function ws(e,n){var s=e.type.contextTypes;if(!s)return Qi;var c=e.stateNode;if(c&&c.__reactInternalMemoizedUnmaskedChildContext===n)return c.__reactInternalMemoizedMaskedChildContext;var g={},_;for(_ in s)g[_]=n[_];return c&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=g),g}function zn(e){return e=e.childContextTypes,e!=null}function Hl(){Ft(On),Ft(bn)}function z0(e,n,s){if(bn.current!==Qi)throw Error(o(168));Tt(bn,n),Tt(On,s)}function j0(e,n,s){var c=e.stateNode;if(n=n.childContextTypes,typeof c.getChildContext!="function")return s;c=c.getChildContext();for(var g in c)if(!(g in n))throw Error(o(108,ke(e)||"Unknown",g));return q({},s,c)}function Vl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Qi,Eo=bn.current,Tt(bn,e),Tt(On,On.current),!0}function H0(e,n,s){var c=e.stateNode;if(!c)throw Error(o(169));s?(e=j0(e,n,Eo),c.__reactInternalMemoizedMergedChildContext=e,Ft(On),Ft(bn),Tt(bn,e)):Ft(On),Tt(On,s)}var fi=null,Ul=!1,gd=!1;function V0(e){fi===null?fi=[e]:fi.push(e)}function Vx(e){Ul=!0,V0(e)}function Ki(){if(!gd&&fi!==null){gd=!0;var e=0,n=ht;try{var s=fi;for(ht=1;e>=M,g-=M,hi=1<<32-tt(n)+g|s<Je?(dn=Qe,Qe=null):dn=Qe.sibling;var vt=ye(oe,Qe,le[Je],Ee);if(vt===null){Qe===null&&(Qe=dn);break}e&&Qe&&vt.alternate===null&&n(oe,Qe),ee=_(vt,ee,Je),Ge===null?He=vt:Ge.sibling=vt,Ge=vt,Qe=dn}if(Je===le.length)return s(oe,Qe),Mt&&So(oe,Je),He;if(Qe===null){for(;JeJe?(dn=Qe,Qe=null):dn=Qe.sibling;var io=ye(oe,Qe,vt.value,Ee);if(io===null){Qe===null&&(Qe=dn);break}e&&Qe&&io.alternate===null&&n(oe,Qe),ee=_(io,ee,Je),Ge===null?He=io:Ge.sibling=io,Ge=io,Qe=dn}if(vt.done)return s(oe,Qe),Mt&&So(oe,Je),He;if(Qe===null){for(;!vt.done;Je++,vt=le.next())vt=we(oe,vt.value,Ee),vt!==null&&(ee=_(vt,ee,Je),Ge===null?He=vt:Ge.sibling=vt,Ge=vt);return Mt&&So(oe,Je),He}for(Qe=c(oe,Qe);!vt.done;Je++,vt=le.next())vt=Fe(Qe,oe,Je,vt.value,Ee),vt!==null&&(e&&vt.alternate!==null&&Qe.delete(vt.key===null?Je:vt.key),ee=_(vt,ee,Je),Ge===null?He=vt:Ge.sibling=vt,Ge=vt);return e&&Qe.forEach(function(wv){return n(oe,wv)}),Mt&&So(oe,Je),He}function $t(oe,ee,le,Ee){if(typeof le=="object"&&le!==null&&le.type===j&&le.key===null&&(le=le.props.children),typeof le=="object"&&le!==null){switch(le.$$typeof){case I:e:{for(var He=le.key,Ge=ee;Ge!==null;){if(Ge.key===He){if(He=le.type,He===j){if(Ge.tag===7){s(oe,Ge.sibling),ee=g(Ge,le.props.children),ee.return=oe,oe=ee;break e}}else if(Ge.elementType===He||typeof He=="object"&&He!==null&&He.$$typeof===ae&&Q0(He)===Ge.type){s(oe,Ge.sibling),ee=g(Ge,le.props),ee.ref=ka(oe,Ge,le),ee.return=oe,oe=ee;break e}s(oe,Ge);break}else n(oe,Ge);Ge=Ge.sibling}le.type===j?(ee=Lo(le.props.children,oe.mode,Ee,le.key),ee.return=oe,oe=ee):(Ee=gu(le.type,le.key,le.props,null,oe.mode,Ee),Ee.ref=ka(oe,ee,le),Ee.return=oe,oe=Ee)}return M(oe);case z:e:{for(Ge=le.key;ee!==null;){if(ee.key===Ge)if(ee.tag===4&&ee.stateNode.containerInfo===le.containerInfo&&ee.stateNode.implementation===le.implementation){s(oe,ee.sibling),ee=g(ee,le.children||[]),ee.return=oe,oe=ee;break e}else{s(oe,ee);break}else n(oe,ee);ee=ee.sibling}ee=mf(le,oe.mode,Ee),ee.return=oe,oe=ee}return M(oe);case ae:return Ge=le._init,$t(oe,ee,Ge(le._payload),Ee)}if(Xe(le))return Le(oe,ee,le,Ee);if(J(le))return ze(oe,ee,le,Ee);Gl(oe,le)}return typeof le=="string"&&le!==""||typeof le=="number"?(le=""+le,ee!==null&&ee.tag===6?(s(oe,ee.sibling),ee=g(ee,le),ee.return=oe,oe=ee):(s(oe,ee),ee=pf(le,oe.mode,Ee),ee.return=oe,oe=ee),M(oe)):s(oe,ee)}return $t}var ks=K0(!0),$0=K0(!1),Ql=Gi(null),Kl=null,Ss=null,bd=null;function Cd(){bd=Ss=Kl=null}function Ed(e){var n=Ql.current;Ft(Ql),e._currentValue=n}function kd(e,n,s){for(;e!==null;){var c=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,c!==null&&(c.childLanes|=n)):c!==null&&(c.childLanes&n)!==n&&(c.childLanes|=n),e===s)break;e=e.return}}function Bs(e,n){Kl=e,bd=Ss=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(jn=!0),e.firstContext=null)}function pr(e){var n=e._currentValue;if(bd!==e)if(e={context:e,memoizedValue:n,next:null},Ss===null){if(Kl===null)throw Error(o(308));Ss=e,Kl.dependencies={lanes:0,firstContext:e}}else Ss=Ss.next=e;return n}var Bo=null;function Sd(e){Bo===null?Bo=[e]:Bo.push(e)}function Y0(e,n,s,c){var g=n.interleaved;return g===null?(s.next=s,Sd(n)):(s.next=g.next,g.next=s),n.interleaved=s,mi(e,c)}function mi(e,n){e.lanes|=n;var s=e.alternate;for(s!==null&&(s.lanes|=n),s=e,e=e.return;e!==null;)e.childLanes|=n,s=e.alternate,s!==null&&(s.childLanes|=n),s=e,e=e.return;return s.tag===3?s.stateNode:null}var $i=!1;function Bd(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function X0(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ai(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Yi(e,n,s){var c=e.updateQueue;if(c===null)return null;if(c=c.shared,(gt&2)!==0){var g=c.pending;return g===null?n.next=n:(n.next=g.next,g.next=n),c.pending=n,mi(e,s)}return g=c.interleaved,g===null?(n.next=n,Sd(c)):(n.next=g.next,g.next=n),c.interleaved=n,mi(e,s)}function $l(e,n,s){if(n=n.updateQueue,n!==null&&(n=n.shared,(s&4194240)!==0)){var c=n.lanes;c&=e.pendingLanes,s|=c,n.lanes=s,yr(e,s)}}function J0(e,n){var s=e.updateQueue,c=e.alternate;if(c!==null&&(c=c.updateQueue,s===c)){var g=null,_=null;if(s=s.firstBaseUpdate,s!==null){do{var M={eventTime:s.eventTime,lane:s.lane,tag:s.tag,payload:s.payload,callback:s.callback,next:null};_===null?g=_=M:_=_.next=M,s=s.next}while(s!==null);_===null?g=_=n:_=_.next=n}else g=_=n;s={baseState:c.baseState,firstBaseUpdate:g,lastBaseUpdate:_,shared:c.shared,effects:c.effects},e.updateQueue=s;return}e=s.lastBaseUpdate,e===null?s.firstBaseUpdate=n:e.next=n,s.lastBaseUpdate=n}function Yl(e,n,s,c){var g=e.updateQueue;$i=!1;var _=g.firstBaseUpdate,M=g.lastBaseUpdate,W=g.shared.pending;if(W!==null){g.shared.pending=null;var Y=W,ce=Y.next;Y.next=null,M===null?_=ce:M.next=ce,M=Y;var _e=e.alternate;_e!==null&&(_e=_e.updateQueue,W=_e.lastBaseUpdate,W!==M&&(W===null?_e.firstBaseUpdate=ce:W.next=ce,_e.lastBaseUpdate=Y))}if(_!==null){var we=g.baseState;M=0,_e=ce=Y=null,W=_;do{var ye=W.lane,Fe=W.eventTime;if((c&ye)===ye){_e!==null&&(_e=_e.next={eventTime:Fe,lane:0,tag:W.tag,payload:W.payload,callback:W.callback,next:null});e:{var Le=e,ze=W;switch(ye=n,Fe=s,ze.tag){case 1:if(Le=ze.payload,typeof Le=="function"){we=Le.call(Fe,we,ye);break e}we=Le;break e;case 3:Le.flags=Le.flags&-65537|128;case 0:if(Le=ze.payload,ye=typeof Le=="function"?Le.call(Fe,we,ye):Le,ye==null)break e;we=q({},we,ye);break e;case 2:$i=!0}}W.callback!==null&&W.lane!==0&&(e.flags|=64,ye=g.effects,ye===null?g.effects=[W]:ye.push(W))}else Fe={eventTime:Fe,lane:ye,tag:W.tag,payload:W.payload,callback:W.callback,next:null},_e===null?(ce=_e=Fe,Y=we):_e=_e.next=Fe,M|=ye;if(W=W.next,W===null){if(W=g.shared.pending,W===null)break;ye=W,W=ye.next,ye.next=null,g.lastBaseUpdate=ye,g.shared.pending=null}}while(!0);if(_e===null&&(Y=we),g.baseState=Y,g.firstBaseUpdate=ce,g.lastBaseUpdate=_e,n=g.shared.interleaved,n!==null){g=n;do M|=g.lane,g=g.next;while(g!==n)}else _===null&&(g.shared.lanes=0);Do|=M,e.lanes=M,e.memoizedState=we}}function eh(e,n,s){if(e=n.effects,n.effects=null,e!==null)for(n=0;ns?s:4,e(!0);var c=Fd.transition;Fd.transition={};try{e(!1),n()}finally{ht=s,Fd.transition=c}}function vh(){return mr().memoizedState}function qx(e,n,s){var c=to(e);if(s={lane:c,action:s,hasEagerState:!1,eagerState:null,next:null},yh(e))_h(n,s);else if(s=Y0(e,n,s,c),s!==null){var g=Fn();Pr(s,e,c,g),wh(s,n,c)}}function Gx(e,n,s){var c=to(e),g={lane:c,action:s,hasEagerState:!1,eagerState:null,next:null};if(yh(e))_h(n,g);else{var _=e.alternate;if(e.lanes===0&&(_===null||_.lanes===0)&&(_=n.lastRenderedReducer,_!==null))try{var M=n.lastRenderedState,W=_(M,s);if(g.hasEagerState=!0,g.eagerState=W,Jn(W,M)){var Y=n.interleaved;Y===null?(g.next=g,Sd(n)):(g.next=Y.next,Y.next=g),n.interleaved=g;return}}catch{}finally{}s=Y0(e,n,g,c),s!==null&&(g=Fn(),Pr(s,e,c,g),wh(s,n,c))}}function yh(e){var n=e.alternate;return e===Vt||n!==null&&n===Vt}function _h(e,n){Ta=eu=!0;var s=e.pending;s===null?n.next=n:(n.next=s.next,s.next=n),e.pending=n}function wh(e,n,s){if((s&4194240)!==0){var c=n.lanes;c&=e.pendingLanes,s|=c,n.lanes=s,yr(e,s)}}var ru={readContext:pr,useCallback:Cn,useContext:Cn,useEffect:Cn,useImperativeHandle:Cn,useInsertionEffect:Cn,useLayoutEffect:Cn,useMemo:Cn,useReducer:Cn,useRef:Cn,useState:Cn,useDebugValue:Cn,useDeferredValue:Cn,useTransition:Cn,useMutableSource:Cn,useSyncExternalStore:Cn,useId:Cn,unstable_isNewReconciler:!1},Qx={readContext:pr,useCallback:function(e,n){return Zr().memoizedState=[e,n===void 0?null:n],e},useContext:pr,useEffect:dh,useImperativeHandle:function(e,n,s){return s=s!=null?s.concat([e]):null,tu(4194308,4,ph.bind(null,n,e),s)},useLayoutEffect:function(e,n){return tu(4194308,4,e,n)},useInsertionEffect:function(e,n){return tu(4,2,e,n)},useMemo:function(e,n){var s=Zr();return n=n===void 0?null:n,e=e(),s.memoizedState=[e,n],e},useReducer:function(e,n,s){var c=Zr();return n=s!==void 0?s(n):n,c.memoizedState=c.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},c.queue=e,e=e.dispatch=qx.bind(null,Vt,e),[c.memoizedState,e]},useRef:function(e){var n=Zr();return e={current:e},n.memoizedState=e},useState:uh,useDebugValue:jd,useDeferredValue:function(e){return Zr().memoizedState=e},useTransition:function(){var e=uh(!1),n=e[0];return e=Wx.bind(null,e[1]),Zr().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,s){var c=Vt,g=Zr();if(Mt){if(s===void 0)throw Error(o(407));s=s()}else{if(s=n(),cn===null)throw Error(o(349));(To&30)!==0||ih(c,n,s)}g.memoizedState=s;var _={value:s,getSnapshot:n};return g.queue=_,dh(sh.bind(null,c,_,e),[e]),c.flags|=2048,Fa(9,oh.bind(null,c,_,s,n),void 0,null),s},useId:function(){var e=Zr(),n=cn.identifierPrefix;if(Mt){var s=pi,c=hi;s=(c&~(1<<32-tt(c)-1)).toString(32)+s,n=":"+n+"R"+s,s=Da++,0<\/script>",e=e.removeChild(e.firstChild)):typeof c.is=="string"?e=M.createElement(s,{is:c.is}):(e=M.createElement(s),s==="select"&&(M=e,c.multiple?M.multiple=!0:c.size&&(M.size=c.size))):e=M.createElementNS(e,s),e[dr]=n,e[Wi]=c,Vh(e,n,!1,!1),n.stateNode=e;e:{switch(M=De(s,c),s){case"dialog":Et("cancel",e),Et("close",e),g=c;break;case"iframe":case"object":case"embed":Et("load",e),g=c;break;case"video":case"audio":for(g=0;gFs&&(n.flags|=128,c=!0,Na(_,!1),n.lanes=4194304)}else{if(!c)if(e=Xl(M),e!==null){if(n.flags|=128,c=!0,s=e.updateQueue,s!==null&&(n.updateQueue=s,n.flags|=4),Na(_,!0),_.tail===null&&_.tailMode==="hidden"&&!M.alternate&&!Mt)return En(n),null}else 2*zt()-_.renderingStartTime>Fs&&s!==1073741824&&(n.flags|=128,c=!0,Na(_,!1),n.lanes=4194304);_.isBackwards?(M.sibling=n.child,n.child=M):(s=_.last,s!==null?s.sibling=M:n.child=M,_.last=M)}return _.tail!==null?(n=_.tail,_.rendering=n,_.tail=n.sibling,_.renderingStartTime=zt(),n.sibling=null,s=Ht.current,Tt(Ht,c?s&1|2:s&1),n):(En(n),null);case 22:case 23:return df(),c=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==c&&(n.flags|=8192),c&&(n.mode&1)!==0?(rr&1073741824)!==0&&(En(n),n.subtreeFlags&6&&(n.flags|=8192)):En(n),null;case 24:return null;case 25:return null}throw Error(o(156,n.tag))}function nv(e,n){switch(vd(n),n.tag){case 1:return zn(n.type)&&Hl(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Ps(),Ft(On),Ft(bn),Rd(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return Td(n),null;case 13:if(Ft(Ht),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(o(340));Es()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Ft(Ht),null;case 4:return Ps(),null;case 10:return Ed(n.type._context),null;case 22:case 23:return df(),null;case 24:return null;default:return null}}var au=!1,kn=!1,rv=typeof WeakSet=="function"?WeakSet:Set,Ne=null;function Ds(e,n){var s=e.ref;if(s!==null)if(typeof s=="function")try{s(null)}catch(c){Qt(e,n,c)}else s.current=null}function Xd(e,n,s){try{s()}catch(c){Qt(e,n,c)}}var Wh=!1;function iv(e,n){if(Pe=go,e=ga(),xa(e)){if("selectionStart"in e)var s={start:e.selectionStart,end:e.selectionEnd};else e:{s=(s=e.ownerDocument)&&s.defaultView||window;var c=s.getSelection&&s.getSelection();if(c&&c.rangeCount!==0){s=c.anchorNode;var g=c.anchorOffset,_=c.focusNode;c=c.focusOffset;try{s.nodeType,_.nodeType}catch{s=null;break e}var M=0,W=-1,Y=-1,ce=0,_e=0,we=e,ye=null;t:for(;;){for(var Fe;we!==s||g!==0&&we.nodeType!==3||(W=M+g),we!==_||c!==0&&we.nodeType!==3||(Y=M+c),we.nodeType===3&&(M+=we.nodeValue.length),(Fe=we.firstChild)!==null;)ye=we,we=Fe;for(;;){if(we===e)break t;if(ye===s&&++ce===g&&(W=M),ye===_&&++_e===c&&(Y=M),(Fe=we.nextSibling)!==null)break;we=ye,ye=we.parentNode}we=Fe}s=W===-1||Y===-1?null:{start:W,end:Y}}else s=null}s=s||{start:0,end:0}}else s=null;for(qe={focusedElem:e,selectionRange:s},go=!1,Ne=n;Ne!==null;)if(n=Ne,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,Ne=e;else for(;Ne!==null;){n=Ne;try{var Le=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(Le!==null){var ze=Le.memoizedProps,$t=Le.memoizedState,oe=n.stateNode,ee=oe.getSnapshotBeforeUpdate(n.elementType===n.type?ze:kr(n.type,ze),$t);oe.__reactInternalSnapshotBeforeUpdate=ee}break;case 3:var le=n.stateNode.containerInfo;le.nodeType===1?le.textContent="":le.nodeType===9&&le.documentElement&&le.removeChild(le.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(Ee){Qt(n,n.return,Ee)}if(e=n.sibling,e!==null){e.return=n.return,Ne=e;break}Ne=n.return}return Le=Wh,Wh=!1,Le}function La(e,n,s){var c=n.updateQueue;if(c=c!==null?c.lastEffect:null,c!==null){var g=c=c.next;do{if((g.tag&e)===e){var _=g.destroy;g.destroy=void 0,_!==void 0&&Xd(n,s,_)}g=g.next}while(g!==c)}}function lu(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var s=n=n.next;do{if((s.tag&e)===e){var c=s.create;s.destroy=c()}s=s.next}while(s!==n)}}function Jd(e){var n=e.ref;if(n!==null){var s=e.stateNode;switch(e.tag){case 5:e=s;break;default:e=s}typeof n=="function"?n(e):n.current=e}}function qh(e){var n=e.alternate;n!==null&&(e.alternate=null,qh(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[dr],delete n[Wi],delete n[qi],delete n[pd],delete n[md])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Gh(e){return e.tag===5||e.tag===3||e.tag===4}function Qh(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Gh(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ef(e,n,s){var c=e.tag;if(c===5||c===6)e=e.stateNode,n?s.nodeType===8?s.parentNode.insertBefore(e,n):s.insertBefore(e,n):(s.nodeType===8?(n=s.parentNode,n.insertBefore(e,s)):(n=s,n.appendChild(e)),s=s._reactRootContainer,s!=null||n.onclick!==null||(n.onclick=ve));else if(c!==4&&(e=e.child,e!==null))for(ef(e,n,s),e=e.sibling;e!==null;)ef(e,n,s),e=e.sibling}function tf(e,n,s){var c=e.tag;if(c===5||c===6)e=e.stateNode,n?s.insertBefore(e,n):s.appendChild(e);else if(c!==4&&(e=e.child,e!==null))for(tf(e,n,s),e=e.sibling;e!==null;)tf(e,n,s),e=e.sibling}var mn=null,Sr=!1;function Xi(e,n,s){for(s=s.child;s!==null;)Kh(e,n,s),s=s.sibling}function Kh(e,n,s){if(Gn&&typeof Gn.onCommitFiberUnmount=="function")try{Gn.onCommitFiberUnmount(co,s)}catch{}switch(s.tag){case 5:kn||Ds(s,n);case 6:var c=mn,g=Sr;mn=null,Xi(e,n,s),mn=c,Sr=g,mn!==null&&(Sr?(e=mn,s=s.stateNode,e.nodeType===8?e.parentNode.removeChild(s):e.removeChild(s)):mn.removeChild(s.stateNode));break;case 18:mn!==null&&(Sr?(e=mn,s=s.stateNode,e.nodeType===8?Ea(e.parentNode,s):e.nodeType===1&&Ea(e,s),$n(e)):Ea(mn,s.stateNode));break;case 4:c=mn,g=Sr,mn=s.stateNode.containerInfo,Sr=!0,Xi(e,n,s),mn=c,Sr=g;break;case 0:case 11:case 14:case 15:if(!kn&&(c=s.updateQueue,c!==null&&(c=c.lastEffect,c!==null))){g=c=c.next;do{var _=g,M=_.destroy;_=_.tag,M!==void 0&&((_&2)!==0||(_&4)!==0)&&Xd(s,n,M),g=g.next}while(g!==c)}Xi(e,n,s);break;case 1:if(!kn&&(Ds(s,n),c=s.stateNode,typeof c.componentWillUnmount=="function"))try{c.props=s.memoizedProps,c.state=s.memoizedState,c.componentWillUnmount()}catch(W){Qt(s,n,W)}Xi(e,n,s);break;case 21:Xi(e,n,s);break;case 22:s.mode&1?(kn=(c=kn)||s.memoizedState!==null,Xi(e,n,s),kn=c):Xi(e,n,s);break;default:Xi(e,n,s)}}function $h(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var s=e.stateNode;s===null&&(s=e.stateNode=new rv),n.forEach(function(c){var g=hv.bind(null,e,c);s.has(c)||(s.add(c),c.then(g,g))})}}function Br(e,n){var s=n.deletions;if(s!==null)for(var c=0;cg&&(g=M),c&=~_}if(c=g,c=zt()-c,c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3e3>c?3e3:4320>c?4320:1960*sv(c/1960))-c,10e?16:e,eo===null)var c=!1;else{if(e=eo,eo=null,hu=0,(gt&6)!==0)throw Error(o(331));var g=gt;for(gt|=4,Ne=e.current;Ne!==null;){var _=Ne,M=_.child;if((Ne.flags&16)!==0){var W=_.deletions;if(W!==null){for(var Y=0;Yzt()-of?Fo(e,0):rf|=s),Vn(e,n)}function up(e,n){n===0&&((e.mode&1)===0?n=1:(n=Bi,Bi<<=1,(Bi&130023424)===0&&(Bi=4194304)));var s=Fn();e=mi(e,n),e!==null&&(Qn(e,n,s),Vn(e,s))}function fv(e){var n=e.memoizedState,s=0;n!==null&&(s=n.retryLane),up(e,s)}function hv(e,n){var s=0;switch(e.tag){case 13:var c=e.stateNode,g=e.memoizedState;g!==null&&(s=g.retryLane);break;case 19:c=e.stateNode;break;default:throw Error(o(314))}c!==null&&c.delete(n),up(e,s)}var cp;cp=function(e,n,s){if(e!==null)if(e.memoizedProps!==n.pendingProps||On.current)jn=!0;else{if((e.lanes&s)===0&&(n.flags&128)===0)return jn=!1,ev(e,n,s);jn=(e.flags&131072)!==0}else jn=!1,Mt&&(n.flags&1048576)!==0&&U0(n,Wl,n.index);switch(n.lanes=0,n.tag){case 2:var c=n.type;su(e,n),e=n.pendingProps;var g=ws(n,bn.current);Bs(n,s),g=Ld(null,n,c,e,g,s);var _=Md();return n.flags|=1,typeof g=="object"&&g!==null&&typeof g.render=="function"&&g.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,zn(c)?(_=!0,Vl(n)):_=!1,n.memoizedState=g.state!==null&&g.state!==void 0?g.state:null,Bd(n),g.updater=iu,n.stateNode=g,g._reactInternals=n,Vd(n,c,e,s),n=qd(null,n,c,!0,_,s)):(n.tag=0,Mt&&_&&xd(n),Rn(null,n,g,s),n=n.child),n;case 16:c=n.elementType;e:{switch(su(e,n),e=n.pendingProps,g=c._init,c=g(c._payload),n.type=c,g=n.tag=mv(c),e=kr(c,e),g){case 0:n=Wd(null,n,c,e,s);break e;case 1:n=Mh(null,n,c,e,s);break e;case 11:n=Dh(null,n,c,e,s);break e;case 14:n=Rh(null,n,c,kr(c.type,e),s);break e}throw Error(o(306,c,""))}return n;case 0:return c=n.type,g=n.pendingProps,g=n.elementType===c?g:kr(c,g),Wd(e,n,c,g,s);case 1:return c=n.type,g=n.pendingProps,g=n.elementType===c?g:kr(c,g),Mh(e,n,c,g,s);case 3:e:{if(Ih(n),e===null)throw Error(o(387));c=n.pendingProps,_=n.memoizedState,g=_.element,X0(e,n),Yl(n,c,null,s);var M=n.memoizedState;if(c=M.element,_.isDehydrated)if(_={element:c,isDehydrated:!1,cache:M.cache,pendingSuspenseBoundaries:M.pendingSuspenseBoundaries,transitions:M.transitions},n.updateQueue.baseState=_,n.memoizedState=_,n.flags&256){g=Ts(Error(o(423)),n),n=Oh(e,n,c,s,g);break e}else if(c!==g){g=Ts(Error(o(424)),n),n=Oh(e,n,c,s,g);break e}else for(nr=Vr(n.stateNode.containerInfo.firstChild),tr=n,Mt=!0,Er=null,s=$0(n,null,c,s),n.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(Es(),c===g){n=gi(e,n,s);break e}Rn(e,n,c,s)}n=n.child}return n;case 5:return th(n),e===null&&_d(n),c=n.type,g=n.pendingProps,_=e!==null?e.memoizedProps:null,M=g.children,nt(c,g)?M=null:_!==null&&nt(c,_)&&(n.flags|=32),Lh(e,n),Rn(e,n,M,s),n.child;case 6:return e===null&&_d(n),null;case 13:return zh(e,n,s);case 4:return Pd(n,n.stateNode.containerInfo),c=n.pendingProps,e===null?n.child=ks(n,null,c,s):Rn(e,n,c,s),n.child;case 11:return c=n.type,g=n.pendingProps,g=n.elementType===c?g:kr(c,g),Dh(e,n,c,g,s);case 7:return Rn(e,n,n.pendingProps,s),n.child;case 8:return Rn(e,n,n.pendingProps.children,s),n.child;case 12:return Rn(e,n,n.pendingProps.children,s),n.child;case 10:e:{if(c=n.type._context,g=n.pendingProps,_=n.memoizedProps,M=g.value,Tt(Ql,c._currentValue),c._currentValue=M,_!==null)if(Jn(_.value,M)){if(_.children===g.children&&!On.current){n=gi(e,n,s);break e}}else for(_=n.child,_!==null&&(_.return=n);_!==null;){var W=_.dependencies;if(W!==null){M=_.child;for(var Y=W.firstContext;Y!==null;){if(Y.context===c){if(_.tag===1){Y=Ai(-1,s&-s),Y.tag=2;var ce=_.updateQueue;if(ce!==null){ce=ce.shared;var _e=ce.pending;_e===null?Y.next=Y:(Y.next=_e.next,_e.next=Y),ce.pending=Y}}_.lanes|=s,Y=_.alternate,Y!==null&&(Y.lanes|=s),kd(_.return,s,n),W.lanes|=s;break}Y=Y.next}}else if(_.tag===10)M=_.type===n.type?null:_.child;else if(_.tag===18){if(M=_.return,M===null)throw Error(o(341));M.lanes|=s,W=M.alternate,W!==null&&(W.lanes|=s),kd(M,s,n),M=_.sibling}else M=_.child;if(M!==null)M.return=_;else for(M=_;M!==null;){if(M===n){M=null;break}if(_=M.sibling,_!==null){_.return=M.return,M=_;break}M=M.return}_=M}Rn(e,n,g.children,s),n=n.child}return n;case 9:return g=n.type,c=n.pendingProps.children,Bs(n,s),g=pr(g),c=c(g),n.flags|=1,Rn(e,n,c,s),n.child;case 14:return c=n.type,g=kr(c,n.pendingProps),g=kr(c.type,g),Rh(e,n,c,g,s);case 15:return Fh(e,n,n.type,n.pendingProps,s);case 17:return c=n.type,g=n.pendingProps,g=n.elementType===c?g:kr(c,g),su(e,n),n.tag=1,zn(c)?(e=!0,Vl(n)):e=!1,Bs(n,s),Ch(n,c,g),Vd(n,c,g,s),qd(null,n,c,!0,e,s);case 19:return Hh(e,n,s);case 22:return Nh(e,n,s)}throw Error(o(156,n.tag))};function dp(e,n){return Al(e,n)}function pv(e,n,s,c){this.tag=e,this.key=s,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=c,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function gr(e,n,s,c){return new pv(e,n,s,c)}function hf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function mv(e){if(typeof e=="function")return hf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ne)return 11;if(e===de)return 14}return 2}function ro(e,n){var s=e.alternate;return s===null?(s=gr(e.tag,n,e.key,e.mode),s.elementType=e.elementType,s.type=e.type,s.stateNode=e.stateNode,s.alternate=e,e.alternate=s):(s.pendingProps=n,s.type=e.type,s.flags=0,s.subtreeFlags=0,s.deletions=null),s.flags=e.flags&14680064,s.childLanes=e.childLanes,s.lanes=e.lanes,s.child=e.child,s.memoizedProps=e.memoizedProps,s.memoizedState=e.memoizedState,s.updateQueue=e.updateQueue,n=e.dependencies,s.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},s.sibling=e.sibling,s.index=e.index,s.ref=e.ref,s}function gu(e,n,s,c,g,_){var M=2;if(c=e,typeof e=="function")hf(e)&&(M=1);else if(typeof e=="string")M=5;else e:switch(e){case j:return Lo(s.children,g,_,n);case H:M=8,g|=8;break;case te:return e=gr(12,s,n,g|2),e.elementType=te,e.lanes=_,e;case X:return e=gr(13,s,n,g),e.elementType=X,e.lanes=_,e;case ie:return e=gr(19,s,n,g),e.elementType=ie,e.lanes=_,e;case pe:return xu(s,g,_,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Z:M=10;break e;case V:M=9;break e;case ne:M=11;break e;case de:M=14;break e;case ae:M=16,c=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return n=gr(M,s,n,g),n.elementType=e,n.type=c,n.lanes=_,n}function Lo(e,n,s,c){return e=gr(7,e,c,n),e.lanes=s,e}function xu(e,n,s,c){return e=gr(22,e,c,n),e.elementType=pe,e.lanes=s,e.stateNode={isHidden:!1},e}function pf(e,n,s){return e=gr(6,e,null,n),e.lanes=s,e}function mf(e,n,s){return n=gr(4,e.children!==null?e.children:[],e.key,n),n.lanes=s,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Av(e,n,s,c,g){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Pi(0),this.expirationTimes=Pi(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Pi(0),this.identifierPrefix=c,this.onRecoverableError=g,this.mutableSourceEagerHydrationData=null}function Af(e,n,s,c,g,_,M,W,Y){return e=new Av(e,n,s,W,Y),n===1?(n=1,_===!0&&(n|=8)):n=0,_=gr(3,null,null,n),e.current=_,_.stateNode=e,_.memoizedState={element:c,isDehydrated:s,cache:null,transitions:null,pendingSuspenseBoundaries:null},Bd(_),e}function gv(e,n,s){var c=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(a){console.error(a)}}return r(),bf.exports=Dv(),bf.exports}var Ep;function Rv(){if(Ep)return Eu;Ep=1;var r=EA();return Eu.createRoot=r.createRoot,Eu.hydrateRoot=r.hydrateRoot,Eu}var Fv=Rv();const Nv="/api",a0=100;async function yt(r,a){const o=await fetch(`${Nv}${r}`,{...a,headers:{"Content-Type":"application/json",...a==null?void 0:a.headers}});if(!o.ok){const l=await o.text();throw new Error(l||o.statusText)}return o.json()}const ct={getHealth:()=>yt("/health"),getRadioConfig:()=>yt("/radio/config"),updateRadioConfig:r=>yt("/radio/config",{method:"PATCH",body:JSON.stringify(r)}),setPrivateKey:r=>yt("/radio/private-key",{method:"PUT",body:JSON.stringify({private_key:r})}),sendAdvertisement:(r=!0)=>yt(`/radio/advertise?flood=${r}`,{method:"POST"}),rebootRadio:()=>yt("/radio/reboot",{method:"POST"}),reconnectRadio:()=>yt("/radio/reconnect",{method:"POST"}),getContacts:(r=100,a=0)=>yt(`/contacts?limit=${r}&offset=${a}`),getContact:r=>yt(`/contacts/${r}`),syncContacts:()=>yt("/contacts/sync",{method:"POST"}),addContactToRadio:r=>yt(`/contacts/${r}/add-to-radio`,{method:"POST"}),removeContactFromRadio:r=>yt(`/contacts/${r}/remove-from-radio`,{method:"POST"}),deleteContact:r=>yt(`/contacts/${r}`,{method:"DELETE"}),markContactRead:r=>yt(`/contacts/${r}/mark-read`,{method:"POST"}),requestTelemetry:(r,a)=>yt(`/contacts/${r}/telemetry`,{method:"POST",body:JSON.stringify({password:a})}),sendRepeaterCommand:(r,a)=>yt(`/contacts/${r}/command`,{method:"POST",body:JSON.stringify({command:a})}),getChannels:()=>yt("/channels"),getChannel:r=>yt(`/channels/${r}`),createChannel:(r,a)=>yt("/channels",{method:"POST",body:JSON.stringify({name:r,key:a})}),syncChannels:()=>yt("/channels/sync",{method:"POST"}),deleteChannel:r=>yt(`/channels/${r}`,{method:"DELETE"}),markChannelRead:r=>yt(`/channels/${r}/mark-read`,{method:"POST"}),getMessages:r=>{const a=new URLSearchParams;r!=null&&r.limit&&a.set("limit",r.limit.toString()),r!=null&&r.offset&&a.set("offset",r.offset.toString()),r!=null&&r.type&&a.set("type",r.type),r!=null&&r.conversation_key&&a.set("conversation_key",r.conversation_key);const o=a.toString();return yt(`/messages${o?`?${o}`:""}`)},getMessagesBulk:(r,a=a0)=>yt(`/messages/bulk?limit_per_conversation=${a}`,{method:"POST",body:JSON.stringify(r)}),sendDirectMessage:(r,a)=>yt("/messages/direct",{method:"POST",body:JSON.stringify({destination:r,text:a})}),sendChannelMessage:(r,a)=>yt("/messages/channel",{method:"POST",body:JSON.stringify({channel_key:r,text:a})}),getUndecryptedPacketCount:()=>yt("/packets/undecrypted/count"),decryptHistoricalPackets:r=>yt("/packets/decrypt/historical",{method:"POST",body:JSON.stringify(r)}),runMaintenance:r=>yt("/packets/maintenance",{method:"POST",body:JSON.stringify({prune_undecrypted_days:r})}),markAllRead:()=>yt("/read-state/mark-all-read",{method:"POST"}),getSettings:()=>yt("/settings"),updateSettings:r=>yt("/settings",{method:"PATCH",body:JSON.stringify(r)})};function Lv(r){const a=F.useRef(null),o=F.useRef(null),[l,f]=F.useState(!1),d=F.useCallback(()=>{const m=window.location.protocol==="https:"?"wss:":"ws:",x=window.location.port==="5173"?"ws://localhost:8000/api/ws":`${m}//${window.location.host}/api/ws`,p=new WebSocket(x);p.onopen=()=>{console.log("WebSocket connected"),f(!0)},p.onclose=()=>{console.log("WebSocket disconnected"),f(!1),a.current=null,o.current=window.setTimeout(()=>{console.log("Attempting WebSocket reconnect..."),d()},3e3)},p.onerror=y=>{console.error("WebSocket error:",y)},p.onmessage=y=>{var v,w,P,R,C,E,T,B;try{const k=JSON.parse(y.data);switch(k.type){case"health":(v=r.onHealth)==null||v.call(r,k.data);break;case"contacts":(w=r.onContacts)==null||w.call(r,k.data);break;case"channels":(P=r.onChannels)==null||P.call(r,k.data);break;case"message":(R=r.onMessage)==null||R.call(r,k.data);break;case"contact":(C=r.onContact)==null||C.call(r,k.data);break;case"raw_packet":(E=r.onRawPacket)==null||E.call(r,k.data);break;case"message_acked":{const N=k.data;(T=r.onMessageAcked)==null||T.call(r,N.message_id,N.ack_count);break}case"error":(B=r.onError)==null||B.call(r,k.data);break;case"pong":break;default:console.log("Unknown WebSocket message type:",k.type)}}catch(k){console.error("Failed to parse WebSocket message:",k)}},a.current=p},[r]);return F.useEffect(()=>{d();const m=setInterval(()=>{var h;((h=a.current)==null?void 0:h.readyState)===WebSocket.OPEN&&a.current.send("ping")},3e4);return()=>{clearInterval(m),o.current&&clearTimeout(o.current),a.current&&a.current.close()}},[d]),{connected:l}}const l0=2;function Mu(r){if(r<60)return`${r}s`;const a=Math.floor(r/86400),o=Math.floor(r%86400/3600),l=Math.floor(r%3600/60);return a>0?o>0&&l>0?`${a}d${o}h${l}m`:o>0?`${a}d${o}h`:l>0?`${a}d${l}m`:`${a}d`:o>0?l>0?`${o}h${l}m`:`${o}h`:`${l}m`}function Mv(r){return["Telemetry",`Battery Voltage: ${r.battery_volts.toFixed(3)}V`,`Uptime: ${Mu(r.uptime_seconds)}`,`TX Airtime: ${Mu(r.airtime_seconds)}`,`RX Airtime: ${Mu(r.rx_airtime_seconds)}`,"",`Noise Floor: ${r.noise_floor_dbm} dBm`,`Last RSSI: ${r.last_rssi_dbm} dBm`,`Last SNR: ${r.last_snr_db.toFixed(1)} dB`,"",`Packets: ${r.packets_received.toLocaleString()} rx / ${r.packets_sent.toLocaleString()} tx`,`Flood: ${r.recv_flood.toLocaleString()} rx / ${r.sent_flood.toLocaleString()} tx`,`Direct: ${r.recv_direct.toLocaleString()} rx / ${r.sent_direct.toLocaleString()} tx`,`Duplicates: ${r.flood_dups.toLocaleString()} flood / ${r.direct_dups.toLocaleString()} direct`,"",`TX Queue: ${r.tx_queue_len}`,`Debug Flags: ${r.full_events}`].join(` +`)}function Iv(r){if(r.length===0)return`Neighbors +No neighbors reported`;const a=[...r].sort((l,f)=>f.snr-l.snr),o=[`Neighbors (${a.length})`];for(const l of a){const f=l.name||l.pubkey_prefix,d=l.snr>=0?`+${l.snr.toFixed(1)}`:l.snr.toFixed(1);o.push(`${f}, ${d} dB [${Mu(l.last_heard_seconds)} ago]`)}return o.join(` +`)}function Ov(r){if(r.length===0)return`ACL +No ACL entries`;const a=[`ACL (${r.length})`];for(const o of r){const l=o.name||o.pubkey_prefix;a.push(`${l}: ${o.permission_name}`)}return a.join(` +`)}function Io(r,a,o,l=0){const f=Math.floor(Date.now()/1e3);return{id:-Date.now()-l,type:"PRIV",conversation_key:r,text:a,sender_timestamp:f,received_at:f,path_len:null,txt_type:0,signature:null,outgoing:o,acked:1}}function zv(r,a,o){const[l,f]=F.useState(!1);F.useEffect(()=>{f(!1)},[r==null?void 0:r.id]);const d=F.useMemo(()=>{if(!r||r.type!=="contact")return!1;const x=a.find(p=>p.public_key===r.id);return(x==null?void 0:x.type)===l0},[r,a]),m=F.useCallback(async x=>{if(!(!r||r.type!=="contact")&&d)try{const p=await ct.requestTelemetry(r.id,x),y=Io(r.id,Mv(p),!1,0),v=Io(r.id,Iv(p.neighbors),!1,1),w=Io(r.id,Ov(p.acl),!1,2);o(P=>[...P,y,v,w]),f(!0)}catch(p){const y=Io(r.id,`Telemetry request failed: ${p instanceof Error?p.message:"Unknown error"}`,!1,0);o(v=>[...v,y])}},[r,d,o]),h=F.useCallback(async x=>{if(!r||r.type!=="contact"||!d||!l)return;const p=Io(r.id,`> ${x}`,!0,0);o(y=>[...y,p]);try{const y=await ct.sendRepeaterCommand(r.id,x),v=Io(r.id,y.response,!1,1);y.sender_timestamp&&(v.sender_timestamp=y.sender_timestamp),o(w=>[...w,v])}catch(y){const v=Io(r.id,`Command failed: ${y instanceof Error?y.message:"Unknown error"}`,!1,1);o(w=>[...w,v])}},[r,d,l,o]);return{repeaterLoggedIn:l,activeContactIsRepeater:d,handleTelemetryRequest:m,handleRepeaterCommand:h}}const jv=12;function Zs(r){return r.slice(0,jv)}function kA(r,a){return!r||!a?!1:Zs(r)===Zs(a)}function bi(r,a){return r||Zs(a)}const Uf="remoteterm-lastMessageTime";function SA(r){try{const a=localStorage.getItem(r);return a?JSON.parse(a):{}}catch{return{}}}function Hv(r,a){try{localStorage.setItem(r,JSON.stringify(a))}catch{}}function kp(){return SA(Uf)}function kf(r,a){const o=SA(Uf);return(!o[r]||a>o[r])&&(o[r]=a,Hv(Uf,o)),o}function Dr(r,a){return r==="channel"?`channel-${a}`:`contact-${Zs(a)}`}function Sp(r,a){if(!a)return!1;const o=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`@\\[${o}\\]`,"i").test(r)}function Vv(r,a,o,l=null){const[f,d]=F.useState({}),[m,h]=F.useState({}),[x,p]=F.useState(kp),y=F.useRef(l);F.useEffect(()=>{y.current=l},[l]);const v=F.useRef(new Set),w=F.useRef(new Set);F.useEffect(()=>{const T=r.filter(N=>!v.current.has(N.key)),B=a.filter(N=>N.public_key&&!w.current.has(N.public_key));if(T.length===0&&B.length===0)return;T.forEach(N=>v.current.add(N.key)),B.forEach(N=>w.current.add(N.public_key)),(async()=>{const N=[...T.map(I=>({type:"CHAN",conversation_key:I.key})),...B.map(I=>({type:"PRIV",conversation_key:I.public_key}))];if(N.length!==0)try{const I=await ct.getMessagesBulk(N,a0),z={},j={},H={};for(const te of T){const Z=I[`CHAN:${te.key}`]||[];if(Z.length>0){const V=Dr("channel",te.key),ne=te.last_read_at||0,X=Z.filter(de=>!de.outgoing&&de.received_at>ne);X.length>0&&(z[V]=X.length,X.some(de=>Sp(de.text,y.current))&&(j[V]=!0));const ie=Math.max(...Z.map(de=>de.received_at));H[V]=ie,kf(V,ie)}}for(const te of B){const Z=I[`PRIV:${te.public_key}`]||[];if(Z.length>0){const V=Dr("contact",te.public_key),ne=te.last_read_at||0,X=Z.filter(de=>!de.outgoing&&de.received_at>ne);X.length>0&&(z[V]=X.length,X.some(de=>Sp(de.text,y.current))&&(j[V]=!0));const ie=Math.max(...Z.map(de=>de.received_at));H[V]=ie,kf(V,ie)}}Object.keys(z).length>0&&d(te=>({...te,...z})),Object.keys(j).length>0&&h(te=>({...te,...j})),p(kp())}catch(I){console.error("Failed to fetch messages bulk:",I)}})()},[r,a]),F.useEffect(()=>{if(o&&o.type!=="raw"&&o.type!=="map"){const T=Dr(o.type,o.id);d(B=>{if(B[T]){const k={...B};return delete k[T],k}return B}),h(B=>{if(B[T]){const k={...B};return delete k[T],k}return B}),o.type==="channel"?ct.markChannelRead(o.id).catch(B=>{console.error("Failed to mark channel as read on server:",B)}):o.type==="contact"&&ct.markContactRead(o.id).catch(B=>{console.error("Failed to mark contact as read on server:",B)})}},[o]);const P=F.useCallback((T,B)=>{d(k=>({...k,[T]:(k[T]||0)+1})),B&&h(k=>({...k,[T]:!0}))},[]),R=F.useCallback(()=>{d({}),h({}),ct.markAllRead().catch(T=>{console.error("Failed to mark all as read on server:",T)})},[]),C=F.useCallback(T=>{if(T.type==="raw"||T.type==="map")return;const B=Dr(T.type,T.id);d(k=>{if(k[B]){const N={...k};return delete N[B],N}return k}),h(k=>{if(k[B]){const N={...k};return delete N[B],N}return k}),T.type==="channel"?ct.markChannelRead(T.id).catch(k=>{console.error("Failed to mark channel as read on server:",k)}):T.type==="contact"&&ct.markContactRead(T.id).catch(k=>{console.error("Failed to mark contact as read on server:",k)})},[]),E=F.useCallback(T=>{let B=null;if(T.type==="CHAN"&&T.conversation_key?B=Dr("channel",T.conversation_key):T.type==="PRIV"&&T.conversation_key&&(B=Dr("contact",T.conversation_key)),B){const k=T.received_at||Math.floor(Date.now()/1e3),N=kf(B,k);p(N)}},[]);return{unreadCounts:f,mentions:m,lastMessageTimes:x,incrementUnread:P,markAllRead:R,markConversationRead:C,trackNewMessage:E}}var u0=EA();const BA=Gs(u0);function Uv(r){if(typeof document>"u")return;let a=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",a.appendChild(o),o.styleSheet?o.styleSheet.cssText=r:o.appendChild(document.createTextNode(r))}const Zv=r=>{switch(r){case"success":return Gv;case"info":return Kv;case"warning":return Qv;case"error":return $v;default:return null}},Wv=Array(12).fill(0),qv=({visible:r,className:a})=>Ce.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":r},Ce.createElement("div",{className:"sonner-spinner"},Wv.map((o,l)=>Ce.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${l}`})))),Gv=Ce.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Ce.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),Qv=Ce.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},Ce.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),Kv=Ce.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Ce.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),$v=Ce.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Ce.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),Yv=Ce.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},Ce.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),Ce.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),Xv=()=>{const[r,a]=Ce.useState(document.hidden);return Ce.useEffect(()=>{const o=()=>{a(document.hidden)};return document.addEventListener("visibilitychange",o),()=>window.removeEventListener("visibilitychange",o)},[]),r};let Zf=1;class Jv{constructor(){this.subscribe=a=>(this.subscribers.push(a),()=>{const o=this.subscribers.indexOf(a);this.subscribers.splice(o,1)}),this.publish=a=>{this.subscribers.forEach(o=>o(a))},this.addToast=a=>{this.publish(a),this.toasts=[...this.toasts,a]},this.create=a=>{var o;const{message:l,...f}=a,d=typeof(a==null?void 0:a.id)=="number"||((o=a.id)==null?void 0:o.length)>0?a.id:Zf++,m=this.toasts.find(x=>x.id===d),h=a.dismissible===void 0?!0:a.dismissible;return this.dismissedToasts.has(d)&&this.dismissedToasts.delete(d),m?this.toasts=this.toasts.map(x=>x.id===d?(this.publish({...x,...a,id:d,title:l}),{...x,...a,id:d,dismissible:h,title:l}):x):this.addToast({title:l,...f,dismissible:h,id:d}),d},this.dismiss=a=>(a?(this.dismissedToasts.add(a),requestAnimationFrame(()=>this.subscribers.forEach(o=>o({id:a,dismiss:!0})))):this.toasts.forEach(o=>{this.subscribers.forEach(l=>l({id:o.id,dismiss:!0}))}),a),this.message=(a,o)=>this.create({...o,message:a}),this.error=(a,o)=>this.create({...o,message:a,type:"error"}),this.success=(a,o)=>this.create({...o,type:"success",message:a}),this.info=(a,o)=>this.create({...o,type:"info",message:a}),this.warning=(a,o)=>this.create({...o,type:"warning",message:a}),this.loading=(a,o)=>this.create({...o,type:"loading",message:a}),this.promise=(a,o)=>{if(!o)return;let l;o.loading!==void 0&&(l=this.create({...o,promise:a,type:"loading",message:o.loading,description:typeof o.description!="function"?o.description:void 0}));const f=Promise.resolve(a instanceof Function?a():a);let d=l!==void 0,m;const h=f.then(async p=>{if(m=["resolve",p],Ce.isValidElement(p))d=!1,this.create({id:l,type:"default",message:p});else if(ty(p)&&!p.ok){d=!1;const v=typeof o.error=="function"?await o.error(`HTTP error! status: ${p.status}`):o.error,w=typeof o.description=="function"?await o.description(`HTTP error! status: ${p.status}`):o.description,R=typeof v=="object"&&!Ce.isValidElement(v)?v:{message:v};this.create({id:l,type:"error",description:w,...R})}else if(p instanceof Error){d=!1;const v=typeof o.error=="function"?await o.error(p):o.error,w=typeof o.description=="function"?await o.description(p):o.description,R=typeof v=="object"&&!Ce.isValidElement(v)?v:{message:v};this.create({id:l,type:"error",description:w,...R})}else if(o.success!==void 0){d=!1;const v=typeof o.success=="function"?await o.success(p):o.success,w=typeof o.description=="function"?await o.description(p):o.description,R=typeof v=="object"&&!Ce.isValidElement(v)?v:{message:v};this.create({id:l,type:"success",description:w,...R})}}).catch(async p=>{if(m=["reject",p],o.error!==void 0){d=!1;const y=typeof o.error=="function"?await o.error(p):o.error,v=typeof o.description=="function"?await o.description(p):o.description,P=typeof y=="object"&&!Ce.isValidElement(y)?y:{message:y};this.create({id:l,type:"error",description:v,...P})}}).finally(()=>{d&&(this.dismiss(l),l=void 0),o.finally==null||o.finally.call(o)}),x=()=>new Promise((p,y)=>h.then(()=>m[0]==="reject"?y(m[1]):p(m[1])).catch(y));return typeof l!="string"&&typeof l!="number"?{unwrap:x}:Object.assign(l,{unwrap:x})},this.custom=(a,o)=>{const l=(o==null?void 0:o.id)||Zf++;return this.create({jsx:a(l),id:l,...o}),l},this.getActiveToasts=()=>this.toasts.filter(a=>!this.dismissedToasts.has(a.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Zn=new Jv,ey=(r,a)=>{const o=(a==null?void 0:a.id)||Zf++;return Zn.addToast({title:r,...a,id:o}),o},ty=r=>r&&typeof r=="object"&&"ok"in r&&typeof r.ok=="boolean"&&"status"in r&&typeof r.status=="number",ny=ey,ry=()=>Zn.toasts,iy=()=>Zn.getActiveToasts(),kt=Object.assign(ny,{success:Zn.success,info:Zn.info,warning:Zn.warning,error:Zn.error,custom:Zn.custom,message:Zn.message,promise:Zn.promise,dismiss:Zn.dismiss,loading:Zn.loading},{getHistory:ry,getToasts:iy});Uv("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function ku(r){return r.label!==void 0}const oy=3,sy="24px",ay="16px",Bp=4e3,ly=356,uy=14,cy=45,dy=200;function qr(...r){return r.filter(Boolean).join(" ")}function fy(r){const[a,o]=r.split("-"),l=[];return a&&l.push(a),o&&l.push(o),l}const hy=r=>{var a,o,l,f,d,m,h,x,p;const{invert:y,toast:v,unstyled:w,interacting:P,setHeights:R,visibleToasts:C,heights:E,index:T,toasts:B,expanded:k,removeToast:N,defaultRichColors:I,closeButton:z,style:j,cancelButtonStyle:H,actionButtonStyle:te,className:Z="",descriptionClassName:V="",duration:ne,position:X,gap:ie,expandByDefault:de,classNames:ae,icons:pe,closeButtonAriaLabel:G="Close toast"}=r,[J,q]=Ce.useState(null),[D,U]=Ce.useState(null),[Q,$]=Ce.useState(!1),[he,fe]=Ce.useState(!1),[ke,ge]=Ce.useState(!1),[Ze,$e]=Ce.useState(!1),[wt,ft]=Ce.useState(!1),[Se,Ue]=Ce.useState(0),[at,Dt]=Ce.useState(0),xt=Ce.useRef(v.duration||ne||Bp),ot=Ce.useRef(null),Ke=Ce.useRef(null),Xe=T===0,xe=T+1<=C,Te=v.type,pt=v.dismissible!==!1,Ut=v.className||"",en=v.descriptionClassName||"",Ot=Ce.useMemo(()=>E.findIndex(Ve=>Ve.toastId===v.id)||0,[E,v.id]),tn=Ce.useMemo(()=>{var Ve;return(Ve=v.closeButton)!=null?Ve:z},[v.closeButton,z]),pn=Ce.useMemo(()=>v.duration||ne||Bp,[v.duration,ne]),Bn=Ce.useRef(0),Zt=Ce.useRef(0),Bt=Ce.useRef(0),Wt=Ce.useRef(null),[Wn,vn]=X.split("-"),Ae=Ce.useMemo(()=>E.reduce((Ve,mt,St)=>St>=Ot?Ve:Ve+mt.height,0),[E,Ot]),be=Xv(),De=v.invert||y,se=Te==="loading";Zt.current=Ce.useMemo(()=>Ot*ie+Ae,[Ot,Ae]),Ce.useEffect(()=>{xt.current=pn},[pn]),Ce.useEffect(()=>{$(!0)},[]),Ce.useEffect(()=>{const Ve=Ke.current;if(Ve){const mt=Ve.getBoundingClientRect().height;return Dt(mt),R(St=>[{toastId:v.id,height:mt,position:v.position},...St]),()=>R(St=>St.filter(Nt=>Nt.toastId!==v.id))}},[R,v.id]),Ce.useLayoutEffect(()=>{if(!Q)return;const Ve=Ke.current,mt=Ve.style.height;Ve.style.height="auto";const St=Ve.getBoundingClientRect().height;Ve.style.height=mt,Dt(St),R(Nt=>Nt.find(it=>it.toastId===v.id)?Nt.map(it=>it.toastId===v.id?{...it,height:St}:it):[{toastId:v.id,height:St,position:v.position},...Nt])},[Q,v.title,v.description,R,v.id,v.jsx,v.action,v.cancel]);const me=Ce.useCallback(()=>{fe(!0),Ue(Zt.current),R(Ve=>Ve.filter(mt=>mt.toastId!==v.id)),setTimeout(()=>{N(v)},dy)},[v,N,R,Zt]);Ce.useEffect(()=>{if(v.promise&&Te==="loading"||v.duration===1/0||v.type==="loading")return;let Ve;return k||P||be?(()=>{if(Bt.current{xt.current!==1/0&&(Bn.current=new Date().getTime(),Ve=setTimeout(()=>{v.onAutoClose==null||v.onAutoClose.call(v,v),me()},xt.current))})(),()=>clearTimeout(Ve)},[k,P,v,Te,be,me]),Ce.useEffect(()=>{v.delete&&(me(),v.onDismiss==null||v.onDismiss.call(v,v))},[me,v.delete]);function Be(){var Ve;if(pe!=null&&pe.loading){var mt;return Ce.createElement("div",{className:qr(ae==null?void 0:ae.loader,v==null||(mt=v.classNames)==null?void 0:mt.loader,"sonner-loader"),"data-visible":Te==="loading"},pe.loading)}return Ce.createElement(qv,{className:qr(ae==null?void 0:ae.loader,v==null||(Ve=v.classNames)==null?void 0:Ve.loader),visible:Te==="loading"})}const je=v.icon||(pe==null?void 0:pe[Te])||Zv(Te);var We,Kt;return Ce.createElement("li",{tabIndex:0,ref:Ke,className:qr(Z,Ut,ae==null?void 0:ae.toast,v==null||(a=v.classNames)==null?void 0:a.toast,ae==null?void 0:ae.default,ae==null?void 0:ae[Te],v==null||(o=v.classNames)==null?void 0:o[Te]),"data-sonner-toast":"","data-rich-colors":(We=v.richColors)!=null?We:I,"data-styled":!(v.jsx||v.unstyled||w),"data-mounted":Q,"data-promise":!!v.promise,"data-swiped":wt,"data-removed":he,"data-visible":xe,"data-y-position":Wn,"data-x-position":vn,"data-index":T,"data-front":Xe,"data-swiping":ke,"data-dismissible":pt,"data-type":Te,"data-invert":De,"data-swipe-out":Ze,"data-swipe-direction":D,"data-expanded":!!(k||de&&Q),"data-testid":v.testId,style:{"--index":T,"--toasts-before":T,"--z-index":B.length-T,"--offset":`${he?Se:Zt.current}px`,"--initial-height":de?"auto":`${at}px`,...j,...v.style},onDragEnd:()=>{ge(!1),q(null),Wt.current=null},onPointerDown:Ve=>{Ve.button!==2&&(se||!pt||(ot.current=new Date,Ue(Zt.current),Ve.target.setPointerCapture(Ve.pointerId),Ve.target.tagName!=="BUTTON"&&(ge(!0),Wt.current={x:Ve.clientX,y:Ve.clientY})))},onPointerUp:()=>{var Ve,mt,St;if(Ze||!pt)return;Wt.current=null;const Nt=Number(((Ve=Ke.current)==null?void 0:Ve.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Ln=Number(((mt=Ke.current)==null?void 0:mt.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),it=new Date().getTime()-((St=ot.current)==null?void 0:St.getTime()),bt=J==="x"?Nt:Ln,qn=Math.abs(bt)/it;if(Math.abs(bt)>=cy||qn>.11){Ue(Zt.current),v.onDismiss==null||v.onDismiss.call(v,v),U(J==="x"?Nt>0?"right":"left":Ln>0?"down":"up"),me(),$e(!0);return}else{var At,Lt;(At=Ke.current)==null||At.style.setProperty("--swipe-amount-x","0px"),(Lt=Ke.current)==null||Lt.style.setProperty("--swipe-amount-y","0px")}ft(!1),ge(!1),q(null)},onPointerMove:Ve=>{var mt,St,Nt;if(!Wt.current||!pt||((mt=window.getSelection())==null?void 0:mt.toString().length)>0)return;const it=Ve.clientY-Wt.current.y,bt=Ve.clientX-Wt.current.x;var qn;const At=(qn=r.swipeDirections)!=null?qn:fy(X);!J&&(Math.abs(bt)>1||Math.abs(it)>1)&&q(Math.abs(bt)>Math.abs(it)?"x":"y");let Lt={x:0,y:0};const qt=Re=>1/(1.5+Math.abs(Re)/20);if(J==="y"){if(At.includes("top")||At.includes("bottom"))if(At.includes("top")&&it<0||At.includes("bottom")&&it>0)Lt.y=it;else{const Re=it*qt(it);Lt.y=Math.abs(Re)0)Lt.x=bt;else{const Re=bt*qt(bt);Lt.x=Math.abs(Re)0||Math.abs(Lt.y)>0)&&ft(!0),(St=Ke.current)==null||St.style.setProperty("--swipe-amount-x",`${Lt.x}px`),(Nt=Ke.current)==null||Nt.style.setProperty("--swipe-amount-y",`${Lt.y}px`)}},tn&&!v.jsx&&Te!=="loading"?Ce.createElement("button",{"aria-label":G,"data-disabled":se,"data-close-button":!0,onClick:se||!pt?()=>{}:()=>{me(),v.onDismiss==null||v.onDismiss.call(v,v)},className:qr(ae==null?void 0:ae.closeButton,v==null||(l=v.classNames)==null?void 0:l.closeButton)},(Kt=pe==null?void 0:pe.close)!=null?Kt:Yv):null,(Te||v.icon||v.promise)&&v.icon!==null&&((pe==null?void 0:pe[Te])!==null||v.icon)?Ce.createElement("div",{"data-icon":"",className:qr(ae==null?void 0:ae.icon,v==null||(f=v.classNames)==null?void 0:f.icon)},v.promise||v.type==="loading"&&!v.icon?v.icon||Be():null,v.type!=="loading"?je:null):null,Ce.createElement("div",{"data-content":"",className:qr(ae==null?void 0:ae.content,v==null||(d=v.classNames)==null?void 0:d.content)},Ce.createElement("div",{"data-title":"",className:qr(ae==null?void 0:ae.title,v==null||(m=v.classNames)==null?void 0:m.title)},v.jsx?v.jsx:typeof v.title=="function"?v.title():v.title),v.description?Ce.createElement("div",{"data-description":"",className:qr(V,en,ae==null?void 0:ae.description,v==null||(h=v.classNames)==null?void 0:h.description)},typeof v.description=="function"?v.description():v.description):null),Ce.isValidElement(v.cancel)?v.cancel:v.cancel&&ku(v.cancel)?Ce.createElement("button",{"data-button":!0,"data-cancel":!0,style:v.cancelButtonStyle||H,onClick:Ve=>{ku(v.cancel)&&pt&&(v.cancel.onClick==null||v.cancel.onClick.call(v.cancel,Ve),me())},className:qr(ae==null?void 0:ae.cancelButton,v==null||(x=v.classNames)==null?void 0:x.cancelButton)},v.cancel.label):null,Ce.isValidElement(v.action)?v.action:v.action&&ku(v.action)?Ce.createElement("button",{"data-button":!0,"data-action":!0,style:v.actionButtonStyle||te,onClick:Ve=>{ku(v.action)&&(v.action.onClick==null||v.action.onClick.call(v.action,Ve),!Ve.defaultPrevented&&me())},className:qr(ae==null?void 0:ae.actionButton,v==null||(p=v.classNames)==null?void 0:p.actionButton)},v.action.label):null)};function Pp(){if(typeof window>"u"||typeof document>"u")return"ltr";const r=document.documentElement.getAttribute("dir");return r==="auto"||!r?window.getComputedStyle(document.documentElement).direction:r}function py(r,a){const o={};return[r,a].forEach((l,f)=>{const d=f===1,m=d?"--mobile-offset":"--offset",h=d?ay:sy;function x(p){["top","right","bottom","left"].forEach(y=>{o[`${m}-${y}`]=typeof p=="number"?`${p}px`:p})}typeof l=="number"||typeof l=="string"?x(l):typeof l=="object"?["top","right","bottom","left"].forEach(p=>{l[p]===void 0?o[`${m}-${p}`]=h:o[`${m}-${p}`]=typeof l[p]=="number"?`${l[p]}px`:l[p]}):x(h)}),o}const my=Ce.forwardRef(function(a,o){const{id:l,invert:f,position:d="bottom-right",hotkey:m=["altKey","KeyT"],expand:h,closeButton:x,className:p,offset:y,mobileOffset:v,theme:w="light",richColors:P,duration:R,style:C,visibleToasts:E=oy,toastOptions:T,dir:B=Pp(),gap:k=uy,icons:N,containerAriaLabel:I="Notifications"}=a,[z,j]=Ce.useState([]),H=Ce.useMemo(()=>l?z.filter(Q=>Q.toasterId===l):z.filter(Q=>!Q.toasterId),[z,l]),te=Ce.useMemo(()=>Array.from(new Set([d].concat(H.filter(Q=>Q.position).map(Q=>Q.position)))),[H,d]),[Z,V]=Ce.useState([]),[ne,X]=Ce.useState(!1),[ie,de]=Ce.useState(!1),[ae,pe]=Ce.useState(w!=="system"?w:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),G=Ce.useRef(null),J=m.join("+").replace(/Key/g,"").replace(/Digit/g,""),q=Ce.useRef(null),D=Ce.useRef(!1),U=Ce.useCallback(Q=>{j($=>{var he;return(he=$.find(fe=>fe.id===Q.id))!=null&&he.delete||Zn.dismiss(Q.id),$.filter(({id:fe})=>fe!==Q.id)})},[]);return Ce.useEffect(()=>Zn.subscribe(Q=>{if(Q.dismiss){requestAnimationFrame(()=>{j($=>$.map(he=>he.id===Q.id?{...he,delete:!0}:he))});return}setTimeout(()=>{BA.flushSync(()=>{j($=>{const he=$.findIndex(fe=>fe.id===Q.id);return he!==-1?[...$.slice(0,he),{...$[he],...Q},...$.slice(he+1)]:[Q,...$]})})})}),[z]),Ce.useEffect(()=>{if(w!=="system"){pe(w);return}if(w==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?pe("dark"):pe("light")),typeof window>"u")return;const Q=window.matchMedia("(prefers-color-scheme: dark)");try{Q.addEventListener("change",({matches:$})=>{pe($?"dark":"light")})}catch{Q.addListener(({matches:he})=>{try{pe(he?"dark":"light")}catch(fe){console.error(fe)}})}},[w]),Ce.useEffect(()=>{z.length<=1&&X(!1)},[z]),Ce.useEffect(()=>{const Q=$=>{var he;if(m.every(ge=>$[ge]||$.code===ge)){var ke;X(!0),(ke=G.current)==null||ke.focus()}$.code==="Escape"&&(document.activeElement===G.current||(he=G.current)!=null&&he.contains(document.activeElement))&&X(!1)};return document.addEventListener("keydown",Q),()=>document.removeEventListener("keydown",Q)},[m]),Ce.useEffect(()=>{if(G.current)return()=>{q.current&&(q.current.focus({preventScroll:!0}),q.current=null,D.current=!1)}},[G.current]),Ce.createElement("section",{ref:o,"aria-label":`${I} ${J}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},te.map((Q,$)=>{var he;const[fe,ke]=Q.split("-");return H.length?Ce.createElement("ol",{key:Q,dir:B==="auto"?Pp():B,tabIndex:-1,ref:G,className:p,"data-sonner-toaster":!0,"data-sonner-theme":ae,"data-y-position":fe,"data-x-position":ke,style:{"--front-toast-height":`${((he=Z[0])==null?void 0:he.height)||0}px`,"--width":`${ly}px`,"--gap":`${k}px`,...C,...py(y,v)},onBlur:ge=>{D.current&&!ge.currentTarget.contains(ge.relatedTarget)&&(D.current=!1,q.current&&(q.current.focus({preventScroll:!0}),q.current=null))},onFocus:ge=>{ge.target instanceof HTMLElement&&ge.target.dataset.dismissible==="false"||D.current||(D.current=!0,q.current=ge.relatedTarget)},onMouseEnter:()=>X(!0),onMouseMove:()=>X(!0),onMouseLeave:()=>{ie||X(!1)},onDragEnd:()=>X(!1),onPointerDown:ge=>{ge.target instanceof HTMLElement&&ge.target.dataset.dismissible==="false"||de(!0)},onPointerUp:()=>de(!1)},H.filter(ge=>!ge.position&&$===0||ge.position===Q).map((ge,Ze)=>{var $e,wt;return Ce.createElement(hy,{key:ge.id,icons:N,index:Ze,toast:ge,defaultRichColors:P,duration:($e=T==null?void 0:T.duration)!=null?$e:R,className:T==null?void 0:T.className,descriptionClassName:T==null?void 0:T.descriptionClassName,invert:f,visibleToasts:E,closeButton:(wt=T==null?void 0:T.closeButton)!=null?wt:x,interacting:ie,position:Q,style:T==null?void 0:T.style,unstyled:T==null?void 0:T.unstyled,classNames:T==null?void 0:T.classNames,cancelButtonStyle:T==null?void 0:T.cancelButtonStyle,actionButtonStyle:T==null?void 0:T.actionButtonStyle,closeButtonAriaLabel:T==null?void 0:T.closeButtonAriaLabel,removeToast:U,toasts:H.filter(ft=>ft.position==ge.position),heights:Z.filter(ft=>ft.position==ge.position),setHeights:V,expandByDefault:h,gap:k,expanded:ne,swipeDirections:a.swipeDirections})})):null}))}),Ay=({...r})=>S.jsx(my,{theme:"dark",className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-card group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",error:"group-[.toaster]:bg-[#2a1a1a] group-[.toaster]:text-[#e8a0a0] group-[.toaster]:border-[#4a2a2a] [&_[data-description]]:text-[#b08080]"}},...r}),Su=200;function Iu(r){return`${r.type}-${r.conversation_key}-${r.text}-${r.sender_timestamp}`}function gy(r){const[a,o]=F.useState([]),[l,f]=F.useState(!1),[d,m]=F.useState(!1),[h,x]=F.useState(!1),p=F.useRef(new Set),y=F.useCallback(async(R=!1)=>{if(!r||r.type==="raw"){o([]),x(!1);return}R&&(f(!0),o([]));try{const C=await ct.getMessages({type:r.type==="channel"?"CHAN":"PRIV",conversation_key:r.id,limit:Su});o(C),p.current.clear();for(const E of C)p.current.add(Iu(E));x(C.length>=Su)}catch(C){console.error("Failed to fetch messages:",C),kt.error("Failed to load messages",{description:C instanceof Error?C.message:"Check your connection"})}finally{R&&f(!1)}},[r]),v=F.useCallback(async()=>{if(!(!r||r.type==="raw"||d||!h)){m(!0);try{const R=await ct.getMessages({type:r.type==="channel"?"CHAN":"PRIV",conversation_key:r.id,limit:Su,offset:a.length});if(R.length>0){o(C=>[...C,...R]);for(const C of R)p.current.add(Iu(C))}x(R.length>=Su)}catch(R){console.error("Failed to fetch older messages:",R),kt.error("Failed to load older messages",{description:R instanceof Error?R.message:"Check your connection"})}finally{m(!1)}}},[r,d,h,a.length]);F.useEffect(()=>{y(!0)},[y]);const w=F.useCallback(R=>{const C=Iu(R);if(p.current.has(C))return console.debug("Duplicate message content ignored:",C.slice(0,50)),!1;if(p.current.add(C),p.current.size>1e3){const E=Array.from(p.current);p.current=new Set(E.slice(-500))}return o(E=>E.some(T=>T.id===R.id)?E:[...E,R]),!0},[]),P=F.useCallback((R,C)=>{o(E=>{const T=E.findIndex(B=>B.id===R);if(T>=0){const B=[...E];return B[T]={...E[T],acked:C},B}return E})},[]);return{messages:a,messagesLoading:l,loadingOlder:d,hasOlderMessages:h,setMessages:o,fetchMessages:y,fetchOlderMessages:v,addMessageIfNew:w,updateMessageAck:P}}/** + * @license lucide-react v0.562.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xy=r=>r.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),vy=r=>r.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,o,l)=>l?l.toUpperCase():o.toLowerCase()),Tp=r=>{const a=vy(r);return a.charAt(0).toUpperCase()+a.slice(1)},PA=(...r)=>r.filter((a,o,l)=>!!a&&a.trim()!==""&&l.indexOf(a)===o).join(" ").trim(),yy=r=>{for(const a in r)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};/** + * @license lucide-react v0.562.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var _y={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.562.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wy=F.forwardRef(({color:r="currentColor",size:a=24,strokeWidth:o=2,absoluteStrokeWidth:l,className:f="",children:d,iconNode:m,...h},x)=>F.createElement("svg",{ref:x,..._y,width:a,height:a,stroke:r,strokeWidth:l?Number(o)*24/Number(a):o,className:PA("lucide",f),...!d&&!yy(h)&&{"aria-hidden":"true"},...h},[...m.map(([p,y])=>F.createElement(p,y)),...Array.isArray(d)?d:[d]]));/** + * @license lucide-react v0.562.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c0=(r,a)=>{const o=F.forwardRef(({className:l,...f},d)=>F.createElement(wy,{ref:d,iconNode:a,className:PA(`lucide-${xy(Tp(r))}`,`lucide-${r}`,l),...f}));return o.displayName=Tp(r),o};/** + * @license lucide-react v0.562.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const by=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Cy=c0("check",by);/** + * @license lucide-react v0.562.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ey=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],ky=c0("menu",Ey);/** + * @license lucide-react v0.562.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sy=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],TA=c0("x",Sy);function By({health:r,config:a,onSettingsClick:o,onMenuClick:l}){const f=(r==null?void 0:r.radio_connected)??!1,[d,m]=F.useState(!1),h=async()=>{m(!0);try{const x=await ct.reconnectRadio();x.connected&&kt.success("Reconnected",{description:x.message})}catch(x){kt.error("Reconnection failed",{description:x instanceof Error?x.message:"Check radio connection and power"})}finally{m(!1)}};return S.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 bg-[#252525] border-b border-[#333] text-xs",children:[l&&S.jsx("button",{onClick:l,className:"md:hidden p-1 bg-transparent border-none text-[#e0e0e0] cursor-pointer","aria-label":"Open menu",children:S.jsx(ky,{className:"h-5 w-5"})}),S.jsx("h1",{className:"hidden lg:block text-base font-semibold mr-auto",children:"RemoteTerm"}),S.jsxs("div",{className:"flex items-center gap-1 text-[#888]",children:[S.jsx("div",{className:`w-2 h-2 rounded-full ${f?"bg-[#4caf50]":"bg-[#666]"}`}),S.jsx("span",{className:"hidden lg:inline text-[#e0e0e0]",children:f?"Connected":"Disconnected"})]}),a&&S.jsx("div",{className:"hidden lg:flex items-center gap-1 text-[#888]",children:S.jsx("span",{className:"text-[#e0e0e0]",children:a.name||"Unnamed"})}),S.jsx("div",{className:"flex-1 lg:hidden"}),!f&&S.jsx("button",{onClick:h,disabled:d,className:"px-3 py-1 bg-[#4a3000] border border-[#6b4500] text-[#ffa500] rounded text-xs cursor-pointer hover:bg-[#5a3a00] disabled:opacity-50 disabled:cursor-not-allowed",children:d?"Reconnecting...":"Reconnect"}),S.jsxs("button",{onClick:o,className:"px-3 py-1 bg-[#333] border border-[#444] text-[#e0e0e0] rounded text-xs cursor-pointer hover:bg-[#444]",children:[S.jsx("span",{role:"img","aria-label":"Settings",children:"🔧"})," ","Radio & Config"]})]})}const Wf=2,Py={text:"🛜",background:"#444444",textColor:"#ffffff"};function Ty(r){let a=0;for(let o=0;o>8)%30,f=35+(a>>16)%20,d=`hsl(${o}, ${l}%, ${f}%)`,m=f<45?"#ffffff":"#000000";return{background:d,text:m}}function Ny(r,a,o){if(o===Wf)return Py;const l=Ry(r,a),f=Fy(a);return{text:l,background:f.background,textColor:f.text}}function qf({name:r,publicKey:a,size:o=28,contactType:l}){const f=Ny(r,a,l);return S.jsx("div",{className:"flex items-center justify-center rounded-full font-semibold flex-shrink-0 select-none",style:{backgroundColor:f.background,color:f.textColor,width:o,height:o,fontSize:o*.45},children:f.text})}const DA="remoteterm-favorites";function Fc(){try{const r=localStorage.getItem(DA);return r?JSON.parse(r):[]}catch{return[]}}function RA(r){try{localStorage.setItem(DA,JSON.stringify(r))}catch{}}function Ly(r,a){const o=Fc();if(o.some(f=>f.type===r&&f.id===a))return o;const l=[...o,{type:r,id:a}];return RA(l),l}function My(r,a){const l=Fc().filter(f=>!(f.type===r&&f.id===a));return RA(l),l}function js(r,a,o){return r.some(l=>l.type===a&&l.id===o)}function Iy(r,a){return Fc().some(l=>l.type===r&&l.id===a)?My(r,a):Ly(r,a)}function FA(r){var a,o,l="";if(typeof r=="string"||typeof r=="number")l+=r;else if(typeof r=="object")if(Array.isArray(r)){var f=r.length;for(a=0;a{const o=new Array(r.length+a.length);for(let l=0;l({classGroupId:r,validator:a}),LA=(r=new Map,a=null,o)=>({nextPart:r,validators:a,classGroupId:o}),kc="-",Dp=[],jy="arbitrary..",Hy=r=>{const a=Uy(r),{conflictingClassGroups:o,conflictingClassGroupModifiers:l}=r;return{getClassGroupId:m=>{if(m.startsWith("[")&&m.endsWith("]"))return Vy(m);const h=m.split(kc),x=h[0]===""&&h.length>1?1:0;return MA(h,x,a)},getConflictingClassGroupIds:(m,h)=>{if(h){const x=l[m],p=o[m];return x?p?Oy(p,x):x:p||Dp}return o[m]||Dp}}},MA=(r,a,o)=>{if(r.length-a===0)return o.classGroupId;const f=r[a],d=o.nextPart.get(f);if(d){const p=MA(r,a+1,d);if(p)return p}const m=o.validators;if(m===null)return;const h=a===0?r.join(kc):r.slice(a).join(kc),x=m.length;for(let p=0;pr.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=r.slice(1,-1),o=a.indexOf(":"),l=a.slice(0,o);return l?jy+l:void 0})(),Uy=r=>{const{theme:a,classGroups:o}=r;return Zy(o,a)},Zy=(r,a)=>{const o=LA();for(const l in r){const f=r[l];d0(f,o,l,a)}return o},d0=(r,a,o,l)=>{const f=r.length;for(let d=0;d{if(typeof r=="string"){qy(r,a,o);return}if(typeof r=="function"){Gy(r,a,o,l);return}Qy(r,a,o,l)},qy=(r,a,o)=>{const l=r===""?a:IA(a,r);l.classGroupId=o},Gy=(r,a,o,l)=>{if(Ky(r)){d0(r(l),a,o,l);return}a.validators===null&&(a.validators=[]),a.validators.push(zy(o,r))},Qy=(r,a,o,l)=>{const f=Object.entries(r),d=f.length;for(let m=0;m{let o=r;const l=a.split(kc),f=l.length;for(let d=0;d"isThemeGetter"in r&&r.isThemeGetter===!0,$y=r=>{if(r<1)return{get:()=>{},set:()=>{}};let a=0,o=Object.create(null),l=Object.create(null);const f=(d,m)=>{o[d]=m,a++,a>r&&(a=0,l=o,o=Object.create(null))};return{get(d){let m=o[d];if(m!==void 0)return m;if((m=l[d])!==void 0)return f(d,m),m},set(d,m){d in o?o[d]=m:f(d,m)}}},Gf="!",Rp=":",Yy=[],Fp=(r,a,o,l,f)=>({modifiers:r,hasImportantModifier:a,baseClassName:o,maybePostfixModifierPosition:l,isExternal:f}),Xy=r=>{const{prefix:a,experimentalParseClassName:o}=r;let l=f=>{const d=[];let m=0,h=0,x=0,p;const y=f.length;for(let C=0;Cx?p-x:void 0;return Fp(d,P,w,R)};if(a){const f=a+Rp,d=l;l=m=>m.startsWith(f)?d(m.slice(f.length)):Fp(Yy,!1,m,void 0,!0)}if(o){const f=l;l=d=>o({className:d,parseClassName:f})}return l},Jy=r=>{const a=new Map;return r.orderSensitiveModifiers.forEach((o,l)=>{a.set(o,1e6+l)}),o=>{const l=[];let f=[];for(let d=0;d0&&(f.sort(),l.push(...f),f=[]),l.push(m)):f.push(m)}return f.length>0&&(f.sort(),l.push(...f)),l}},e_=r=>({cache:$y(r.cacheSize),parseClassName:Xy(r),sortModifiers:Jy(r),...Hy(r)}),t_=/\s+/,n_=(r,a)=>{const{parseClassName:o,getClassGroupId:l,getConflictingClassGroupIds:f,sortModifiers:d}=a,m=[],h=r.trim().split(t_);let x="";for(let p=h.length-1;p>=0;p-=1){const y=h[p],{isExternal:v,modifiers:w,hasImportantModifier:P,baseClassName:R,maybePostfixModifierPosition:C}=o(y);if(v){x=y+(x.length>0?" "+x:x);continue}let E=!!C,T=l(E?R.substring(0,C):R);if(!T){if(!E){x=y+(x.length>0?" "+x:x);continue}if(T=l(R),!T){x=y+(x.length>0?" "+x:x);continue}E=!1}const B=w.length===0?"":w.length===1?w[0]:d(w).join(":"),k=P?B+Gf:B,N=k+T;if(m.indexOf(N)>-1)continue;m.push(N);const I=f(T,E);for(let z=0;z0?" "+x:x)}return x},r_=(...r)=>{let a=0,o,l,f="";for(;a{if(typeof r=="string")return r;let a,o="";for(let l=0;l{let o,l,f,d;const m=x=>{const p=a.reduce((y,v)=>v(y),r());return o=e_(p),l=o.cache.get,f=o.cache.set,d=h,h(x)},h=x=>{const p=l(x);if(p)return p;const y=n_(x,o);return f(x,y),y};return d=m,(...x)=>d(r_(...x))},o_=[],an=r=>{const a=o=>o[r]||o_;return a.isThemeGetter=!0,a},zA=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,jA=/^\((?:(\w[\w-]*):)?(.+)\)$/i,s_=/^\d+\/\d+$/,a_=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,l_=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,u_=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,c_=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,d_=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ls=r=>s_.test(r),st=r=>!!r&&!Number.isNaN(Number(r)),oo=r=>!!r&&Number.isInteger(Number(r)),Sf=r=>r.endsWith("%")&&st(r.slice(0,-1)),vi=r=>a_.test(r),f_=()=>!0,h_=r=>l_.test(r)&&!u_.test(r),HA=()=>!1,p_=r=>c_.test(r),m_=r=>d_.test(r),A_=r=>!Me(r)&&!Ie(r),g_=r=>Qs(r,ZA,HA),Me=r=>zA.test(r),Oo=r=>Qs(r,WA,h_),Bf=r=>Qs(r,w_,st),Np=r=>Qs(r,VA,HA),x_=r=>Qs(r,UA,m_),Bu=r=>Qs(r,qA,p_),Ie=r=>jA.test(r),Ha=r=>Ks(r,WA),v_=r=>Ks(r,b_),Lp=r=>Ks(r,VA),y_=r=>Ks(r,ZA),__=r=>Ks(r,UA),Pu=r=>Ks(r,qA,!0),Qs=(r,a,o)=>{const l=zA.exec(r);return l?l[1]?a(l[1]):o(l[2]):!1},Ks=(r,a,o=!1)=>{const l=jA.exec(r);return l?l[1]?a(l[1]):o:!1},VA=r=>r==="position"||r==="percentage",UA=r=>r==="image"||r==="url",ZA=r=>r==="length"||r==="size"||r==="bg-size",WA=r=>r==="length",w_=r=>r==="number",b_=r=>r==="family-name",qA=r=>r==="shadow",C_=()=>{const r=an("color"),a=an("font"),o=an("text"),l=an("font-weight"),f=an("tracking"),d=an("leading"),m=an("breakpoint"),h=an("container"),x=an("spacing"),p=an("radius"),y=an("shadow"),v=an("inset-shadow"),w=an("text-shadow"),P=an("drop-shadow"),R=an("blur"),C=an("perspective"),E=an("aspect"),T=an("ease"),B=an("animate"),k=()=>["auto","avoid","all","avoid-page","page","left","right","column"],N=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],I=()=>[...N(),Ie,Me],z=()=>["auto","hidden","clip","visible","scroll"],j=()=>["auto","contain","none"],H=()=>[Ie,Me,x],te=()=>[Ls,"full","auto",...H()],Z=()=>[oo,"none","subgrid",Ie,Me],V=()=>["auto",{span:["full",oo,Ie,Me]},oo,Ie,Me],ne=()=>[oo,"auto",Ie,Me],X=()=>["auto","min","max","fr",Ie,Me],ie=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],de=()=>["start","end","center","stretch","center-safe","end-safe"],ae=()=>["auto",...H()],pe=()=>[Ls,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...H()],G=()=>[r,Ie,Me],J=()=>[...N(),Lp,Np,{position:[Ie,Me]}],q=()=>["no-repeat",{repeat:["","x","y","space","round"]}],D=()=>["auto","cover","contain",y_,g_,{size:[Ie,Me]}],U=()=>[Sf,Ha,Oo],Q=()=>["","none","full",p,Ie,Me],$=()=>["",st,Ha,Oo],he=()=>["solid","dashed","dotted","double"],fe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ke=()=>[st,Sf,Lp,Np],ge=()=>["","none",R,Ie,Me],Ze=()=>["none",st,Ie,Me],$e=()=>["none",st,Ie,Me],wt=()=>[st,Ie,Me],ft=()=>[Ls,"full",...H()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[vi],breakpoint:[vi],color:[f_],container:[vi],"drop-shadow":[vi],ease:["in","out","in-out"],font:[A_],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[vi],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[vi],shadow:[vi],spacing:["px",st],text:[vi],"text-shadow":[vi],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Ls,Me,Ie,E]}],container:["container"],columns:[{columns:[st,Me,Ie,h]}],"break-after":[{"break-after":k()}],"break-before":[{"break-before":k()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:I()}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:j()}],"overscroll-x":[{"overscroll-x":j()}],"overscroll-y":[{"overscroll-y":j()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:te()}],"inset-x":[{"inset-x":te()}],"inset-y":[{"inset-y":te()}],start:[{start:te()}],end:[{end:te()}],top:[{top:te()}],right:[{right:te()}],bottom:[{bottom:te()}],left:[{left:te()}],visibility:["visible","invisible","collapse"],z:[{z:[oo,"auto",Ie,Me]}],basis:[{basis:[Ls,"full","auto",h,...H()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[st,Ls,"auto","initial","none",Me]}],grow:[{grow:["",st,Ie,Me]}],shrink:[{shrink:["",st,Ie,Me]}],order:[{order:[oo,"first","last","none",Ie,Me]}],"grid-cols":[{"grid-cols":Z()}],"col-start-end":[{col:V()}],"col-start":[{"col-start":ne()}],"col-end":[{"col-end":ne()}],"grid-rows":[{"grid-rows":Z()}],"row-start-end":[{row:V()}],"row-start":[{"row-start":ne()}],"row-end":[{"row-end":ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":X()}],"auto-rows":[{"auto-rows":X()}],gap:[{gap:H()}],"gap-x":[{"gap-x":H()}],"gap-y":[{"gap-y":H()}],"justify-content":[{justify:[...ie(),"normal"]}],"justify-items":[{"justify-items":[...de(),"normal"]}],"justify-self":[{"justify-self":["auto",...de()]}],"align-content":[{content:["normal",...ie()]}],"align-items":[{items:[...de(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...de(),{baseline:["","last"]}]}],"place-content":[{"place-content":ie()}],"place-items":[{"place-items":[...de(),"baseline"]}],"place-self":[{"place-self":["auto",...de()]}],p:[{p:H()}],px:[{px:H()}],py:[{py:H()}],ps:[{ps:H()}],pe:[{pe:H()}],pt:[{pt:H()}],pr:[{pr:H()}],pb:[{pb:H()}],pl:[{pl:H()}],m:[{m:ae()}],mx:[{mx:ae()}],my:[{my:ae()}],ms:[{ms:ae()}],me:[{me:ae()}],mt:[{mt:ae()}],mr:[{mr:ae()}],mb:[{mb:ae()}],ml:[{ml:ae()}],"space-x":[{"space-x":H()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":H()}],"space-y-reverse":["space-y-reverse"],size:[{size:pe()}],w:[{w:[h,"screen",...pe()]}],"min-w":[{"min-w":[h,"screen","none",...pe()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[m]},...pe()]}],h:[{h:["screen","lh",...pe()]}],"min-h":[{"min-h":["screen","lh","none",...pe()]}],"max-h":[{"max-h":["screen","lh",...pe()]}],"font-size":[{text:["base",o,Ha,Oo]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[l,Ie,Bf]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Sf,Me]}],"font-family":[{font:[v_,Me,a]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[f,Ie,Me]}],"line-clamp":[{"line-clamp":[st,"none",Ie,Bf]}],leading:[{leading:[d,...H()]}],"list-image":[{"list-image":["none",Ie,Me]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ie,Me]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:G()}],"text-color":[{text:G()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...he(),"wavy"]}],"text-decoration-thickness":[{decoration:[st,"from-font","auto",Ie,Oo]}],"text-decoration-color":[{decoration:G()}],"underline-offset":[{"underline-offset":[st,"auto",Ie,Me]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:H()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ie,Me]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ie,Me]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:J()}],"bg-repeat":[{bg:q()}],"bg-size":[{bg:D()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},oo,Ie,Me],radial:["",Ie,Me],conic:[oo,Ie,Me]},__,x_]}],"bg-color":[{bg:G()}],"gradient-from-pos":[{from:U()}],"gradient-via-pos":[{via:U()}],"gradient-to-pos":[{to:U()}],"gradient-from":[{from:G()}],"gradient-via":[{via:G()}],"gradient-to":[{to:G()}],rounded:[{rounded:Q()}],"rounded-s":[{"rounded-s":Q()}],"rounded-e":[{"rounded-e":Q()}],"rounded-t":[{"rounded-t":Q()}],"rounded-r":[{"rounded-r":Q()}],"rounded-b":[{"rounded-b":Q()}],"rounded-l":[{"rounded-l":Q()}],"rounded-ss":[{"rounded-ss":Q()}],"rounded-se":[{"rounded-se":Q()}],"rounded-ee":[{"rounded-ee":Q()}],"rounded-es":[{"rounded-es":Q()}],"rounded-tl":[{"rounded-tl":Q()}],"rounded-tr":[{"rounded-tr":Q()}],"rounded-br":[{"rounded-br":Q()}],"rounded-bl":[{"rounded-bl":Q()}],"border-w":[{border:$()}],"border-w-x":[{"border-x":$()}],"border-w-y":[{"border-y":$()}],"border-w-s":[{"border-s":$()}],"border-w-e":[{"border-e":$()}],"border-w-t":[{"border-t":$()}],"border-w-r":[{"border-r":$()}],"border-w-b":[{"border-b":$()}],"border-w-l":[{"border-l":$()}],"divide-x":[{"divide-x":$()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":$()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...he(),"hidden","none"]}],"divide-style":[{divide:[...he(),"hidden","none"]}],"border-color":[{border:G()}],"border-color-x":[{"border-x":G()}],"border-color-y":[{"border-y":G()}],"border-color-s":[{"border-s":G()}],"border-color-e":[{"border-e":G()}],"border-color-t":[{"border-t":G()}],"border-color-r":[{"border-r":G()}],"border-color-b":[{"border-b":G()}],"border-color-l":[{"border-l":G()}],"divide-color":[{divide:G()}],"outline-style":[{outline:[...he(),"none","hidden"]}],"outline-offset":[{"outline-offset":[st,Ie,Me]}],"outline-w":[{outline:["",st,Ha,Oo]}],"outline-color":[{outline:G()}],shadow:[{shadow:["","none",y,Pu,Bu]}],"shadow-color":[{shadow:G()}],"inset-shadow":[{"inset-shadow":["none",v,Pu,Bu]}],"inset-shadow-color":[{"inset-shadow":G()}],"ring-w":[{ring:$()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:G()}],"ring-offset-w":[{"ring-offset":[st,Oo]}],"ring-offset-color":[{"ring-offset":G()}],"inset-ring-w":[{"inset-ring":$()}],"inset-ring-color":[{"inset-ring":G()}],"text-shadow":[{"text-shadow":["none",w,Pu,Bu]}],"text-shadow-color":[{"text-shadow":G()}],opacity:[{opacity:[st,Ie,Me]}],"mix-blend":[{"mix-blend":[...fe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":fe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[st]}],"mask-image-linear-from-pos":[{"mask-linear-from":ke()}],"mask-image-linear-to-pos":[{"mask-linear-to":ke()}],"mask-image-linear-from-color":[{"mask-linear-from":G()}],"mask-image-linear-to-color":[{"mask-linear-to":G()}],"mask-image-t-from-pos":[{"mask-t-from":ke()}],"mask-image-t-to-pos":[{"mask-t-to":ke()}],"mask-image-t-from-color":[{"mask-t-from":G()}],"mask-image-t-to-color":[{"mask-t-to":G()}],"mask-image-r-from-pos":[{"mask-r-from":ke()}],"mask-image-r-to-pos":[{"mask-r-to":ke()}],"mask-image-r-from-color":[{"mask-r-from":G()}],"mask-image-r-to-color":[{"mask-r-to":G()}],"mask-image-b-from-pos":[{"mask-b-from":ke()}],"mask-image-b-to-pos":[{"mask-b-to":ke()}],"mask-image-b-from-color":[{"mask-b-from":G()}],"mask-image-b-to-color":[{"mask-b-to":G()}],"mask-image-l-from-pos":[{"mask-l-from":ke()}],"mask-image-l-to-pos":[{"mask-l-to":ke()}],"mask-image-l-from-color":[{"mask-l-from":G()}],"mask-image-l-to-color":[{"mask-l-to":G()}],"mask-image-x-from-pos":[{"mask-x-from":ke()}],"mask-image-x-to-pos":[{"mask-x-to":ke()}],"mask-image-x-from-color":[{"mask-x-from":G()}],"mask-image-x-to-color":[{"mask-x-to":G()}],"mask-image-y-from-pos":[{"mask-y-from":ke()}],"mask-image-y-to-pos":[{"mask-y-to":ke()}],"mask-image-y-from-color":[{"mask-y-from":G()}],"mask-image-y-to-color":[{"mask-y-to":G()}],"mask-image-radial":[{"mask-radial":[Ie,Me]}],"mask-image-radial-from-pos":[{"mask-radial-from":ke()}],"mask-image-radial-to-pos":[{"mask-radial-to":ke()}],"mask-image-radial-from-color":[{"mask-radial-from":G()}],"mask-image-radial-to-color":[{"mask-radial-to":G()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":N()}],"mask-image-conic-pos":[{"mask-conic":[st]}],"mask-image-conic-from-pos":[{"mask-conic-from":ke()}],"mask-image-conic-to-pos":[{"mask-conic-to":ke()}],"mask-image-conic-from-color":[{"mask-conic-from":G()}],"mask-image-conic-to-color":[{"mask-conic-to":G()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:J()}],"mask-repeat":[{mask:q()}],"mask-size":[{mask:D()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ie,Me]}],filter:[{filter:["","none",Ie,Me]}],blur:[{blur:ge()}],brightness:[{brightness:[st,Ie,Me]}],contrast:[{contrast:[st,Ie,Me]}],"drop-shadow":[{"drop-shadow":["","none",P,Pu,Bu]}],"drop-shadow-color":[{"drop-shadow":G()}],grayscale:[{grayscale:["",st,Ie,Me]}],"hue-rotate":[{"hue-rotate":[st,Ie,Me]}],invert:[{invert:["",st,Ie,Me]}],saturate:[{saturate:[st,Ie,Me]}],sepia:[{sepia:["",st,Ie,Me]}],"backdrop-filter":[{"backdrop-filter":["","none",Ie,Me]}],"backdrop-blur":[{"backdrop-blur":ge()}],"backdrop-brightness":[{"backdrop-brightness":[st,Ie,Me]}],"backdrop-contrast":[{"backdrop-contrast":[st,Ie,Me]}],"backdrop-grayscale":[{"backdrop-grayscale":["",st,Ie,Me]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[st,Ie,Me]}],"backdrop-invert":[{"backdrop-invert":["",st,Ie,Me]}],"backdrop-opacity":[{"backdrop-opacity":[st,Ie,Me]}],"backdrop-saturate":[{"backdrop-saturate":[st,Ie,Me]}],"backdrop-sepia":[{"backdrop-sepia":["",st,Ie,Me]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":H()}],"border-spacing-x":[{"border-spacing-x":H()}],"border-spacing-y":[{"border-spacing-y":H()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ie,Me]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[st,"initial",Ie,Me]}],ease:[{ease:["linear","initial",T,Ie,Me]}],delay:[{delay:[st,Ie,Me]}],animate:[{animate:["none",B,Ie,Me]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[C,Ie,Me]}],"perspective-origin":[{"perspective-origin":I()}],rotate:[{rotate:Ze()}],"rotate-x":[{"rotate-x":Ze()}],"rotate-y":[{"rotate-y":Ze()}],"rotate-z":[{"rotate-z":Ze()}],scale:[{scale:$e()}],"scale-x":[{"scale-x":$e()}],"scale-y":[{"scale-y":$e()}],"scale-z":[{"scale-z":$e()}],"scale-3d":["scale-3d"],skew:[{skew:wt()}],"skew-x":[{"skew-x":wt()}],"skew-y":[{"skew-y":wt()}],transform:[{transform:[Ie,Me,"","none","gpu","cpu"]}],"transform-origin":[{origin:I()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ft()}],"translate-x":[{"translate-x":ft()}],"translate-y":[{"translate-y":ft()}],"translate-z":[{"translate-z":ft()}],"translate-none":["translate-none"],accent:[{accent:G()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:G()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ie,Me]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":H()}],"scroll-mx":[{"scroll-mx":H()}],"scroll-my":[{"scroll-my":H()}],"scroll-ms":[{"scroll-ms":H()}],"scroll-me":[{"scroll-me":H()}],"scroll-mt":[{"scroll-mt":H()}],"scroll-mr":[{"scroll-mr":H()}],"scroll-mb":[{"scroll-mb":H()}],"scroll-ml":[{"scroll-ml":H()}],"scroll-p":[{"scroll-p":H()}],"scroll-px":[{"scroll-px":H()}],"scroll-py":[{"scroll-py":H()}],"scroll-ps":[{"scroll-ps":H()}],"scroll-pe":[{"scroll-pe":H()}],"scroll-pt":[{"scroll-pt":H()}],"scroll-pr":[{"scroll-pr":H()}],"scroll-pb":[{"scroll-pb":H()}],"scroll-pl":[{"scroll-pl":H()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ie,Me]}],fill:[{fill:["none",...G()]}],"stroke-w":[{stroke:[st,Ha,Oo,Bf]}],stroke:[{stroke:["none",...G()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},E_=i_(C_);function rt(...r){return E_(NA(r))}const Yt=F.forwardRef(({className:r,type:a,...o},l)=>S.jsx("input",{type:a,className:rt("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",r),ref:l,...o}));Yt.displayName="Input";function Mp(r,a){if(typeof r=="function")return r(a);r!=null&&(r.current=a)}function ll(...r){return a=>{let o=!1;const l=r.map(f=>{const d=Mp(f,a);return!o&&typeof d=="function"&&(o=!0),d});if(o)return()=>{for(let f=0;f{let{children:d,...m}=l;GA(d)&&typeof Sc=="function"&&(d=Sc(d._payload));const h=F.Children.toArray(d),x=h.find(D_);if(x){const p=x.props.children,y=h.map(v=>v===x?F.Children.count(p)>1?F.Children.only(null):F.isValidElement(p)?p.props.children:null:v);return S.jsx(a,{...m,ref:f,children:F.isValidElement(p)?F.cloneElement(p,void 0,y):null})}return S.jsx(a,{...m,ref:f,children:d})});return o.displayName=`${r}.Slot`,o}var B_=f0("Slot");function P_(r){const a=F.forwardRef((o,l)=>{let{children:f,...d}=o;if(GA(f)&&typeof Sc=="function"&&(f=Sc(f._payload)),F.isValidElement(f)){const m=F_(f),h=R_(d,f.props);return f.type!==F.Fragment&&(h.ref=l?ll(l,m):m),F.cloneElement(f,h)}return F.Children.count(f)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var T_=Symbol("radix.slottable");function D_(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===T_}function R_(r,a){const o={...a};for(const l in a){const f=r[l],d=a[l];/^on[A-Z]/.test(l)?f&&d?o[l]=(...h)=>{const x=d(...h);return f(...h),x}:f&&(o[l]=f):l==="style"?o[l]={...f,...d}:l==="className"&&(o[l]=[f,d].filter(Boolean).join(" "))}return{...r,...o}}function F_(r){var l,f;let a=(l=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:l.get,o=a&&"isReactWarning"in a&&a.isReactWarning;return o?r.ref:(a=(f=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:f.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}const Ip=r=>typeof r=="boolean"?`${r}`:r===0?"0":r,Op=NA,Nc=(r,a)=>o=>{var l;if((a==null?void 0:a.variants)==null)return Op(r,o==null?void 0:o.class,o==null?void 0:o.className);const{variants:f,defaultVariants:d}=a,m=Object.keys(f).map(p=>{const y=o==null?void 0:o[p],v=d==null?void 0:d[p];if(y===null)return null;const w=Ip(y)||Ip(v);return f[p][w]}),h=o&&Object.entries(o).reduce((p,y)=>{let[v,w]=y;return w===void 0||(p[v]=w),p},{}),x=a==null||(l=a.compoundVariants)===null||l===void 0?void 0:l.reduce((p,y)=>{let{class:v,className:w,...P}=y;return Object.entries(P).every(R=>{let[C,E]=R;return Array.isArray(E)?E.includes({...d,...h}[C]):{...d,...h}[C]===E})?[...p,v,w]:p},[]);return Op(r,m,x,o==null?void 0:o.class,o==null?void 0:o.className)},N_=Nc("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),Nn=F.forwardRef(({className:r,variant:a,size:o,asChild:l=!1,...f},d)=>{const m=l?B_:"button";return S.jsx(m,{className:rt(N_({variant:a,size:o,className:r})),ref:d,...f})});Nn.displayName="Button";function Tu(r){return r>=a0?`${r}+`:`${r}`}function L_(){try{return localStorage.getItem("remoteterm-sortOrder")==="alpha"?"alpha":"recent"}catch{return"recent"}}function M_(r){try{localStorage.setItem("remoteterm-sortOrder",r)}catch{}}function I_({contacts:r,channels:a,activeConversation:o,onSelectConversation:l,onNewMessage:f,lastMessageTimes:d,unreadCounts:m,mentions:h,showCracker:x,crackerRunning:p,onToggleCracker:y,onMarkAllRead:v,favorites:w}){const[P,R]=F.useState(L_),[C,E]=F.useState(""),T=()=>{const J=P==="alpha"?"recent":"alpha";R(J),M_(J)},B=J=>{E(""),l(J)},k=(J,q)=>(o==null?void 0:o.type)===J&&(o==null?void 0:o.id)===q,N=(J,q)=>{const D=Dr(J,q);return m[D]||0},I=(J,q)=>{const D=Dr(J,q);return h[D]||!1},z=(J,q)=>{const D=Dr(J,q);return d[D]||0},j=a.reduce((J,q)=>(J.some(D=>D.name===q.name)||J.push(q),J),[]),H=r.filter(J=>J.public_key&&J.public_key.length>0).sort((J,q)=>J.name&&!q.name?-1:!J.name&&q.name?1:(J.name||"").localeCompare(q.name||"")).reduce((J,q)=>{const D=Zs(q.public_key);return J.some(U=>Zs(U.public_key)===D)||J.push(q),J},[]),te=[...j].sort((J,q)=>{if(J.name==="Public")return-1;if(q.name==="Public")return 1;if(P==="recent"){const D=z("channel",J.key),U=z("channel",q.key);if(D&&U)return U-D;if(D&&!U)return-1;if(!D&&U)return 1}return J.name.localeCompare(q.name)}),Z=[...H].sort((J,q)=>{const D=J.type===Wf,U=q.type===Wf;if(D&&!U)return 1;if(!D&&U)return-1;if(D&&U)return(J.name||J.public_key).localeCompare(q.name||q.public_key);if(P==="recent"){const Q=z("contact",J.public_key),$=z("contact",q.public_key);if(Q&&$)return $-Q;if(Q&&!$)return-1;if(!Q&&$)return 1}return(J.name||J.public_key).localeCompare(q.name||q.public_key)}),V=C.toLowerCase().trim(),ne=V?te.filter(J=>J.name.toLowerCase().includes(V)):te,X=V?Z.filter(J=>{var q;return((q=J.name)==null?void 0:q.toLowerCase().includes(V))||J.public_key.toLowerCase().includes(V)}):Z,ie=ne.filter(J=>js(w,"channel",J.key)),de=X.filter(J=>js(w,"contact",J.public_key)),ae=ne.filter(J=>!js(w,"channel",J.key)),pe=X.filter(J=>!js(w,"contact",J.public_key)),G=[...ie.map(J=>({type:"channel",channel:J})),...de.map(J=>({type:"contact",contact:J}))].sort((J,q)=>{const D=J.type==="channel"?z("channel",J.channel.key):z("contact",J.contact.public_key),U=q.type==="channel"?z("channel",q.channel.key):z("contact",q.contact.public_key);if(D&&U)return U-D;if(D&&!U)return-1;if(!D&&U)return 1;const Q=J.type==="channel"?J.channel.name:J.contact.name||J.contact.public_key,$=q.type==="channel"?q.channel.name:q.contact.name||q.contact.public_key;return Q.localeCompare($)});return S.jsxs("div",{className:"sidebar w-60 h-full min-h-0 bg-card border-r border-border flex flex-col",children:[S.jsxs("div",{className:"flex justify-between items-center px-3 py-3 border-b border-border",children:[S.jsx("h2",{className:"text-xs uppercase text-muted-foreground font-medium",children:"Conversations"}),S.jsx(Nn,{variant:"ghost",size:"sm",onClick:f,title:"New Message",className:"h-6 w-6 p-0 text-muted-foreground hover:text-foreground",children:"+"})]}),S.jsxs("div",{className:"relative px-3 py-2 border-b border-border",children:[S.jsx(Yt,{type:"text",placeholder:"Search...",value:C,onChange:J=>E(J.target.value),className:"h-8 text-sm pr-8"}),C&&S.jsx("button",{className:"absolute right-4 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground text-lg leading-none",onClick:()=>E(""),title:"Clear search",children:"×"})]}),S.jsxs("div",{className:"flex-1 overflow-y-auto",children:[!V&&S.jsxs("div",{className:rt("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",k("raw","raw")&&"bg-accent border-l-primary"),onClick:()=>B({type:"raw",id:"raw",name:"Raw Packet Feed"}),children:[S.jsx("span",{className:"text-muted-foreground text-xs",children:"📡"}),S.jsx("span",{className:"flex-1 truncate",children:"Packet Feed"})]}),!V&&S.jsxs("div",{className:rt("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",k("map","map")&&"bg-accent border-l-primary"),onClick:()=>B({type:"map",id:"map",name:"Node Map"}),children:[S.jsx("span",{className:"text-muted-foreground text-xs",children:"🗺️"}),S.jsx("span",{className:"flex-1 truncate",children:"Node Map"})]}),!V&&S.jsxs("div",{className:rt("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",x&&"bg-accent border-l-primary"),onClick:y,children:[S.jsx("span",{className:"text-muted-foreground text-xs",children:"🔓"}),S.jsxs("span",{className:"flex-1 truncate",children:[x?"Hide":"Show"," Cracker",S.jsxs("span",{className:rt("ml-1 text-xs",p?"text-green-500":"text-muted-foreground"),children:["(",p?"running":"stopped",")"]})]})]}),!V&&Object.keys(m).length>0&&S.jsxs("div",{className:"px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",onClick:v,children:[S.jsx("span",{className:"text-muted-foreground text-xs",children:"✓"}),S.jsx("span",{className:"flex-1 truncate text-muted-foreground",children:"Mark all as read"})]}),G.length>0&&S.jsxs(S.Fragment,{children:[S.jsx("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:S.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Favorites"})}),G.map(J=>{if(J.type==="channel"){const q=J.channel,D=N("channel",q.key),U=I("channel",q.key);return S.jsxs("div",{className:rt("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",k("channel",q.key)&&"bg-accent border-l-primary",D>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>B({type:"channel",id:q.key,name:q.name}),children:[S.jsx("span",{className:"text-muted-foreground text-xs",children:"#"}),S.jsx("span",{className:"name flex-1 truncate",children:q.name}),D>0&&S.jsx("span",{className:rt("text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",U?"bg-destructive text-destructive-foreground":"bg-primary text-primary-foreground"),children:Tu(D)})]},`fav-chan-${q.key}`)}else{const q=J.contact,D=N("contact",q.public_key),U=I("contact",q.public_key);return S.jsxs("div",{className:rt("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",k("contact",q.public_key)&&"bg-accent border-l-primary",D>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>B({type:"contact",id:q.public_key,name:bi(q.name,q.public_key)}),children:[S.jsx(qf,{name:q.name,publicKey:q.public_key,size:24,contactType:q.type}),S.jsx("span",{className:"name flex-1 truncate",children:bi(q.name,q.public_key)}),D>0&&S.jsx("span",{className:rt("text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",U?"bg-destructive text-destructive-foreground":"bg-primary text-primary-foreground"),children:Tu(D)})]},`fav-contact-${q.public_key}`)}})]}),ae.length>0&&S.jsxs(S.Fragment,{children:[S.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[S.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Channels"}),S.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:T,title:P==="alpha"?"Sort by recent":"Sort alphabetically",children:P==="alpha"?"A-Z":"⏱"})]}),ae.map(J=>{const q=N("channel",J.key),D=I("channel",J.key);return S.jsxs("div",{className:rt("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",k("channel",J.key)&&"bg-accent border-l-primary",q>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>B({type:"channel",id:J.key,name:J.name}),children:[S.jsx("span",{className:"text-muted-foreground text-xs",children:"#"}),S.jsx("span",{className:"name flex-1 truncate",children:J.name}),q>0&&S.jsx("span",{className:rt("text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",D?"bg-destructive text-destructive-foreground":"bg-primary text-primary-foreground"),children:Tu(q)})]},`chan-${J.key}`)})]}),pe.length>0&&S.jsxs(S.Fragment,{children:[S.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[S.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Contacts"}),ae.length===0&&S.jsx("button",{className:"bg-transparent border border-border text-muted-foreground px-1.5 py-0.5 text-[10px] rounded hover:bg-accent hover:text-foreground",onClick:T,title:P==="alpha"?"Sort by recent":"Sort alphabetically",children:P==="alpha"?"A-Z":"⏱"})]}),pe.map(J=>{const q=N("contact",J.public_key),D=I("contact",J.public_key);return S.jsxs("div",{className:rt("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",k("contact",J.public_key)&&"bg-accent border-l-primary",q>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>B({type:"contact",id:J.public_key,name:bi(J.name,J.public_key)}),children:[S.jsx(qf,{name:J.name,publicKey:J.public_key,size:24,contactType:J.type}),S.jsx("span",{className:"name flex-1 truncate",children:bi(J.name,J.public_key)}),q>0&&S.jsx("span",{className:rt("text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",D?"bg-destructive text-destructive-foreground":"bg-primary text-primary-foreground"),children:Tu(q)})]},J.public_key)})]}),pe.length===0&&ae.length===0&&G.length===0&&S.jsx("div",{className:"p-5 text-center text-muted-foreground",children:V?"No matches found":"No conversations yet"})]})]})}function zp(r){const a=r.indexOf(": ");if(a>0&&a<50){const o=r.substring(0,a);if(!o.includes(":"))return{sender:o,content:r.substring(a+2)}}return{sender:null,content:r}}function il(r){const a=new Date(r*1e3),o=new Date,l=a.toDateString()===o.toDateString(),f=a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return l?f:`${a.toLocaleDateString([],{month:"short",day:"numeric"})} ${f}`}function O_(r,a){if(!a)return r;const o=/@\[([^\]]+)\]/g,l=[];let f=0,d,m=0;for(;(d=o.exec(r))!==null;){d.index>f&&l.push(r.slice(f,d.index));const h=d[1],x=h===a;l.push(S.jsxs("span",{className:rt("rounded px-0.5",x?"bg-primary/30 text-primary font-medium":"bg-muted-foreground/20"),children:["@[",h,"]"]},m++)),f=d.index+d[0].length}return f0?l:r}function z_({messages:r,contacts:a,loading:o,loadingOlder:l=!1,hasOlderMessages:f=!1,onSenderClick:d,onLoadOlder:m,radioName:h}){const x=F.useRef(null),p=F.useRef(0),y=F.useRef(!0),[v,w]=F.useState(!1),P=F.useRef({scrollTop:0,scrollHeight:0,clientHeight:0,wasNearTop:!1,wasNearBottom:!0});F.useLayoutEffect(()=>{if(!x.current)return;const N=x.current,I=r.length-p.current;if(y.current&&r.length>0)N.scrollTop=N.scrollHeight,y.current=!1;else if(I>0&&p.current>0){const z=N.scrollHeight-P.current.scrollHeight;P.current.wasNearTop&&z>0?N.scrollTop=P.current.scrollTop+z:P.current.wasNearBottom&&(N.scrollTop=N.scrollHeight)}p.current=r.length},[r]),F.useEffect(()=>{r.length===0&&(y.current=!0,p.current=0,P.current={scrollTop:0,scrollHeight:0,clientHeight:0,wasNearTop:!1,wasNearBottom:!0})},[r.length]);const R=F.useCallback(()=>{if(!x.current)return;const{scrollTop:N,scrollHeight:I,clientHeight:z}=x.current,j=I-N-z;P.current={scrollTop:N,scrollHeight:I,clientHeight:z,wasNearTop:N<150,wasNearBottom:j<100},w(j>100),!(!m||l||!f)&&N<100&&m()},[m,l,f]),C=F.useCallback(()=>{x.current&&(x.current.scrollTop=x.current.scrollHeight)},[]),E=N=>N&&a.find(I=>kA(I.public_key,N))||null,T=N=>a.find(I=>I.name===N)||null;if(o)return S.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"Loading messages..."});if(r.length===0)return S.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"No messages yet"});const B=[...r].sort((N,I)=>N.received_at-I.received_at),k=(N,I)=>N.outgoing?"__outgoing__":N.type==="PRIV"&&N.conversation_key?N.conversation_key:I||"__unknown__";return S.jsxs("div",{className:"flex-1 overflow-hidden relative",children:[S.jsxs("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-0.5",ref:x,onScroll:R,children:[l&&S.jsx("div",{className:"text-center py-2 text-muted-foreground text-sm",children:"Loading older messages..."}),!l&&f&&S.jsx("div",{className:"text-center py-2 text-muted-foreground text-xs",children:"Scroll up for older messages"}),B.map((N,I)=>{var J;const z=N.type==="PRIV"?E(N.conversation_key):null,j=(z==null?void 0:z.type)===l0,{sender:H,content:te}=j?{sender:null,content:N.text}:zp(N.text),Z=N.outgoing?"You":(z==null?void 0:z.name)||H||((J=N.conversation_key)==null?void 0:J.slice(0,8))||"Unknown",V=!N.outgoing&&d&&Z!=="Unknown",ne=k(N,H),X=B[I-1],ie=X?k(X,zp(X.text).sender):null,de=!N.outgoing&&ne!==ie,ae=I===0;let pe=null,G="";if(!N.outgoing){if(N.type==="PRIV"&&N.conversation_key)pe=(z==null?void 0:z.name)||null,G=N.conversation_key;else if(H){const q=T(H);pe=H,G=(q==null?void 0:q.public_key)||`name:${H}`}}return S.jsxs("div",{className:rt("flex items-start max-w-[85%]",N.outgoing&&"flex-row-reverse self-end",de&&!ae&&"mt-3"),children:[!N.outgoing&&S.jsx("div",{className:"w-10 flex-shrink-0 flex items-start pt-0.5",children:de&&G&&S.jsx(qf,{name:pe,publicKey:G,size:32})}),S.jsxs("div",{className:rt("py-1.5 px-3 rounded-lg min-w-0",N.outgoing?"bg-[#1e3a29]":"bg-muted"),children:[de&&S.jsxs("div",{className:"text-[13px] font-semibold text-muted-foreground mb-0.5",children:[V?S.jsx("span",{className:"cursor-pointer hover:text-primary hover:underline",onClick:()=>d(Z),title:`Mention ${Z}`,children:Z}):Z,S.jsx("span",{className:"font-normal text-muted-foreground/70 ml-2 text-[11px]",children:il(N.sender_timestamp||N.received_at)})]}),S.jsxs("div",{className:"break-words whitespace-pre-wrap",children:[te.split(` +`).map((q,D,U)=>S.jsxs("span",{children:[O_(q,h),D0?` ✓${N.acked>1?N.acked:""}`:" ?")]})]})]},N.id)})]}),v&&S.jsx("button",{onClick:C,className:"absolute bottom-4 right-4 w-10 h-10 rounded-full bg-muted hover:bg-accent border border-border flex items-center justify-center shadow-lg transition-opacity",title:"Scroll to bottom",children:S.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-muted-foreground",children:S.jsx("polyline",{points:"6 9 12 15 18 9"})})})]})}const jp=156,j_=140,H_=156,V_=120,U_=8,Z_=F.forwardRef(function({onSend:a,disabled:o,placeholder:l,isRepeaterMode:f,conversationType:d,senderName:m},h){const[x,p]=F.useState(""),[y,v]=F.useState(!1),w=F.useRef(null);F.useImperativeHandle(h,()=>({appendText:I=>{var z;p(j=>j+I),(z=w.current)==null||z.focus()}}));const P=F.useMemo(()=>{if(d==="contact")return{warningAt:j_,dangerAt:jp,hardLimit:jp};if(d==="channel"){const I=(m==null?void 0:m.length)??10,z=Math.max(1,H_-I-2);return{warningAt:V_,dangerAt:Math.max(1,z-U_),hardLimit:z}}return null},[d,m]),{limitState:R,warningMessage:C}=F.useMemo(()=>{if(!P)return{limitState:"normal",warningMessage:null};const I=x.length;return I>=P.hardLimit?{limitState:"error",warningMessage:"likely truncated by radio"}:I>=P.dangerAt?{limitState:"danger",warningMessage:"may impact multi-repeater hop delivery"}:I>=P.warningAt?{limitState:"warning",warningMessage:"may impact multi-repeater hop delivery"}:{limitState:"normal",warningMessage:null}},[x.length,P]),E=P?P.hardLimit-x.length:0,T=F.useCallback(async I=>{I.preventDefault();const z=x.trim();if(f){if(y||o)return;v(!0);try{await a(z),p("")}catch(j){console.error("Failed to request telemetry:",j),kt.error("Failed to request telemetry",{description:j instanceof Error?j.message:"Check radio connection"});return}finally{v(!1)}setTimeout(()=>{var j;return(j=w.current)==null?void 0:j.focus()},0)}else{if(!z||y||o)return;v(!0);try{await a(z),p("")}catch(j){console.error("Failed to send message:",j),kt.error("Failed to send message",{description:j instanceof Error?j.message:"Check radio connection"});return}finally{v(!1)}setTimeout(()=>{var j;return(j=w.current)==null?void 0:j.focus()},0)}},[x,y,o,a,f]),B=F.useCallback(I=>{I.key==="Enter"&&!I.shiftKey&&(I.preventDefault(),T(I))},[T]),k=f?!0:x.trim().length>0,N=!f&&P!==null;return S.jsxs("form",{className:"px-4 py-3 border-t border-border flex flex-col gap-1",onSubmit:T,children:[S.jsxs("div",{className:"flex gap-2",children:[S.jsx(Yt,{ref:w,type:f?"password":"text",autoComplete:f?"off":void 0,value:x,onChange:I=>p(I.target.value),onKeyDown:B,placeholder:l||(f?"Enter password for admin login...":"Type a message..."),disabled:o||y,className:"flex-1 min-w-0"}),S.jsx(Nn,{type:"submit",disabled:o||y||!k,className:"flex-shrink-0",children:y?f?"Logging in...":"Sending...":f?x.trim()?"Log in with password":"Log in as guest/use repeater ACLs":"Send"})]}),N&&S.jsxs("div",{className:"flex items-center justify-end gap-2 text-xs",children:[S.jsxs("span",{className:rt("tabular-nums",R==="error"||R==="danger"?"text-red-500 font-medium":R==="warning"?"text-yellow-500":"text-muted-foreground"),children:[x.length,"/",P.hardLimit,E<0&&` (${E})`]}),C&&S.jsxs("span",{className:rt(R==="error"?"text-red-500":"text-yellow-500"),children:["— ",C]})]})]})});function ln(r,a,{checkForDefaultPrevented:o=!0}={}){return function(f){if(r==null||r(f),o===!1||!f.defaultPrevented)return a==null?void 0:a(f)}}function W_(r,a){const o=F.createContext(a),l=d=>{const{children:m,...h}=d,x=F.useMemo(()=>h,Object.values(h));return S.jsx(o.Provider,{value:x,children:m})};l.displayName=r+"Provider";function f(d){const m=F.useContext(o);if(m)return m;if(a!==void 0)return a;throw new Error(`\`${d}\` must be used within \`${r}\``)}return[l,f]}function ul(r,a=[]){let o=[];function l(d,m){const h=F.createContext(m),x=o.length;o=[...o,m];const p=v=>{var T;const{scope:w,children:P,...R}=v,C=((T=w==null?void 0:w[r])==null?void 0:T[x])||h,E=F.useMemo(()=>R,Object.values(R));return S.jsx(C.Provider,{value:E,children:P})};p.displayName=d+"Provider";function y(v,w){var C;const P=((C=w==null?void 0:w[r])==null?void 0:C[x])||h,R=F.useContext(P);if(R)return R;if(m!==void 0)return m;throw new Error(`\`${v}\` must be used within \`${d}\``)}return[p,y]}const f=()=>{const d=o.map(m=>F.createContext(m));return function(h){const x=(h==null?void 0:h[r])||d;return F.useMemo(()=>({[`__scope${r}`]:{...h,[r]:x}}),[h,x])}};return f.scopeName=r,[l,q_(f,...a)]}function q_(...r){const a=r[0];if(r.length===1)return a;const o=()=>{const l=r.map(f=>({useScope:f(),scopeName:f.scopeName}));return function(d){const m=l.reduce((h,{useScope:x,scopeName:p})=>{const v=x(d)[`__scope${p}`];return{...h,...v}},{});return F.useMemo(()=>({[`__scope${a.scopeName}`]:m}),[m])}};return o.scopeName=a.scopeName,o}var Ws=globalThis!=null&&globalThis.document?F.useLayoutEffect:()=>{},G_=s0[" useId ".trim().toString()]||(()=>{}),Q_=0;function rl(r){const[a,o]=F.useState(G_());return Ws(()=>{o(l=>l??String(Q_++))},[r]),a?`radix-${a}`:""}var K_=s0[" useInsertionEffect ".trim().toString()]||Ws;function Lc({prop:r,defaultProp:a,onChange:o=()=>{},caller:l}){const[f,d,m]=$_({defaultProp:a,onChange:o}),h=r!==void 0,x=h?r:f;{const y=F.useRef(r!==void 0);F.useEffect(()=>{const v=y.current;v!==h&&console.warn(`${l} is changing from ${v?"controlled":"uncontrolled"} to ${h?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),y.current=h},[h,l])}const p=F.useCallback(y=>{var v;if(h){const w=Y_(y)?y(r):y;w!==r&&((v=m.current)==null||v.call(m,w))}else d(y)},[h,r,d,m]);return[x,p]}function $_({defaultProp:r,onChange:a}){const[o,l]=F.useState(r),f=F.useRef(o),d=F.useRef(a);return K_(()=>{d.current=a},[a]),F.useEffect(()=>{var m;f.current!==o&&((m=d.current)==null||m.call(d,o),f.current=o)},[o,f]),[o,l,d]}function Y_(r){return typeof r=="function"}function X_(r){const a=J_(r),o=F.forwardRef((l,f)=>{const{children:d,...m}=l,h=F.Children.toArray(d),x=h.find(t1);if(x){const p=x.props.children,y=h.map(v=>v===x?F.Children.count(p)>1?F.Children.only(null):F.isValidElement(p)?p.props.children:null:v);return S.jsx(a,{...m,ref:f,children:F.isValidElement(p)?F.cloneElement(p,void 0,y):null})}return S.jsx(a,{...m,ref:f,children:d})});return o.displayName=`${r}.Slot`,o}function J_(r){const a=F.forwardRef((o,l)=>{const{children:f,...d}=o;if(F.isValidElement(f)){const m=r1(f),h=n1(d,f.props);return f.type!==F.Fragment&&(h.ref=l?ll(l,m):m),F.cloneElement(f,h)}return F.Children.count(f)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var e1=Symbol("radix.slottable");function t1(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===e1}function n1(r,a){const o={...a};for(const l in a){const f=r[l],d=a[l];/^on[A-Z]/.test(l)?f&&d?o[l]=(...h)=>{const x=d(...h);return f(...h),x}:f&&(o[l]=f):l==="style"?o[l]={...f,...d}:l==="className"&&(o[l]=[f,d].filter(Boolean).join(" "))}return{...r,...o}}function r1(r){var l,f;let a=(l=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:l.get,o=a&&"isReactWarning"in a&&a.isReactWarning;return o?r.ref:(a=(f=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:f.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}var i1=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],fn=i1.reduce((r,a)=>{const o=X_(`Primitive.${a}`),l=F.forwardRef((f,d)=>{const{asChild:m,...h}=f,x=m?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),S.jsx(x,{...h,ref:d})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{});function o1(r,a){r&&u0.flushSync(()=>r.dispatchEvent(a))}function qs(r){const a=F.useRef(r);return F.useEffect(()=>{a.current=r}),F.useMemo(()=>(...o)=>{var l;return(l=a.current)==null?void 0:l.call(a,...o)},[])}function s1(r,a=globalThis==null?void 0:globalThis.document){const o=qs(r);F.useEffect(()=>{const l=f=>{f.key==="Escape"&&o(f)};return a.addEventListener("keydown",l,{capture:!0}),()=>a.removeEventListener("keydown",l,{capture:!0})},[o,a])}var a1="DismissableLayer",Qf="dismissableLayer.update",l1="dismissableLayer.pointerDownOutside",u1="dismissableLayer.focusOutside",Hp,QA=F.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),KA=F.forwardRef((r,a)=>{const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:l,onPointerDownOutside:f,onFocusOutside:d,onInteractOutside:m,onDismiss:h,...x}=r,p=F.useContext(QA),[y,v]=F.useState(null),w=(y==null?void 0:y.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,P]=F.useState({}),R=xr(a,j=>v(j)),C=Array.from(p.layers),[E]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),T=C.indexOf(E),B=y?C.indexOf(y):-1,k=p.layersWithOutsidePointerEventsDisabled.size>0,N=B>=T,I=f1(j=>{const H=j.target,te=[...p.branches].some(Z=>Z.contains(H));!N||te||(f==null||f(j),m==null||m(j),j.defaultPrevented||h==null||h())},w),z=h1(j=>{const H=j.target;[...p.branches].some(Z=>Z.contains(H))||(d==null||d(j),m==null||m(j),j.defaultPrevented||h==null||h())},w);return s1(j=>{B===p.layers.size-1&&(l==null||l(j),!j.defaultPrevented&&h&&(j.preventDefault(),h()))},w),F.useEffect(()=>{if(y)return o&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(Hp=w.body.style.pointerEvents,w.body.style.pointerEvents="none"),p.layersWithOutsidePointerEventsDisabled.add(y)),p.layers.add(y),Vp(),()=>{o&&p.layersWithOutsidePointerEventsDisabled.size===1&&(w.body.style.pointerEvents=Hp)}},[y,w,o,p]),F.useEffect(()=>()=>{y&&(p.layers.delete(y),p.layersWithOutsidePointerEventsDisabled.delete(y),Vp())},[y,p]),F.useEffect(()=>{const j=()=>P({});return document.addEventListener(Qf,j),()=>document.removeEventListener(Qf,j)},[]),S.jsx(fn.div,{...x,ref:R,style:{pointerEvents:k?N?"auto":"none":void 0,...r.style},onFocusCapture:ln(r.onFocusCapture,z.onFocusCapture),onBlurCapture:ln(r.onBlurCapture,z.onBlurCapture),onPointerDownCapture:ln(r.onPointerDownCapture,I.onPointerDownCapture)})});KA.displayName=a1;var c1="DismissableLayerBranch",d1=F.forwardRef((r,a)=>{const o=F.useContext(QA),l=F.useRef(null),f=xr(a,l);return F.useEffect(()=>{const d=l.current;if(d)return o.branches.add(d),()=>{o.branches.delete(d)}},[o.branches]),S.jsx(fn.div,{...r,ref:f})});d1.displayName=c1;function f1(r,a=globalThis==null?void 0:globalThis.document){const o=qs(r),l=F.useRef(!1),f=F.useRef(()=>{});return F.useEffect(()=>{const d=h=>{if(h.target&&!l.current){let x=function(){$A(l1,o,p,{discrete:!0})};const p={originalEvent:h};h.pointerType==="touch"?(a.removeEventListener("click",f.current),f.current=x,a.addEventListener("click",f.current,{once:!0})):x()}else a.removeEventListener("click",f.current);l.current=!1},m=window.setTimeout(()=>{a.addEventListener("pointerdown",d)},0);return()=>{window.clearTimeout(m),a.removeEventListener("pointerdown",d),a.removeEventListener("click",f.current)}},[a,o]),{onPointerDownCapture:()=>l.current=!0}}function h1(r,a=globalThis==null?void 0:globalThis.document){const o=qs(r),l=F.useRef(!1);return F.useEffect(()=>{const f=d=>{d.target&&!l.current&&$A(u1,o,{originalEvent:d},{discrete:!1})};return a.addEventListener("focusin",f),()=>a.removeEventListener("focusin",f)},[a,o]),{onFocusCapture:()=>l.current=!0,onBlurCapture:()=>l.current=!1}}function Vp(){const r=new CustomEvent(Qf);document.dispatchEvent(r)}function $A(r,a,o,{discrete:l}){const f=o.originalEvent.target,d=new CustomEvent(r,{bubbles:!1,cancelable:!0,detail:o});a&&f.addEventListener(r,a,{once:!0}),l?o1(f,d):f.dispatchEvent(d)}var Pf="focusScope.autoFocusOnMount",Tf="focusScope.autoFocusOnUnmount",Up={bubbles:!1,cancelable:!0},p1="FocusScope",YA=F.forwardRef((r,a)=>{const{loop:o=!1,trapped:l=!1,onMountAutoFocus:f,onUnmountAutoFocus:d,...m}=r,[h,x]=F.useState(null),p=qs(f),y=qs(d),v=F.useRef(null),w=xr(a,C=>x(C)),P=F.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;F.useEffect(()=>{if(l){let C=function(k){if(P.paused||!h)return;const N=k.target;h.contains(N)?v.current=N:so(v.current,{select:!0})},E=function(k){if(P.paused||!h)return;const N=k.relatedTarget;N!==null&&(h.contains(N)||so(v.current,{select:!0}))},T=function(k){if(document.activeElement===document.body)for(const I of k)I.removedNodes.length>0&&so(h)};document.addEventListener("focusin",C),document.addEventListener("focusout",E);const B=new MutationObserver(T);return h&&B.observe(h,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",C),document.removeEventListener("focusout",E),B.disconnect()}}},[l,h,P.paused]),F.useEffect(()=>{if(h){Wp.add(P);const C=document.activeElement;if(!h.contains(C)){const T=new CustomEvent(Pf,Up);h.addEventListener(Pf,p),h.dispatchEvent(T),T.defaultPrevented||(m1(y1(XA(h)),{select:!0}),document.activeElement===C&&so(h))}return()=>{h.removeEventListener(Pf,p),setTimeout(()=>{const T=new CustomEvent(Tf,Up);h.addEventListener(Tf,y),h.dispatchEvent(T),T.defaultPrevented||so(C??document.body,{select:!0}),h.removeEventListener(Tf,y),Wp.remove(P)},0)}}},[h,p,y,P]);const R=F.useCallback(C=>{if(!o&&!l||P.paused)return;const E=C.key==="Tab"&&!C.altKey&&!C.ctrlKey&&!C.metaKey,T=document.activeElement;if(E&&T){const B=C.currentTarget,[k,N]=A1(B);k&&N?!C.shiftKey&&T===N?(C.preventDefault(),o&&so(k,{select:!0})):C.shiftKey&&T===k&&(C.preventDefault(),o&&so(N,{select:!0})):T===B&&C.preventDefault()}},[o,l,P.paused]);return S.jsx(fn.div,{tabIndex:-1,...m,ref:w,onKeyDown:R})});YA.displayName=p1;function m1(r,{select:a=!1}={}){const o=document.activeElement;for(const l of r)if(so(l,{select:a}),document.activeElement!==o)return}function A1(r){const a=XA(r),o=Zp(a,r),l=Zp(a.reverse(),r);return[o,l]}function XA(r){const a=[],o=document.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const f=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||f?NodeFilter.FILTER_SKIP:l.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)a.push(o.currentNode);return a}function Zp(r,a){for(const o of r)if(!g1(o,{upTo:a}))return o}function g1(r,{upTo:a}){if(getComputedStyle(r).visibility==="hidden")return!0;for(;r;){if(a!==void 0&&r===a)return!1;if(getComputedStyle(r).display==="none")return!0;r=r.parentElement}return!1}function x1(r){return r instanceof HTMLInputElement&&"select"in r}function so(r,{select:a=!1}={}){if(r&&r.focus){const o=document.activeElement;r.focus({preventScroll:!0}),r!==o&&x1(r)&&a&&r.select()}}var Wp=v1();function v1(){let r=[];return{add(a){const o=r[0];a!==o&&(o==null||o.pause()),r=qp(r,a),r.unshift(a)},remove(a){var o;r=qp(r,a),(o=r[0])==null||o.resume()}}}function qp(r,a){const o=[...r],l=o.indexOf(a);return l!==-1&&o.splice(l,1),o}function y1(r){return r.filter(a=>a.tagName!=="A")}var _1="Portal",JA=F.forwardRef((r,a)=>{var h;const{container:o,...l}=r,[f,d]=F.useState(!1);Ws(()=>d(!0),[]);const m=o||f&&((h=globalThis==null?void 0:globalThis.document)==null?void 0:h.body);return m?BA.createPortal(S.jsx(fn.div,{...l,ref:a}),m):null});JA.displayName=_1;function w1(r,a){return F.useReducer((o,l)=>a[o][l]??o,r)}var $s=r=>{const{present:a,children:o}=r,l=b1(a),f=typeof o=="function"?o({present:l.isPresent}):F.Children.only(o),d=xr(l.ref,C1(f));return typeof o=="function"||l.isPresent?F.cloneElement(f,{ref:d}):null};$s.displayName="Presence";function b1(r){const[a,o]=F.useState(),l=F.useRef(null),f=F.useRef(r),d=F.useRef("none"),m=r?"mounted":"unmounted",[h,x]=w1(m,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return F.useEffect(()=>{const p=Du(l.current);d.current=h==="mounted"?p:"none"},[h]),Ws(()=>{const p=l.current,y=f.current;if(y!==r){const w=d.current,P=Du(p);r?x("MOUNT"):P==="none"||(p==null?void 0:p.display)==="none"?x("UNMOUNT"):x(y&&w!==P?"ANIMATION_OUT":"UNMOUNT"),f.current=r}},[r,x]),Ws(()=>{if(a){let p;const y=a.ownerDocument.defaultView??window,v=P=>{const C=Du(l.current).includes(CSS.escape(P.animationName));if(P.target===a&&C&&(x("ANIMATION_END"),!f.current)){const E=a.style.animationFillMode;a.style.animationFillMode="forwards",p=y.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=E)})}},w=P=>{P.target===a&&(d.current=Du(l.current))};return a.addEventListener("animationstart",w),a.addEventListener("animationcancel",v),a.addEventListener("animationend",v),()=>{y.clearTimeout(p),a.removeEventListener("animationstart",w),a.removeEventListener("animationcancel",v),a.removeEventListener("animationend",v)}}else x("ANIMATION_END")},[a,x]),{isPresent:["mounted","unmountSuspended"].includes(h),ref:F.useCallback(p=>{l.current=p?getComputedStyle(p):null,o(p)},[])}}function Du(r){return(r==null?void 0:r.animationName)||"none"}function C1(r){var l,f;let a=(l=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:l.get,o=a&&"isReactWarning"in a&&a.isReactWarning;return o?r.ref:(a=(f=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:f.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}var Df=0;function E1(){F.useEffect(()=>{const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",r[0]??Gp()),document.body.insertAdjacentElement("beforeend",r[1]??Gp()),Df++,()=>{Df===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),Df--}},[])}function Gp(){const r=document.createElement("span");return r.setAttribute("data-radix-focus-guard",""),r.tabIndex=0,r.style.outline="none",r.style.opacity="0",r.style.position="fixed",r.style.pointerEvents="none",r}var Kr=function(){return Kr=Object.assign||function(a){for(var o,l=1,f=arguments.length;l"u")return V1;var a=U1(r),o=document.documentElement.clientWidth,l=window.innerWidth;return{left:a[0],top:a[1],right:a[2],gap:Math.max(0,l-o+a[2]-a[0])}},W1=rg(),Vs="data-scroll-locked",q1=function(r,a,o,l){var f=r.left,d=r.top,m=r.right,h=r.gap;return o===void 0&&(o="margin"),` + .`.concat(S1,` { + overflow: hidden `).concat(l,`; + padding-right: `).concat(h,"px ").concat(l,`; + } + body[`).concat(Vs,`] { + overflow: hidden `).concat(l,`; + overscroll-behavior: contain; + `).concat([a&&"position: relative ".concat(l,";"),o==="margin"&&` + padding-left: `.concat(f,`px; + padding-top: `).concat(d,`px; + padding-right: `).concat(m,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(h,"px ").concat(l,`; + `),o==="padding"&&"padding-right: ".concat(h,"px ").concat(l,";")].filter(Boolean).join(""),` + } + + .`).concat(Ou,` { + right: `).concat(h,"px ").concat(l,`; + } + + .`).concat(zu,` { + margin-right: `).concat(h,"px ").concat(l,`; + } + + .`).concat(Ou," .").concat(Ou,` { + right: 0 `).concat(l,`; + } + + .`).concat(zu," .").concat(zu,` { + margin-right: 0 `).concat(l,`; + } + + body[`).concat(Vs,`] { + `).concat(B1,": ").concat(h,`px; + } +`)},Kp=function(){var r=parseInt(document.body.getAttribute(Vs)||"0",10);return isFinite(r)?r:0},G1=function(){F.useEffect(function(){return document.body.setAttribute(Vs,(Kp()+1).toString()),function(){var r=Kp()-1;r<=0?document.body.removeAttribute(Vs):document.body.setAttribute(Vs,r.toString())}},[])},Q1=function(r){var a=r.noRelative,o=r.noImportant,l=r.gapMode,f=l===void 0?"margin":l;G1();var d=F.useMemo(function(){return Z1(f)},[f]);return F.createElement(W1,{styles:q1(d,!a,f,o?"":"!important")})},Kf=!1;if(typeof window<"u")try{var Ru=Object.defineProperty({},"passive",{get:function(){return Kf=!0,!0}});window.addEventListener("test",Ru,Ru),window.removeEventListener("test",Ru,Ru)}catch{Kf=!1}var Ms=Kf?{passive:!1}:!1,K1=function(r){return r.tagName==="TEXTAREA"},ig=function(r,a){if(!(r instanceof Element))return!1;var o=window.getComputedStyle(r);return o[a]!=="hidden"&&!(o.overflowY===o.overflowX&&!K1(r)&&o[a]==="visible")},$1=function(r){return ig(r,"overflowY")},Y1=function(r){return ig(r,"overflowX")},$p=function(r,a){var o=a.ownerDocument,l=a;do{typeof ShadowRoot<"u"&&l instanceof ShadowRoot&&(l=l.host);var f=og(r,l);if(f){var d=sg(r,l),m=d[1],h=d[2];if(m>h)return!0}l=l.parentNode}while(l&&l!==o.body);return!1},X1=function(r){var a=r.scrollTop,o=r.scrollHeight,l=r.clientHeight;return[a,o,l]},J1=function(r){var a=r.scrollLeft,o=r.scrollWidth,l=r.clientWidth;return[a,o,l]},og=function(r,a){return r==="v"?$1(a):Y1(a)},sg=function(r,a){return r==="v"?X1(a):J1(a)},ew=function(r,a){return r==="h"&&a==="rtl"?-1:1},tw=function(r,a,o,l,f){var d=ew(r,window.getComputedStyle(a).direction),m=d*l,h=o.target,x=a.contains(h),p=!1,y=m>0,v=0,w=0;do{if(!h)break;var P=sg(r,h),R=P[0],C=P[1],E=P[2],T=C-E-d*R;(R||T)&&og(r,h)&&(v+=T,w+=R);var B=h.parentNode;h=B&&B.nodeType===Node.DOCUMENT_FRAGMENT_NODE?B.host:B}while(!x&&h!==document.body||x&&(a.contains(h)||a===h));return(y&&Math.abs(v)<1||!y&&Math.abs(w)<1)&&(p=!0),p},Fu=function(r){return"changedTouches"in r?[r.changedTouches[0].clientX,r.changedTouches[0].clientY]:[0,0]},Yp=function(r){return[r.deltaX,r.deltaY]},Xp=function(r){return r&&"current"in r?r.current:r},nw=function(r,a){return r[0]===a[0]&&r[1]===a[1]},rw=function(r){return` + .block-interactivity-`.concat(r,` {pointer-events: none;} + .allow-interactivity-`).concat(r,` {pointer-events: all;} +`)},iw=0,Is=[];function ow(r){var a=F.useRef([]),o=F.useRef([0,0]),l=F.useRef(),f=F.useState(iw++)[0],d=F.useState(rg)[0],m=F.useRef(r);F.useEffect(function(){m.current=r},[r]),F.useEffect(function(){if(r.inert){document.body.classList.add("block-interactivity-".concat(f));var C=k1([r.lockRef.current],(r.shards||[]).map(Xp),!0).filter(Boolean);return C.forEach(function(E){return E.classList.add("allow-interactivity-".concat(f))}),function(){document.body.classList.remove("block-interactivity-".concat(f)),C.forEach(function(E){return E.classList.remove("allow-interactivity-".concat(f))})}}},[r.inert,r.lockRef.current,r.shards]);var h=F.useCallback(function(C,E){if("touches"in C&&C.touches.length===2||C.type==="wheel"&&C.ctrlKey)return!m.current.allowPinchZoom;var T=Fu(C),B=o.current,k="deltaX"in C?C.deltaX:B[0]-T[0],N="deltaY"in C?C.deltaY:B[1]-T[1],I,z=C.target,j=Math.abs(k)>Math.abs(N)?"h":"v";if("touches"in C&&j==="h"&&z.type==="range")return!1;var H=window.getSelection(),te=H&&H.anchorNode,Z=te?te===z||te.contains(z):!1;if(Z)return!1;var V=$p(j,z);if(!V)return!0;if(V?I=j:(I=j==="v"?"h":"v",V=$p(j,z)),!V)return!1;if(!l.current&&"changedTouches"in C&&(k||N)&&(l.current=I),!I)return!0;var ne=l.current||I;return tw(ne,E,C,ne==="h"?k:N)},[]),x=F.useCallback(function(C){var E=C;if(!(!Is.length||Is[Is.length-1]!==d)){var T="deltaY"in E?Yp(E):Fu(E),B=a.current.filter(function(I){return I.name===E.type&&(I.target===E.target||E.target===I.shadowParent)&&nw(I.delta,T)})[0];if(B&&B.should){E.cancelable&&E.preventDefault();return}if(!B){var k=(m.current.shards||[]).map(Xp).filter(Boolean).filter(function(I){return I.contains(E.target)}),N=k.length>0?h(E,k[0]):!m.current.noIsolation;N&&E.cancelable&&E.preventDefault()}}},[]),p=F.useCallback(function(C,E,T,B){var k={name:C,delta:E,target:T,should:B,shadowParent:sw(T)};a.current.push(k),setTimeout(function(){a.current=a.current.filter(function(N){return N!==k})},1)},[]),y=F.useCallback(function(C){o.current=Fu(C),l.current=void 0},[]),v=F.useCallback(function(C){p(C.type,Yp(C),C.target,h(C,r.lockRef.current))},[]),w=F.useCallback(function(C){p(C.type,Fu(C),C.target,h(C,r.lockRef.current))},[]);F.useEffect(function(){return Is.push(d),r.setCallbacks({onScrollCapture:v,onWheelCapture:v,onTouchMoveCapture:w}),document.addEventListener("wheel",x,Ms),document.addEventListener("touchmove",x,Ms),document.addEventListener("touchstart",y,Ms),function(){Is=Is.filter(function(C){return C!==d}),document.removeEventListener("wheel",x,Ms),document.removeEventListener("touchmove",x,Ms),document.removeEventListener("touchstart",y,Ms)}},[]);var P=r.removeScrollBar,R=r.inert;return F.createElement(F.Fragment,null,R?F.createElement(d,{styles:rw(f)}):null,P?F.createElement(Q1,{noRelative:r.noRelative,gapMode:r.gapMode}):null)}function sw(r){for(var a=null;r!==null;)r instanceof ShadowRoot&&(a=r.host,r=r.host),r=r.parentNode;return a}const aw=L1(ng,ow);var ag=F.forwardRef(function(r,a){return F.createElement(Mc,Kr({},r,{ref:a,sideCar:aw}))});ag.classNames=Mc.classNames;var lw=function(r){if(typeof document>"u")return null;var a=Array.isArray(r)?r[0]:r;return a.ownerDocument.body},Os=new WeakMap,Nu=new WeakMap,Lu={},Lf=0,lg=function(r){return r&&(r.host||lg(r.parentNode))},uw=function(r,a){return a.map(function(o){if(r.contains(o))return o;var l=lg(o);return l&&r.contains(l)?l:(console.error("aria-hidden",o,"in not contained inside",r,". Doing nothing"),null)}).filter(function(o){return!!o})},cw=function(r,a,o,l){var f=uw(a,Array.isArray(r)?r:[r]);Lu[o]||(Lu[o]=new WeakMap);var d=Lu[o],m=[],h=new Set,x=new Set(f),p=function(v){!v||h.has(v)||(h.add(v),p(v.parentNode))};f.forEach(p);var y=function(v){!v||x.has(v)||Array.prototype.forEach.call(v.children,function(w){if(h.has(w))y(w);else try{var P=w.getAttribute(l),R=P!==null&&P!=="false",C=(Os.get(w)||0)+1,E=(d.get(w)||0)+1;Os.set(w,C),d.set(w,E),m.push(w),C===1&&R&&Nu.set(w,!0),E===1&&w.setAttribute(o,"true"),R||w.setAttribute(l,"true")}catch(T){console.error("aria-hidden: cannot operate on ",w,T)}})};return y(a),h.clear(),Lf++,function(){m.forEach(function(v){var w=Os.get(v)-1,P=d.get(v)-1;Os.set(v,w),d.set(v,P),w||(Nu.has(v)||v.removeAttribute(l),Nu.delete(v)),P||v.removeAttribute(o)}),Lf--,Lf||(Os=new WeakMap,Os=new WeakMap,Nu=new WeakMap,Lu={})}},dw=function(r,a,o){o===void 0&&(o="data-aria-hidden");var l=Array.from(Array.isArray(r)?r:[r]),f=lw(r);return f?(l.push.apply(l,Array.from(f.querySelectorAll("[aria-live], script"))),cw(l,f,o,"aria-hidden")):function(){return null}};function fw(r){const a=hw(r),o=F.forwardRef((l,f)=>{const{children:d,...m}=l,h=F.Children.toArray(d),x=h.find(mw);if(x){const p=x.props.children,y=h.map(v=>v===x?F.Children.count(p)>1?F.Children.only(null):F.isValidElement(p)?p.props.children:null:v);return S.jsx(a,{...m,ref:f,children:F.isValidElement(p)?F.cloneElement(p,void 0,y):null})}return S.jsx(a,{...m,ref:f,children:d})});return o.displayName=`${r}.Slot`,o}function hw(r){const a=F.forwardRef((o,l)=>{const{children:f,...d}=o;if(F.isValidElement(f)){const m=gw(f),h=Aw(d,f.props);return f.type!==F.Fragment&&(h.ref=l?ll(l,m):m),F.cloneElement(f,h)}return F.Children.count(f)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var pw=Symbol("radix.slottable");function mw(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===pw}function Aw(r,a){const o={...a};for(const l in a){const f=r[l],d=a[l];/^on[A-Z]/.test(l)?f&&d?o[l]=(...h)=>{const x=d(...h);return f(...h),x}:f&&(o[l]=f):l==="style"?o[l]={...f,...d}:l==="className"&&(o[l]=[f,d].filter(Boolean).join(" "))}return{...r,...o}}function gw(r){var l,f;let a=(l=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:l.get,o=a&&"isReactWarning"in a&&a.isReactWarning;return o?r.ref:(a=(f=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:f.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}var Ic="Dialog",[ug]=ul(Ic),[xw,Fr]=ug(Ic),cg=r=>{const{__scopeDialog:a,children:o,open:l,defaultOpen:f,onOpenChange:d,modal:m=!0}=r,h=F.useRef(null),x=F.useRef(null),[p,y]=Lc({prop:l,defaultProp:f??!1,onChange:d,caller:Ic});return S.jsx(xw,{scope:a,triggerRef:h,contentRef:x,contentId:rl(),titleId:rl(),descriptionId:rl(),open:p,onOpenChange:y,onOpenToggle:F.useCallback(()=>y(v=>!v),[y]),modal:m,children:o})};cg.displayName=Ic;var dg="DialogTrigger",vw=F.forwardRef((r,a)=>{const{__scopeDialog:o,...l}=r,f=Fr(dg,o),d=xr(a,f.triggerRef);return S.jsx(fn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":f.open,"aria-controls":f.contentId,"data-state":m0(f.open),...l,ref:d,onClick:ln(r.onClick,f.onOpenToggle)})});vw.displayName=dg;var h0="DialogPortal",[yw,fg]=ug(h0,{forceMount:void 0}),hg=r=>{const{__scopeDialog:a,forceMount:o,children:l,container:f}=r,d=Fr(h0,a);return S.jsx(yw,{scope:a,forceMount:o,children:F.Children.map(l,m=>S.jsx($s,{present:o||d.open,children:S.jsx(JA,{asChild:!0,container:f,children:m})}))})};hg.displayName=h0;var Bc="DialogOverlay",pg=F.forwardRef((r,a)=>{const o=fg(Bc,r.__scopeDialog),{forceMount:l=o.forceMount,...f}=r,d=Fr(Bc,r.__scopeDialog);return d.modal?S.jsx($s,{present:l||d.open,children:S.jsx(ww,{...f,ref:a})}):null});pg.displayName=Bc;var _w=fw("DialogOverlay.RemoveScroll"),ww=F.forwardRef((r,a)=>{const{__scopeDialog:o,...l}=r,f=Fr(Bc,o);return S.jsx(ag,{as:_w,allowPinchZoom:!0,shards:[f.contentRef],children:S.jsx(fn.div,{"data-state":m0(f.open),...l,ref:a,style:{pointerEvents:"auto",...l.style}})})}),Wo="DialogContent",mg=F.forwardRef((r,a)=>{const o=fg(Wo,r.__scopeDialog),{forceMount:l=o.forceMount,...f}=r,d=Fr(Wo,r.__scopeDialog);return S.jsx($s,{present:l||d.open,children:d.modal?S.jsx(bw,{...f,ref:a}):S.jsx(Cw,{...f,ref:a})})});mg.displayName=Wo;var bw=F.forwardRef((r,a)=>{const o=Fr(Wo,r.__scopeDialog),l=F.useRef(null),f=xr(a,o.contentRef,l);return F.useEffect(()=>{const d=l.current;if(d)return dw(d)},[]),S.jsx(Ag,{...r,ref:f,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:ln(r.onCloseAutoFocus,d=>{var m;d.preventDefault(),(m=o.triggerRef.current)==null||m.focus()}),onPointerDownOutside:ln(r.onPointerDownOutside,d=>{const m=d.detail.originalEvent,h=m.button===0&&m.ctrlKey===!0;(m.button===2||h)&&d.preventDefault()}),onFocusOutside:ln(r.onFocusOutside,d=>d.preventDefault())})}),Cw=F.forwardRef((r,a)=>{const o=Fr(Wo,r.__scopeDialog),l=F.useRef(!1),f=F.useRef(!1);return S.jsx(Ag,{...r,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:d=>{var m,h;(m=r.onCloseAutoFocus)==null||m.call(r,d),d.defaultPrevented||(l.current||(h=o.triggerRef.current)==null||h.focus(),d.preventDefault()),l.current=!1,f.current=!1},onInteractOutside:d=>{var x,p;(x=r.onInteractOutside)==null||x.call(r,d),d.defaultPrevented||(l.current=!0,d.detail.originalEvent.type==="pointerdown"&&(f.current=!0));const m=d.target;((p=o.triggerRef.current)==null?void 0:p.contains(m))&&d.preventDefault(),d.detail.originalEvent.type==="focusin"&&f.current&&d.preventDefault()}})}),Ag=F.forwardRef((r,a)=>{const{__scopeDialog:o,trapFocus:l,onOpenAutoFocus:f,onCloseAutoFocus:d,...m}=r,h=Fr(Wo,o),x=F.useRef(null),p=xr(a,x);return E1(),S.jsxs(S.Fragment,{children:[S.jsx(YA,{asChild:!0,loop:!0,trapped:l,onMountAutoFocus:f,onUnmountAutoFocus:d,children:S.jsx(KA,{role:"dialog",id:h.contentId,"aria-describedby":h.descriptionId,"aria-labelledby":h.titleId,"data-state":m0(h.open),...m,ref:p,onDismiss:()=>h.onOpenChange(!1)})}),S.jsxs(S.Fragment,{children:[S.jsx(Ew,{titleId:h.titleId}),S.jsx(Sw,{contentRef:x,descriptionId:h.descriptionId})]})]})}),p0="DialogTitle",gg=F.forwardRef((r,a)=>{const{__scopeDialog:o,...l}=r,f=Fr(p0,o);return S.jsx(fn.h2,{id:f.titleId,...l,ref:a})});gg.displayName=p0;var xg="DialogDescription",vg=F.forwardRef((r,a)=>{const{__scopeDialog:o,...l}=r,f=Fr(xg,o);return S.jsx(fn.p,{id:f.descriptionId,...l,ref:a})});vg.displayName=xg;var yg="DialogClose",_g=F.forwardRef((r,a)=>{const{__scopeDialog:o,...l}=r,f=Fr(yg,o);return S.jsx(fn.button,{type:"button",...l,ref:a,onClick:ln(r.onClick,()=>f.onOpenChange(!1))})});_g.displayName=yg;function m0(r){return r?"open":"closed"}var wg="DialogTitleWarning",[fE,bg]=W_(wg,{contentName:Wo,titleName:p0,docsSlug:"dialog"}),Ew=({titleId:r})=>{const a=bg(wg),o=`\`${a.contentName}\` requires a \`${a.titleName}\` for the component to be accessible for screen reader users. + +If you want to hide the \`${a.titleName}\`, you can wrap it with our VisuallyHidden component. + +For more information, see https://radix-ui.com/primitives/docs/components/${a.docsSlug}`;return F.useEffect(()=>{r&&(document.getElementById(r)||console.error(o))},[o,r]),null},kw="DialogDescriptionWarning",Sw=({contentRef:r,descriptionId:a})=>{const l=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${bg(kw).contentName}}.`;return F.useEffect(()=>{var d;const f=(d=r.current)==null?void 0:d.getAttribute("aria-describedby");a&&f&&(document.getElementById(a)||console.warn(l))},[l,r,a]),null},Cg=cg,Eg=hg,Oc=pg,zc=mg,jc=gg,Hc=vg,kg=_g;const Sg=Cg,Bw=Eg,Bg=F.forwardRef(({className:r,...a},o)=>S.jsx(Oc,{ref:o,className:rt("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...a}));Bg.displayName=Oc.displayName;const A0=F.forwardRef(({className:r,children:a,...o},l)=>S.jsxs(Bw,{children:[S.jsx(Bg,{}),S.jsxs(zc,{ref:l,className:rt("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",r),...o,children:[a,S.jsxs(kg,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[S.jsx(TA,{className:"h-4 w-4"}),S.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));A0.displayName=zc.displayName;const g0=({className:r,...a})=>S.jsx("div",{className:rt("flex flex-col space-y-1.5 text-center sm:text-left",r),...a});g0.displayName="DialogHeader";const Pg=({className:r,...a})=>S.jsx("div",{className:rt("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",r),...a});Pg.displayName="DialogFooter";const x0=F.forwardRef(({className:r,...a},o)=>S.jsx(jc,{ref:o,className:rt("text-lg font-semibold leading-none tracking-tight",r),...a}));x0.displayName=jc.displayName;const v0=F.forwardRef(({className:r,...a},o)=>S.jsx(Hc,{ref:o,className:rt("text-sm text-muted-foreground",r),...a}));v0.displayName=Hc.displayName;function Jp(r){const a=Pw(r),o=F.forwardRef((l,f)=>{const{children:d,...m}=l,h=F.Children.toArray(d),x=h.find(Dw);if(x){const p=x.props.children,y=h.map(v=>v===x?F.Children.count(p)>1?F.Children.only(null):F.isValidElement(p)?p.props.children:null:v);return S.jsx(a,{...m,ref:f,children:F.isValidElement(p)?F.cloneElement(p,void 0,y):null})}return S.jsx(a,{...m,ref:f,children:d})});return o.displayName=`${r}.Slot`,o}function Pw(r){const a=F.forwardRef((o,l)=>{const{children:f,...d}=o;if(F.isValidElement(f)){const m=Fw(f),h=Rw(d,f.props);return f.type!==F.Fragment&&(h.ref=l?ll(l,m):m),F.cloneElement(f,h)}return F.Children.count(f)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var Tw=Symbol("radix.slottable");function Dw(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===Tw}function Rw(r,a){const o={...a};for(const l in a){const f=r[l],d=a[l];/^on[A-Z]/.test(l)?f&&d?o[l]=(...h)=>{const x=d(...h);return f(...h),x}:f&&(o[l]=f):l==="style"?o[l]={...f,...d}:l==="className"&&(o[l]=[f,d].filter(Boolean).join(" "))}return{...r,...o}}function Fw(r){var l,f;let a=(l=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:l.get,o=a&&"isReactWarning"in a&&a.isReactWarning;return o?r.ref:(a=(f=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:f.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}function Nw(r){const a=r+"CollectionProvider",[o,l]=ul(a),[f,d]=o(a,{collectionRef:{current:null},itemMap:new Map}),m=C=>{const{scope:E,children:T}=C,B=Ce.useRef(null),k=Ce.useRef(new Map).current;return S.jsx(f,{scope:E,itemMap:k,collectionRef:B,children:T})};m.displayName=a;const h=r+"CollectionSlot",x=Jp(h),p=Ce.forwardRef((C,E)=>{const{scope:T,children:B}=C,k=d(h,T),N=xr(E,k.collectionRef);return S.jsx(x,{ref:N,children:B})});p.displayName=h;const y=r+"CollectionItemSlot",v="data-radix-collection-item",w=Jp(y),P=Ce.forwardRef((C,E)=>{const{scope:T,children:B,...k}=C,N=Ce.useRef(null),I=xr(E,N),z=d(y,T);return Ce.useEffect(()=>(z.itemMap.set(N,{ref:N,...k}),()=>void z.itemMap.delete(N))),S.jsx(w,{[v]:"",ref:I,children:B})});P.displayName=y;function R(C){const E=d(r+"CollectionConsumer",C);return Ce.useCallback(()=>{const B=E.collectionRef.current;if(!B)return[];const k=Array.from(B.querySelectorAll(`[${v}]`));return Array.from(E.itemMap.values()).sort((z,j)=>k.indexOf(z.ref.current)-k.indexOf(j.ref.current))},[E.collectionRef,E.itemMap])}return[{Provider:m,Slot:p,ItemSlot:P},R,l]}var Lw=F.createContext(void 0);function Tg(r){const a=F.useContext(Lw);return r||a||"ltr"}var Mf="rovingFocusGroup.onEntryFocus",Mw={bubbles:!1,cancelable:!0},cl="RovingFocusGroup",[$f,Dg,Iw]=Nw(cl),[Ow,Rg]=ul(cl,[Iw]),[zw,jw]=Ow(cl),Fg=F.forwardRef((r,a)=>S.jsx($f.Provider,{scope:r.__scopeRovingFocusGroup,children:S.jsx($f.Slot,{scope:r.__scopeRovingFocusGroup,children:S.jsx(Hw,{...r,ref:a})})}));Fg.displayName=cl;var Hw=F.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:o,orientation:l,loop:f=!1,dir:d,currentTabStopId:m,defaultCurrentTabStopId:h,onCurrentTabStopIdChange:x,onEntryFocus:p,preventScrollOnEntryFocus:y=!1,...v}=r,w=F.useRef(null),P=xr(a,w),R=Tg(d),[C,E]=Lc({prop:m,defaultProp:h??null,onChange:x,caller:cl}),[T,B]=F.useState(!1),k=qs(p),N=Dg(o),I=F.useRef(!1),[z,j]=F.useState(0);return F.useEffect(()=>{const H=w.current;if(H)return H.addEventListener(Mf,k),()=>H.removeEventListener(Mf,k)},[k]),S.jsx(zw,{scope:o,orientation:l,dir:R,loop:f,currentTabStopId:C,onItemFocus:F.useCallback(H=>E(H),[E]),onItemShiftTab:F.useCallback(()=>B(!0),[]),onFocusableItemAdd:F.useCallback(()=>j(H=>H+1),[]),onFocusableItemRemove:F.useCallback(()=>j(H=>H-1),[]),children:S.jsx(fn.div,{tabIndex:T||z===0?-1:0,"data-orientation":l,...v,ref:P,style:{outline:"none",...r.style},onMouseDown:ln(r.onMouseDown,()=>{I.current=!0}),onFocus:ln(r.onFocus,H=>{const te=!I.current;if(H.target===H.currentTarget&&te&&!T){const Z=new CustomEvent(Mf,Mw);if(H.currentTarget.dispatchEvent(Z),!Z.defaultPrevented){const V=N().filter(ae=>ae.focusable),ne=V.find(ae=>ae.active),X=V.find(ae=>ae.id===C),de=[ne,X,...V].filter(Boolean).map(ae=>ae.ref.current);Mg(de,y)}}I.current=!1}),onBlur:ln(r.onBlur,()=>B(!1))})})}),Ng="RovingFocusGroupItem",Lg=F.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:o,focusable:l=!0,active:f=!1,tabStopId:d,children:m,...h}=r,x=rl(),p=d||x,y=jw(Ng,o),v=y.currentTabStopId===p,w=Dg(o),{onFocusableItemAdd:P,onFocusableItemRemove:R,currentTabStopId:C}=y;return F.useEffect(()=>{if(l)return P(),()=>R()},[l,P,R]),S.jsx($f.ItemSlot,{scope:o,id:p,focusable:l,active:f,children:S.jsx(fn.span,{tabIndex:v?0:-1,"data-orientation":y.orientation,...h,ref:a,onMouseDown:ln(r.onMouseDown,E=>{l?y.onItemFocus(p):E.preventDefault()}),onFocus:ln(r.onFocus,()=>y.onItemFocus(p)),onKeyDown:ln(r.onKeyDown,E=>{if(E.key==="Tab"&&E.shiftKey){y.onItemShiftTab();return}if(E.target!==E.currentTarget)return;const T=Zw(E,y.orientation,y.dir);if(T!==void 0){if(E.metaKey||E.ctrlKey||E.altKey||E.shiftKey)return;E.preventDefault();let k=w().filter(N=>N.focusable).map(N=>N.ref.current);if(T==="last")k.reverse();else if(T==="prev"||T==="next"){T==="prev"&&k.reverse();const N=k.indexOf(E.currentTarget);k=y.loop?Ww(k,N+1):k.slice(N+1)}setTimeout(()=>Mg(k))}}),children:typeof m=="function"?m({isCurrentTabStop:v,hasTabStop:C!=null}):m})})});Lg.displayName=Ng;var Vw={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Uw(r,a){return a!=="rtl"?r:r==="ArrowLeft"?"ArrowRight":r==="ArrowRight"?"ArrowLeft":r}function Zw(r,a,o){const l=Uw(r.key,o);if(!(a==="vertical"&&["ArrowLeft","ArrowRight"].includes(l))&&!(a==="horizontal"&&["ArrowUp","ArrowDown"].includes(l)))return Vw[l]}function Mg(r,a=!1){const o=document.activeElement;for(const l of r)if(l===o||(l.focus({preventScroll:a}),document.activeElement!==o))return}function Ww(r,a){return r.map((o,l)=>r[(a+l)%r.length])}var qw=Fg,Gw=Lg,Vc="Tabs",[Qw]=ul(Vc,[Rg]),Ig=Rg(),[Kw,y0]=Qw(Vc),Og=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,onValueChange:f,defaultValue:d,orientation:m="horizontal",dir:h,activationMode:x="automatic",...p}=r,y=Tg(h),[v,w]=Lc({prop:l,onChange:f,defaultProp:d??"",caller:Vc});return S.jsx(Kw,{scope:o,baseId:rl(),value:v,onValueChange:w,orientation:m,dir:y,activationMode:x,children:S.jsx(fn.div,{dir:y,"data-orientation":m,...p,ref:a})})});Og.displayName=Vc;var zg="TabsList",jg=F.forwardRef((r,a)=>{const{__scopeTabs:o,loop:l=!0,...f}=r,d=y0(zg,o),m=Ig(o);return S.jsx(qw,{asChild:!0,...m,orientation:d.orientation,dir:d.dir,loop:l,children:S.jsx(fn.div,{role:"tablist","aria-orientation":d.orientation,...f,ref:a})})});jg.displayName=zg;var Hg="TabsTrigger",Vg=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,disabled:f=!1,...d}=r,m=y0(Hg,o),h=Ig(o),x=Wg(m.baseId,l),p=qg(m.baseId,l),y=l===m.value;return S.jsx(Gw,{asChild:!0,...h,focusable:!f,active:y,children:S.jsx(fn.button,{type:"button",role:"tab","aria-selected":y,"aria-controls":p,"data-state":y?"active":"inactive","data-disabled":f?"":void 0,disabled:f,id:x,...d,ref:a,onMouseDown:ln(r.onMouseDown,v=>{!f&&v.button===0&&v.ctrlKey===!1?m.onValueChange(l):v.preventDefault()}),onKeyDown:ln(r.onKeyDown,v=>{[" ","Enter"].includes(v.key)&&m.onValueChange(l)}),onFocus:ln(r.onFocus,()=>{const v=m.activationMode!=="manual";!y&&!f&&v&&m.onValueChange(l)})})})});Vg.displayName=Hg;var Ug="TabsContent",Zg=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,forceMount:f,children:d,...m}=r,h=y0(Ug,o),x=Wg(h.baseId,l),p=qg(h.baseId,l),y=l===h.value,v=F.useRef(y);return F.useEffect(()=>{const w=requestAnimationFrame(()=>v.current=!1);return()=>cancelAnimationFrame(w)},[]),S.jsx($s,{present:f||y,children:({present:w})=>S.jsx(fn.div,{"data-state":y?"active":"inactive","data-orientation":h.orientation,role:"tabpanel","aria-labelledby":x,hidden:!w,id:p,tabIndex:0,...m,ref:a,style:{...r.style,animationDuration:v.current?"0s":void 0},children:w&&d})})});Zg.displayName=Ug;function Wg(r,a){return`${r}-trigger-${a}`}function qg(r,a){return`${r}-content-${a}`}var $w=Og,Gg=jg,Qg=Vg,Kg=Zg;const $g=$w,_0=F.forwardRef(({className:r,...a},o)=>S.jsx(Gg,{ref:o,className:rt("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",r),...a}));_0.displayName=Gg.displayName;const $r=F.forwardRef(({className:r,...a},o)=>S.jsx(Qg,{ref:o,className:rt("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",r),...a}));$r.displayName=Qg.displayName;const Yr=F.forwardRef(({className:r,...a},o)=>S.jsx(Kg,{ref:o,className:rt("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r),...a}));Yr.displayName=Kg.displayName;var Yw=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Xw=Yw.reduce((r,a)=>{const o=f0(`Primitive.${a}`),l=F.forwardRef((f,d)=>{const{asChild:m,...h}=f,x=m?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),S.jsx(x,{...h,ref:d})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{}),Jw="Label",Yg=F.forwardRef((r,a)=>S.jsx(Xw.label,{...r,ref:a,onMouseDown:o=>{var f;o.target.closest("button, input, select, textarea")||((f=r.onMouseDown)==null||f.call(r,o),!o.defaultPrevented&&o.detail>1&&o.preventDefault())}}));Yg.displayName=Jw;var Xg=Yg;const e2=Nc("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),It=F.forwardRef(({className:r,...a},o)=>S.jsx(Xg,{ref:o,className:rt(e2(),r),...a}));It.displayName=Xg.displayName;function t2(r){const a=F.useRef({value:r,previous:r});return F.useMemo(()=>(a.current.value!==r&&(a.current.previous=a.current.value,a.current.value=r),a.current.previous),[r])}function n2(r){const[a,o]=F.useState(void 0);return Ws(()=>{if(r){o({width:r.offsetWidth,height:r.offsetHeight});const l=new ResizeObserver(f=>{if(!Array.isArray(f)||!f.length)return;const d=f[0];let m,h;if("borderBoxSize"in d){const x=d.borderBoxSize,p=Array.isArray(x)?x[0]:x;m=p.inlineSize,h=p.blockSize}else m=r.offsetWidth,h=r.offsetHeight;o({width:m,height:h})});return l.observe(r,{box:"border-box"}),()=>l.unobserve(r)}else o(void 0)},[r]),a}var Uc="Checkbox",[r2]=ul(Uc),[i2,w0]=r2(Uc);function o2(r){const{__scopeCheckbox:a,checked:o,children:l,defaultChecked:f,disabled:d,form:m,name:h,onCheckedChange:x,required:p,value:y="on",internal_do_not_use_render:v}=r,[w,P]=Lc({prop:o,defaultProp:f??!1,onChange:x,caller:Uc}),[R,C]=F.useState(null),[E,T]=F.useState(null),B=F.useRef(!1),k=R?!!m||!!R.closest("form"):!0,N={checked:w,disabled:d,setChecked:P,control:R,setControl:C,name:h,form:m,value:y,hasConsumerStoppedPropagationRef:B,required:p,defaultChecked:ao(f)?!1:f,isFormControl:k,bubbleInput:E,setBubbleInput:T};return S.jsx(i2,{scope:a,...N,children:s2(v)?v(N):l})}var Jg="CheckboxTrigger",ex=F.forwardRef(({__scopeCheckbox:r,onKeyDown:a,onClick:o,...l},f)=>{const{control:d,value:m,disabled:h,checked:x,required:p,setControl:y,setChecked:v,hasConsumerStoppedPropagationRef:w,isFormControl:P,bubbleInput:R}=w0(Jg,r),C=xr(f,y),E=F.useRef(x);return F.useEffect(()=>{const T=d==null?void 0:d.form;if(T){const B=()=>v(E.current);return T.addEventListener("reset",B),()=>T.removeEventListener("reset",B)}},[d,v]),S.jsx(fn.button,{type:"button",role:"checkbox","aria-checked":ao(x)?"mixed":x,"aria-required":p,"data-state":ox(x),"data-disabled":h?"":void 0,disabled:h,value:m,...l,ref:C,onKeyDown:ln(a,T=>{T.key==="Enter"&&T.preventDefault()}),onClick:ln(o,T=>{v(B=>ao(B)?!0:!B),R&&P&&(w.current=T.isPropagationStopped(),w.current||T.stopPropagation())})})});ex.displayName=Jg;var b0=F.forwardRef((r,a)=>{const{__scopeCheckbox:o,name:l,checked:f,defaultChecked:d,required:m,disabled:h,value:x,onCheckedChange:p,form:y,...v}=r;return S.jsx(o2,{__scopeCheckbox:o,checked:f,defaultChecked:d,disabled:h,required:m,onCheckedChange:p,name:l,form:y,value:x,internal_do_not_use_render:({isFormControl:w})=>S.jsxs(S.Fragment,{children:[S.jsx(ex,{...v,ref:a,__scopeCheckbox:o}),w&&S.jsx(ix,{__scopeCheckbox:o})]})})});b0.displayName=Uc;var tx="CheckboxIndicator",nx=F.forwardRef((r,a)=>{const{__scopeCheckbox:o,forceMount:l,...f}=r,d=w0(tx,o);return S.jsx($s,{present:l||ao(d.checked)||d.checked===!0,children:S.jsx(fn.span,{"data-state":ox(d.checked),"data-disabled":d.disabled?"":void 0,...f,ref:a,style:{pointerEvents:"none",...r.style}})})});nx.displayName=tx;var rx="CheckboxBubbleInput",ix=F.forwardRef(({__scopeCheckbox:r,...a},o)=>{const{control:l,hasConsumerStoppedPropagationRef:f,checked:d,defaultChecked:m,required:h,disabled:x,name:p,value:y,form:v,bubbleInput:w,setBubbleInput:P}=w0(rx,r),R=xr(o,P),C=t2(d),E=n2(l);F.useEffect(()=>{const B=w;if(!B)return;const k=window.HTMLInputElement.prototype,I=Object.getOwnPropertyDescriptor(k,"checked").set,z=!f.current;if(C!==d&&I){const j=new Event("click",{bubbles:z});B.indeterminate=ao(d),I.call(B,ao(d)?!1:d),B.dispatchEvent(j)}},[w,C,d,f]);const T=F.useRef(ao(d)?!1:d);return S.jsx(fn.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??T.current,required:h,disabled:x,name:p,value:y,form:v,...a,tabIndex:-1,ref:R,style:{...a.style,...E,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});ix.displayName=rx;function s2(r){return typeof r=="function"}function ao(r){return r==="indeterminate"}function ox(r){return ao(r)?"indeterminate":r?"checked":"unchecked"}const sx=F.forwardRef(({className:r,...a},o)=>S.jsx(b0,{ref:o,className:rt("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",r),...a,children:S.jsx(nx,{className:rt("flex items-center justify-center text-current"),children:S.jsx(Cy,{className:"h-4 w-4"})})}));sx.displayName=b0.displayName;function a2({open:r,contacts:a,undecryptedCount:o,onClose:l,onSelectConversation:f,onCreateContact:d,onCreateChannel:m,onCreateHashtagChannel:h}){const[x,p]=F.useState("existing"),[y,v]=F.useState(""),[w,P]=F.useState(""),[R,C]=F.useState(""),[E,T]=F.useState(!1),[B,k]=F.useState(""),[N,I]=F.useState(!1),z=F.useRef(null),j=async()=>{k(""),I(!0);try{if(x==="new-contact"){if(!y.trim()||!w.trim()){k("Name and public key are required");return}await d(y.trim(),w.trim(),E),f({type:"contact",id:w.trim(),name:y.trim()})}else if(x==="new-room"){if(!y.trim()||!R.trim()){k("Room name and key are required");return}await m(y.trim(),R.trim(),E)}else if(x==="hashtag"){const V=y.trim(),ne=H(V);if(ne){k(ne);return}await h(`#${V}`,E)}l()}catch(V){k(V instanceof Error?V.message:"Failed to create")}finally{I(!1)}},H=V=>V?/^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$/.test(V)?null:"Use letters, numbers, and single dashes (no leading/trailing dashes)":"Channel name is required",te=async()=>{var X;k("");const V=y.trim(),ne=H(V);if(ne){k(ne);return}I(!0);try{await h(`#${V}`,E),v(""),(X=z.current)==null||X.focus()}catch(ie){k(ie instanceof Error?ie.message:"Failed to create")}finally{I(!1)}},Z=x!=="existing"&&o>0;return S.jsx(Sg,{open:r,onOpenChange:V=>!V&&l(),children:S.jsxs(A0,{className:"sm:max-w-[500px]",children:[S.jsxs(g0,{children:[S.jsx(x0,{children:"New Conversation"}),S.jsxs(v0,{className:"sr-only",children:[x==="existing"&&"Select an existing contact to start a conversation",x==="new-contact"&&"Add a new contact by entering their name and public key",x==="new-room"&&"Create a private room with a shared encryption key",x==="hashtag"&&"Join a public hashtag channel"]})]}),S.jsxs($g,{value:x,onValueChange:V=>p(V),className:"w-full",children:[S.jsxs(_0,{className:"grid w-full grid-cols-4",children:[S.jsx($r,{value:"existing",children:"Existing"}),S.jsx($r,{value:"new-contact",children:"Contact"}),S.jsx($r,{value:"new-room",children:"Room"}),S.jsx($r,{value:"hashtag",children:"Hashtag"})]}),S.jsx(Yr,{value:"existing",className:"mt-4",children:S.jsx("div",{className:"max-h-[300px] overflow-y-auto rounded-md border",children:a.length===0?S.jsx("div",{className:"p-4 text-center text-muted-foreground",children:"No contacts available"}):a.map(V=>S.jsx("div",{className:"cursor-pointer px-4 py-2 hover:bg-accent",onClick:()=>{f({type:"contact",id:V.public_key,name:bi(V.name,V.public_key)}),l()},children:bi(V.name,V.public_key)},V.public_key))})}),S.jsxs(Yr,{value:"new-contact",className:"mt-4 space-y-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"contact-name",children:"Name"}),S.jsx(Yt,{id:"contact-name",value:y,onChange:V=>v(V.target.value),placeholder:"Contact name"})]}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"contact-key",children:"Public Key"}),S.jsx(Yt,{id:"contact-key",value:w,onChange:V=>P(V.target.value),placeholder:"64-character hex public key"})]})]}),S.jsxs(Yr,{value:"new-room",className:"mt-4 space-y-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"room-name",children:"Room Name"}),S.jsx(Yt,{id:"room-name",value:y,onChange:V=>v(V.target.value),placeholder:"Room name"})]}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"room-key",children:"Room Key"}),S.jsxs("div",{className:"flex gap-2",children:[S.jsx(Yt,{id:"room-key",value:R,onChange:V=>C(V.target.value),placeholder:"Pre-shared key (hex)",className:"flex-1"}),S.jsx(Nn,{type:"button",variant:"outline",size:"icon",onClick:()=>{const V=new Uint8Array(16);crypto.getRandomValues(V);const ne=Array.from(V).map(X=>X.toString(16).padStart(2,"0")).join("");C(ne)},title:"Generate random key",children:"🎲"})]})]})]}),S.jsx(Yr,{value:"hashtag",className:"mt-4",children:S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"hashtag-name",children:"Hashtag Channel"}),S.jsxs("div",{className:"flex items-center gap-1",children:[S.jsx("span",{className:"text-sm text-muted-foreground",children:"#"}),S.jsx(Yt,{ref:z,id:"hashtag-name",value:y,onChange:V=>v(V.target.value),placeholder:"channel-name",className:"flex-1"})]})]})})]}),Z&&S.jsxs("div",{className:"space-y-1",children:[S.jsxs("div",{className:"flex items-center justify-end space-x-2",children:[S.jsxs(It,{htmlFor:"try-historical",className:"text-sm text-muted-foreground cursor-pointer",children:["Try decrypting ",o.toLocaleString()," stored packet",o!==1?"s":""]}),S.jsx(sx,{id:"try-historical",checked:E,onCheckedChange:V=>T(V===!0)})]}),E&&S.jsx("p",{className:"text-xs text-muted-foreground text-right",children:"Messages will stream in as they decrypt in the background"})]}),B&&S.jsx("div",{className:"text-sm text-destructive",children:B}),S.jsxs(Pg,{children:[S.jsx(Nn,{variant:"outline",onClick:l,children:"Cancel"}),x==="hashtag"&&S.jsx(Nn,{variant:"secondary",onClick:te,disabled:N,children:N?"Creating...":"Create & Add Another"}),x!=="existing"&&S.jsx(Nn,{onClick:j,disabled:N,children:N?"Creating...":"Create"})]})]})})}var l2=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],u2=l2.reduce((r,a)=>{const o=f0(`Primitive.${a}`),l=F.forwardRef((f,d)=>{const{asChild:m,...h}=f,x=m?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),S.jsx(x,{...h,ref:d})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{}),c2="Separator",em="horizontal",d2=["horizontal","vertical"],ax=F.forwardRef((r,a)=>{const{decorative:o,orientation:l=em,...f}=r,d=f2(l)?l:em,h=o?{role:"none"}:{"aria-orientation":d==="vertical"?d:void 0,role:"separator"};return S.jsx(u2.div,{"data-orientation":d,...h,...f,ref:a})});ax.displayName=c2;function f2(r){return d2.includes(r)}var lx=ax;const zs=F.forwardRef(({className:r,orientation:a="horizontal",decorative:o=!0,...l},f)=>S.jsx(lx,{ref:f,decorative:o,orientation:a,className:rt("shrink-0 bg-border",a==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",r),...l}));zs.displayName=lx.displayName;const h2=Nc("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",warning:"border-yellow-500/50 bg-yellow-500/10 text-yellow-200 [&>svg]:text-yellow-500"}},defaultVariants:{variant:"default"}}),ux=F.forwardRef(({className:r,variant:a,...o},l)=>S.jsx("div",{ref:l,role:"alert",className:rt(h2({variant:a}),r),...o}));ux.displayName="Alert";const p2=F.forwardRef(({className:r,...a},o)=>S.jsx("h5",{ref:o,className:rt("mb-1 font-medium leading-none tracking-tight",r),...a}));p2.displayName="AlertTitle";const cx=F.forwardRef(({className:r,...a},o)=>S.jsx("div",{ref:o,className:rt("text-sm [&_p]:leading-relaxed",r),...a}));cx.displayName="AlertDescription";const If=[{name:"USA/Canada",freq:910.525,bw:62.5,sf:7,cr:5},{name:"Australia",freq:915.8,bw:250,sf:10,cr:5},{name:"Australia (narrow)",freq:916.575,bw:62.5,sf:7,cr:8},{name:"Australia SA, WA",freq:923.125,bw:62.5,sf:8,cr:8},{name:"Australia QLD",freq:923.125,bw:62.5,sf:8,cr:5},{name:"New Zealand",freq:917.375,bw:250,sf:11,cr:5},{name:"New Zealand (narrow)",freq:917.375,bw:62.5,sf:7,cr:5},{name:"EU/UK/Switzerland Long Range",freq:869.525,bw:250,sf:11,cr:5},{name:"EU/UK/Switzerland Medium Range",freq:869.525,bw:250,sf:10,cr:5},{name:"EU/UK/Switzerland Narrow",freq:869.618,bw:62.5,sf:8,cr:8},{name:"Czech Republic (Narrow)",freq:869.432,bw:62.5,sf:7,cr:5},{name:"EU 433MHz Long Range",freq:433.65,bw:250,sf:11,cr:5},{name:"Portugal 433MHz",freq:433.375,bw:62.5,sf:9,cr:6},{name:"Portugal 868MHz",freq:869.618,bw:62.5,sf:7,cr:6},{name:"Vietnam",freq:920.25,bw:250,sf:11,cr:5}];function m2({open:r,config:a,health:o,appSettings:l,onClose:f,onSave:d,onSaveAppSettings:m,onSetPrivateKey:h,onReboot:x,onAdvertise:p,onHealthRefresh:y}){const[v,w]=F.useState("radio"),[P,R]=F.useState(""),[C,E]=F.useState(""),[T,B]=F.useState(""),[k,N]=F.useState(""),[I,z]=F.useState(""),[j,H]=F.useState(""),[te,Z]=F.useState(""),[V,ne]=F.useState(""),[X,ie]=F.useState(""),[de,ae]=F.useState(""),[pe,G]=F.useState(!1),[J,q]=F.useState(!1),[D,U]=F.useState(!1),[Q,$]=F.useState(!1),[he,fe]=F.useState(""),[ke,ge]=F.useState("14"),[Ze,$e]=F.useState(!1);F.useEffect(()=>{a&&(R(a.name),E(String(a.lat)),B(String(a.lon)),N(String(a.tx_power)),z(String(a.radio.freq)),H(String(a.radio.bw)),Z(String(a.radio.sf)),ne(String(a.radio.cr)))},[a]),F.useEffect(()=>{l&&ae(String(l.max_radio_contacts))},[l]);const wt=F.useMemo(()=>{const xe=parseFloat(I),Te=parseFloat(j),pt=parseInt(te,10),Ut=parseInt(V,10);for(const en of If)if(en.freq===xe&&en.bw===Te&&en.sf===pt&&en.cr===Ut)return en.name;return"custom"},[I,j,te,V]),ft=xe=>{if(xe==="custom")return;const Te=If.find(pt=>pt.name===xe);Te&&(z(String(Te.freq)),H(String(Te.bw)),Z(String(Te.sf)),ne(String(Te.cr)))},Se=()=>{if(!navigator.geolocation){kt.error("Geolocation not supported",{description:"Your browser does not support geolocation"});return}$(!0),navigator.geolocation.getCurrentPosition(xe=>{E(xe.coords.latitude.toFixed(6)),B(xe.coords.longitude.toFixed(6)),$(!1),kt.success("Location updated")},xe=>{$(!1),kt.error("Failed to get location",{description:xe.message})},{enableHighAccuracy:!0,timeout:1e4})},Ue=async()=>{fe(""),G(!0);try{const xe={lat:parseFloat(C),lon:parseFloat(T),tx_power:parseInt(k,10),radio:{freq:parseFloat(I),bw:parseFloat(j),sf:parseInt(te,10),cr:parseInt(V,10)}};await d(xe),kt.success("Radio config saved")}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save")}finally{G(!1)}},at=async()=>{fe(""),G(!0);try{await d({name:P}),kt.success("Identity saved")}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save")}finally{G(!1)}},Dt=async()=>{fe(""),G(!0);try{const xe=parseInt(de,10);!isNaN(xe)&&xe!==(l==null?void 0:l.max_radio_contacts)&&await m({max_radio_contacts:xe}),kt.success("Serial settings saved")}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save")}finally{G(!1)}},xt=async()=>{if(!X.trim()){fe("Private key is required");return}fe(""),G(!0);try{await h(X.trim()),ie(""),kt.success("Private key set")}catch(xe){fe(xe instanceof Error?xe.message:"Failed to set private key")}finally{G(!1)}},ot=async()=>{if(confirm("Are you sure you want to reboot the radio? The connection will drop temporarily.")){fe(""),q(!0);try{await x(),f()}catch(xe){fe(xe instanceof Error?xe.message:"Failed to reboot radio")}finally{q(!1)}}},Ke=async()=>{U(!0);try{await p()}finally{U(!1)}},Xe=async()=>{const xe=parseInt(ke,10);if(isNaN(xe)||xe<1){kt.error("Invalid retention days",{description:"Retention days must be at least 1"});return}$e(!0);try{const Te=await ct.runMaintenance(xe);kt.success("Database cleanup complete",{description:`Deleted ${Te.packets_deleted} old packet${Te.packets_deleted===1?"":"s"}`}),await y()}catch(Te){console.error("Failed to run maintenance:",Te),kt.error("Database cleanup failed",{description:Te instanceof Error?Te.message:"Unknown error"})}finally{$e(!1)}};return S.jsx(Sg,{open:r,onOpenChange:xe=>!xe&&f(),children:S.jsxs(A0,{className:"sm:max-w-[500px] max-h-[90vh] overflow-y-auto",children:[S.jsxs(g0,{children:[S.jsx(x0,{children:"Radio & Settings"}),S.jsxs(v0,{className:"sr-only",children:[v==="radio"&&"Configure radio frequency, power, and location settings",v==="identity"&&"Manage radio name, public key, and private key",v==="serial"&&"View serial port connection and configure contact sync",v==="database"&&"View database statistics and clean up old packets",v==="advertise"&&"Send a flood advertisement to announce your presence"]})]}),a?S.jsxs($g,{value:v,onValueChange:xe=>w(xe),className:"w-full",children:[S.jsxs(_0,{className:"grid w-full grid-cols-5",children:[S.jsx($r,{value:"radio",children:"Radio"}),S.jsx($r,{value:"identity",children:"Identity"}),S.jsx($r,{value:"serial",children:"Serial"}),S.jsx($r,{value:"database",children:"Database"}),S.jsx($r,{value:"advertise",children:"Advertise"})]}),S.jsxs(Yr,{value:"radio",className:"space-y-4 mt-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"preset",children:"Preset"}),S.jsxs("select",{id:"preset",value:wt,onChange:xe=>ft(xe.target.value),className:"w-full h-10 px-3 rounded-md border border-input bg-background text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",children:[S.jsx("option",{value:"custom",children:"Custom"}),If.map(xe=>S.jsx("option",{value:xe.name,children:xe.name},xe.name))]})]}),S.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"freq",children:"Frequency (MHz)"}),S.jsx(Yt,{id:"freq",type:"number",step:"any",value:I,onChange:xe=>z(xe.target.value)})]}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"bw",children:"Bandwidth (kHz)"}),S.jsx(Yt,{id:"bw",type:"number",step:"any",value:j,onChange:xe=>H(xe.target.value)})]})]}),S.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"sf",children:"Spreading Factor"}),S.jsx(Yt,{id:"sf",type:"number",min:"7",max:"12",value:te,onChange:xe=>Z(xe.target.value)})]}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"cr",children:"Coding Rate"}),S.jsx(Yt,{id:"cr",type:"number",min:"5",max:"8",value:V,onChange:xe=>ne(xe.target.value)})]})]}),S.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"tx-power",children:"TX Power (dBm)"}),S.jsx(Yt,{id:"tx-power",type:"number",value:k,onChange:xe=>N(xe.target.value)})]}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"max-tx",children:"Max TX Power"}),S.jsx(Yt,{id:"max-tx",type:"number",value:a.max_tx_power,disabled:!0})]})]}),S.jsx(zs,{}),S.jsxs("div",{className:"space-y-2",children:[S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsx(It,{children:"Location"}),S.jsx(Nn,{type:"button",variant:"outline",size:"sm",onClick:Se,disabled:Q,children:Q?"Getting...":"📍 Use My Location"})]}),S.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"lat",className:"text-xs text-muted-foreground",children:"Latitude"}),S.jsx(Yt,{id:"lat",type:"number",step:"any",value:C,onChange:xe=>E(xe.target.value)})]}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"lon",className:"text-xs text-muted-foreground",children:"Longitude"}),S.jsx(Yt,{id:"lon",type:"number",step:"any",value:T,onChange:xe=>B(xe.target.value)})]})]})]}),he&&S.jsx("div",{className:"text-sm text-destructive",children:he}),S.jsx(Nn,{onClick:Ue,disabled:pe,className:"w-full",children:pe?"Saving...":"Save Radio Config"})]}),S.jsxs(Yr,{value:"identity",className:"space-y-4 mt-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"public-key",children:"Public Key"}),S.jsx(Yt,{id:"public-key",value:a.public_key,disabled:!0,className:"font-mono text-xs"})]}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"name",children:"Radio Name"}),S.jsx(Yt,{id:"name",value:P,onChange:xe=>R(xe.target.value)})]}),S.jsx(Nn,{onClick:at,disabled:pe,className:"w-full",children:pe?"Saving...":"Set Name"}),S.jsx(zs,{}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"private-key",children:"Set Private Key (write-only)"}),S.jsx(Yt,{id:"private-key",type:"password",autoComplete:"off",value:X,onChange:xe=>ie(xe.target.value),placeholder:"64-character hex private key"}),S.jsx(Nn,{onClick:xt,disabled:pe||!X.trim(),className:"w-full",children:"Set Private Key"})]}),S.jsx(zs,{}),S.jsx(ux,{variant:"warning",children:S.jsx(cx,{children:"Changes to name or private key require a radio reboot to take effect."})}),S.jsx(Nn,{variant:"outline",onClick:ot,disabled:J||pe,className:"w-full border-yellow-500/50 text-yellow-200 hover:bg-yellow-500/10",children:J?"Rebooting...":"Reboot Radio"}),he&&S.jsx("div",{className:"text-sm text-destructive",children:he})]}),S.jsxs(Yr,{value:"serial",className:"space-y-4 mt-4",children:[S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{children:"Serial Port"}),o!=null&&o.serial_port?S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsx("div",{className:"w-2 h-2 rounded-full bg-green-500"}),S.jsx("code",{className:"px-2 py-1 bg-muted rounded text-foreground text-sm",children:o.serial_port})]}):S.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[S.jsx("div",{className:"w-2 h-2 rounded-full bg-gray-500"}),S.jsx("span",{children:"Not connected"})]})]}),S.jsx(zs,{}),S.jsxs("div",{className:"space-y-2",children:[S.jsx(It,{htmlFor:"max-contacts",children:"Max Contacts on Radio"}),S.jsx(Yt,{id:"max-contacts",type:"number",min:"1",max:"1000",value:de,onChange:xe=>ae(xe.target.value)}),S.jsx("p",{className:"text-xs text-muted-foreground",children:"Recent non-repeater contacts loaded to radio for DM auto-ACK (1-1000)"})]}),S.jsx(Nn,{onClick:Dt,disabled:pe,className:"w-full",children:pe?"Saving...":"Save Settings"}),he&&S.jsx("div",{className:"text-sm text-destructive",children:he})]}),S.jsxs(Yr,{value:"database",className:"space-y-4 mt-4",children:[S.jsxs("div",{className:"space-y-3",children:[S.jsxs("div",{className:"flex justify-between items-center",children:[S.jsx("span",{className:"text-sm text-muted-foreground",children:"Database size"}),S.jsxs("span",{className:"font-medium",children:[(o==null?void 0:o.database_size_mb)??"?"," MB"]})]}),o!=null&&o.oldest_undecrypted_timestamp?S.jsxs("div",{className:"flex justify-between items-center",children:[S.jsx("span",{className:"text-sm text-muted-foreground",children:"Oldest undecrypted packet"}),S.jsxs("span",{className:"font-medium",children:[il(o.oldest_undecrypted_timestamp),S.jsxs("span",{className:"text-muted-foreground ml-1",children:["(",Math.floor((Date.now()/1e3-o.oldest_undecrypted_timestamp)/86400)," ","days old)"]})]})]}):S.jsxs("div",{className:"flex justify-between items-center",children:[S.jsx("span",{className:"text-sm text-muted-foreground",children:"Oldest undecrypted packet"}),S.jsx("span",{className:"text-muted-foreground",children:"None"})]})]}),S.jsx(zs,{}),S.jsxs("div",{className:"space-y-3",children:[S.jsx(It,{children:"Cleanup Old Packets"}),S.jsx("p",{className:"text-xs text-muted-foreground",children:"Delete undecrypted packets older than the specified days. This helps manage storage for packets that couldn't be decrypted (unknown channel keys)."}),S.jsxs("div",{className:"flex gap-2 items-end",children:[S.jsxs("div",{className:"space-y-1",children:[S.jsx(It,{htmlFor:"retention-days",className:"text-xs",children:"Days to retain"}),S.jsx(Yt,{id:"retention-days",type:"number",min:"1",max:"365",value:ke,onChange:xe=>ge(xe.target.value),className:"w-24"})]}),S.jsx(Nn,{variant:"outline",onClick:Xe,disabled:Ze,children:Ze?"Cleaning...":"Cleanup"})]})]})]}),S.jsx(Yr,{value:"advertise",className:"space-y-4 mt-4",children:S.jsxs("div",{className:"text-center py-8",children:[S.jsx("p",{className:"text-muted-foreground mb-6",children:"Send a flood advertisement to announce your presence on the mesh network."}),S.jsx(Nn,{size:"lg",onClick:Ke,disabled:D||!(o!=null&&o.radio_connected),className:"bg-green-600 hover:bg-green-700 text-white px-12 py-6 text-lg",children:D?"Sending...":"Send Advertisement"}),!(o!=null&&o.radio_connected)&&S.jsx("p",{className:"text-sm text-destructive mt-4",children:"Radio not connected"})]})})]}):S.jsx("div",{className:"py-8 text-center text-muted-foreground",children:"Loading configuration..."})]})})}function A2(r){return new Date(r*1e3).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function tm(r){return r.split("_").map(a=>a.charAt(0)+a.slice(1).toLowerCase()).join(" ")}function g2(r){if(!r.decrypted||!r.decrypted_info)return tm(r.payload_type);const a=r.decrypted_info;return r.payload_type==="GROUP_TEXT"&&a.channel_name?`GroupText to ${a.channel_name}`:r.payload_type==="TEXT_MESSAGE"&&a.sender?`TextMessage from ${a.sender}`:tm(r.payload_type)}function x2(r){const a=[];return r.snr!==null&&r.snr!==void 0&&a.push(`SNR: ${r.snr.toFixed(1)} dB`),r.rssi!==null&&r.rssi!==void 0&&a.push(`RSSI: ${r.rssi} dBm`),a.join(" | ")}function v2({packets:r}){const a=F.useRef(null);if(F.useEffect(()=>{a.current&&(a.current.scrollTop=a.current.scrollHeight)},[r]),r.length===0)return S.jsx("div",{className:"h-full overflow-y-auto p-5 text-center text-muted-foreground",children:"No packets received yet. Packets will appear here in real-time."});const o=[...r].sort((l,f)=>l.timestamp-f.timestamp);return S.jsx("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-3",ref:a,children:o.map(l=>S.jsxs("div",{className:"py-2 px-3 bg-muted rounded",children:[S.jsxs("div",{className:l.decrypted?"text-primary":"text-destructive",children:[!l.decrypted&&S.jsx("span",{className:"mr-1",children:"🔒"}),g2(l)," • ",A2(l.timestamp)]}),(l.snr!==null||l.rssi!==null)&&S.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:x2(l)}),S.jsx("div",{className:"font-mono text-[11px] break-all text-muted-foreground/70 mt-1",children:l.data.toUpperCase()})]},l.id))})}function dx(r,a){const o=F.useRef(a);F.useEffect(function(){a!==o.current&&r.attributionControl!=null&&(o.current!=null&&r.attributionControl.removeAttribution(o.current),a!=null&&r.attributionControl.addAttribution(a)),o.current=a},[r,a])}function y2(r,a,o){a.center!==o.center&&r.setLatLng(a.center),a.radius!=null&&a.radius!==o.radius&&r.setRadius(a.radius)}const _2=1;function w2(r){return Object.freeze({__version:_2,map:r})}function b2(r,a){return Object.freeze({...r,...a})}const fx=F.createContext(null),hx=fx.Provider;function Zc(){const r=F.useContext(fx);if(r==null)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of ");return r}function C2(r){function a(o,l){const{instance:f,context:d}=r(o).current;return F.useImperativeHandle(l,()=>f),o.children==null?null:Ce.createElement(hx,{value:d},o.children)}return F.forwardRef(a)}function E2(r){function a(o,l){const[f,d]=F.useState(!1),{instance:m}=r(o,d).current;F.useImperativeHandle(l,()=>m),F.useEffect(function(){f&&m.update()},[m,f,o.children]);const h=m._contentNode;return h?u0.createPortal(o.children,h):null}return F.forwardRef(a)}function k2(r){function a(o,l){const{instance:f}=r(o).current;return F.useImperativeHandle(l,()=>f),null}return F.forwardRef(a)}function C0(r,a){const o=F.useRef();F.useEffect(function(){return a!=null&&r.instance.on(a),o.current=a,function(){o.current!=null&&r.instance.off(o.current),o.current=null}},[r,a])}function Wc(r,a){const o=r.pane??a.pane;return o?{...r,pane:o}:r}function S2(r,a){return function(l,f){const d=Zc(),m=r(Wc(l,d),d);return dx(d.map,l.attribution),C0(m.current,l.eventHandlers),a(m.current,d,l,f),m}}var tl={exports:{}};/* @preserve + * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com + * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */var B2=tl.exports,nm;function P2(){return nm||(nm=1,(function(r,a){(function(o,l){l(a)})(B2,(function(o){var l="1.9.4";function f(t){var i,u,A,b;for(u=1,A=arguments.length;u"u"||!L||!L.Mixin)){t=k(t)?t:[t];for(var i=0;i0?Math.floor(t):Math.ceil(t)};G.prototype={clone:function(){return new G(this.x,this.y)},add:function(t){return this.clone()._add(q(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(q(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new G(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new G(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=J(this.x),this.y=J(this.y),this},distanceTo:function(t){t=q(t);var i=t.x-this.x,u=t.y-this.y;return Math.sqrt(i*i+u*u)},equals:function(t){return t=q(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=q(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+w(this.x)+", "+w(this.y)+")"}};function q(t,i,u){return t instanceof G?t:k(t)?new G(t[0],t[1]):t==null?t:typeof t=="object"&&"x"in t&&"y"in t?new G(t.x,t.y):new G(t,i,u)}function D(t,i){if(t)for(var u=i?[t,i]:t,A=0,b=u.length;A=this.min.x&&u.x<=this.max.x&&i.y>=this.min.y&&u.y<=this.max.y},intersects:function(t){t=U(t);var i=this.min,u=this.max,A=t.min,b=t.max,O=b.x>=i.x&&A.x<=u.x,K=b.y>=i.y&&A.y<=u.y;return O&&K},overlaps:function(t){t=U(t);var i=this.min,u=this.max,A=t.min,b=t.max,O=b.x>i.x&&A.xi.y&&A.y=i.lat&&b.lat<=u.lat&&A.lng>=i.lng&&b.lng<=u.lng},intersects:function(t){t=$(t);var i=this._southWest,u=this._northEast,A=t.getSouthWest(),b=t.getNorthEast(),O=b.lat>=i.lat&&A.lat<=u.lat,K=b.lng>=i.lng&&A.lng<=u.lng;return O&&K},overlaps:function(t){t=$(t);var i=this._southWest,u=this._northEast,A=t.getSouthWest(),b=t.getNorthEast(),O=b.lat>i.lat&&A.lati.lng&&A.lng1,Nt=(function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassiveEventSupport",v,i),window.removeEventListener("testPassiveEventSupport",v,i)}catch{}return t})(),Ln=(function(){return!!document.createElement("canvas").getContext})(),it=!!(document.createElementNS&&at("svg").createSVGRect),bt=!!it&&(function(){var t=document.createElement("div");return t.innerHTML="",(t.firstChild&&t.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"})(),qn=!it&&(function(){try{var t=document.createElement("div");t.innerHTML='';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&typeof i.adj=="object"}catch{return!1}})(),At=navigator.platform.indexOf("Mac")===0,Lt=navigator.platform.indexOf("Linux")===0;function qt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var Re={ie:ot,ielt9:Ke,edge:Xe,webkit:xe,android:Te,android23:pt,androidStock:en,opera:Ot,chrome:tn,gecko:pn,safari:Bn,phantom:Zt,opera12:Bt,win:Wt,ie3d:Wn,webkit3d:vn,gecko3d:Ae,any3d:be,mobile:De,mobileWebkit:se,mobileWebkit3d:me,msPointer:Be,pointer:je,touch:Kt,touchNative:We,mobileOpera:Ve,mobileGecko:mt,retina:St,passiveEvents:Nt,canvas:Ln,svg:it,vml:qn,inlineSvg:bt,mac:At,linux:Lt},Ei=Re.msPointer?"MSPointerDown":"pointerdown",Ko=Re.msPointer?"MSPointerMove":"pointermove",fl=Re.msPointer?"MSPointerUp":"pointerup",hl=Re.msPointer?"MSPointerCancel":"pointercancel",Ys={touchstart:Ei,touchmove:Ko,touchend:fl,touchcancel:hl},Nr={touchstart:zt,touchmove:$o,touchend:$o,touchcancel:$o},Jr={},Xs=!1;function Yc(t,i,u){return i==="touchstart"&&Xc(),Nr[i]?(u=Nr[i].bind(this,u),t.addEventListener(Ys[i],u,!1),u):(console.warn("wrong event specified:",i),v)}function pl(t,i,u){if(!Ys[i]){console.warn("wrong event specified:",i);return}t.removeEventListener(Ys[i],u,!1)}function ml(t){Jr[t.pointerId]=t}function Al(t){Jr[t.pointerId]&&(Jr[t.pointerId]=t)}function Js(t){delete Jr[t.pointerId]}function Xc(){Xs||(document.addEventListener(Ei,ml,!0),document.addEventListener(Ko,Al,!0),document.addEventListener(fl,Js,!0),document.addEventListener(hl,Js,!0),Xs=!0)}function $o(t,i){if(i.pointerType!==(i.MSPOINTER_TYPE_MOUSE||"mouse")){i.touches=[];for(var u in Jr)i.touches.push(Jr[u]);i.changedTouches=[i],t(i)}}function zt(t,i){i.MSPOINTER_TYPE_TOUCH&&i.pointerType===i.MSPOINTER_TYPE_TOUCH&&jt(i),$o(t,i)}function Jc(t){var i={},u,A;for(A in t)u=t[A],i[A]=u&&u.bind?u.bind(t):u;return t=i,i.type="dblclick",i.detail=2,i.isTrusted=!1,i._simulated=!0,i}var ea=200;function gl(t,i){t.addEventListener("dblclick",i);var u=0,A;function b(O){if(O.detail!==1){A=O.detail;return}if(!(O.pointerType==="mouse"||O.sourceCapabilities&&!O.sourceCapabilities.firesTouchEvents)){var K=ni(O);if(!(K.some(function(ue){return ue instanceof HTMLLabelElement&&ue.attributes.for})&&!K.some(function(ue){return ue instanceof HTMLInputElement||ue instanceof HTMLSelectElement}))){var re=Date.now();re-u<=ea?(A++,A===2&&i(Jc(O))):A=1,u=re}}}return t.addEventListener("click",b),{dblclick:i,simDblclick:b}}function Yo(t,i){t.removeEventListener("dblclick",i.dblclick),t.removeEventListener("click",i.simDblclick)}var ta=Pi(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ki=Pi(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),co=ki==="webkitTransition"||ki==="OTransition"?ki+"End":"transitionend";function Gn(t){return typeof t=="string"?document.getElementById(t):t}function fo(t,i){var u=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!u||u==="auto")&&document.defaultView){var A=document.defaultView.getComputedStyle(t,null);u=A?A[i]:null}return u==="auto"?null:u}function tt(t,i,u){var A=document.createElement(t);return A.className=i||"",u&&u.appendChild(A),A}function Rt(t){var i=t.parentNode;i&&i.removeChild(t)}function Xo(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function Si(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function vr(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function Bi(t,i){if(t.classList!==void 0)return t.classList.contains(i);var u=Jo(t);return u.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(u)}function et(t,i){if(t.classList!==void 0)for(var u=R(i),A=0,b=u.length;A0?2*window.devicePixelRatio:1;function vl(t){return Re.edge?t.wheelDeltaY/2:t.deltaY&&t.deltaMode===0?-t.deltaY/ed:t.deltaY&&t.deltaMode===1?-t.deltaY*20:t.deltaY&&t.deltaMode===2?-t.deltaY*60:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?-t.detail*20:t.detail?t.detail/-32765*60:0}function xo(t,i){var u=i.relatedTarget;if(!u)return!0;try{for(;u&&u!==t;)u=u.parentNode}catch{return!1}return u!==t}var os={__proto__:null,on:Ye,off:Ct,stopPropagation:ar,disableScrollPropagation:is,disableClickPropagation:Ao,preventDefault:jt,stop:$n,getPropagationPath:ni,getMousePosition:go,getWheelDelta:vl,isExternalTarget:xo,addListener:Ye,removeListener:Ct},ss=pe.extend({run:function(t,i,u,A){this.stop(),this._el=t,this._inProgress=!0,this._duration=u||.25,this._easeOutPower=1/Math.max(A||.5,.2),this._startPos=yr(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=V(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,u=this._duration*1e3;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var u=this.getCenter(),A=this._limitCenter(u,this._zoom,$(t));return u.equals(A)||this.panTo(A,i),this._enforcingBounds=!1,this},panInside:function(t,i){i=i||{};var u=q(i.paddingTopLeft||i.padding||[0,0]),A=q(i.paddingBottomRight||i.padding||[0,0]),b=this.project(this.getCenter()),O=this.project(t),K=this.getPixelBounds(),re=U([K.min.add(u),K.max.subtract(A)]),ue=re.getSize();if(!re.contains(O)){this._enforcingBounds=!0;var ve=O.subtract(re.getCenter()),Pe=re.extend(O).getSize().subtract(ue);b.x+=ve.x<0?-Pe.x:Pe.x,b.y+=ve.y<0?-Pe.y:Pe.y,this.panTo(this.unproject(b),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=f({animate:!1,pan:!0},t===!0?{animate:!0}:t);var i=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var u=this.getSize(),A=i.divideBy(2).round(),b=u.divideBy(2).round(),O=A.subtract(b);return!O.x&&!O.y?this:(t.animate&&t.pan?this.panBy(O):(t.pan&&this._rawPanBy(O),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(m(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:i,newSize:u}))},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=f({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var i=m(this._handleGeolocationResponse,this),u=m(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(i,u,t):navigator.geolocation.getCurrentPosition(i,u,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){if(this._container._leaflet_id){var i=t.code,u=t.message||(i===1?"permission denied":i===2?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+u+"."})}},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var i=t.coords.latitude,u=t.coords.longitude,A=new he(i,u),b=A.toBounds(t.coords.accuracy*2),O=this._locateOptions;if(O.setView){var K=this.getBoundsZoom(b);this.setView(A,O.maxZoom?Math.min(K,O.maxZoom):K)}var re={latlng:A,bounds:b,timestamp:t.timestamp};for(var ue in t.coords)typeof t.coords[ue]=="number"&&(re[ue]=t.coords[ue]);this.fire("locationfound",re)}},addHandler:function(t,i){if(!i)return this;var u=this[t]=new i(this);return this._handlers.push(u),this.options[t]&&u.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch{this._container._leaflet_id=void 0,this._containerId=void 0}this._locationWatchId!==void 0&&this.stopLocate(),this._stop(),Rt(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(ne(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)Rt(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var u="leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),A=tt("div",u,i||this._mapPane);return t&&(this._panes[t]=A),A},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),i=this.unproject(t.getBottomLeft()),u=this.unproject(t.getTopRight());return new Q(i,u)},getMinZoom:function(){return this.options.minZoom===void 0?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===void 0?this._layersMaxZoom===void 0?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,u){t=$(t),u=q(u||[0,0]);var A=this.getZoom()||0,b=this.getMinZoom(),O=this.getMaxZoom(),K=t.getNorthWest(),re=t.getSouthEast(),ue=this.getSize().subtract(u),ve=U(this.project(re,A),this.project(K,A)).getSize(),Pe=Re.any3d?this.options.zoomSnap:1,qe=ue.x/ve.x,nt=ue.y/ve.y,rn=i?Math.max(qe,nt):Math.min(qe,nt);return A=this.getScaleZoom(rn,A),Pe&&(A=Math.round(A/(Pe/100))*(Pe/100),A=i?Math.ceil(A/Pe)*Pe:Math.floor(A/Pe)*Pe),Math.max(b,Math.min(O,A))},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new G(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var u=this._getTopLeftPoint(t,i);return new D(u,u.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(t===void 0?this.getZoom():t)},getPane:function(t){return typeof t=="string"?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var u=this.options.crs;return i=i===void 0?this._zoom:i,u.scale(t)/u.scale(i)},getScaleZoom:function(t,i){var u=this.options.crs;i=i===void 0?this._zoom:i;var A=u.zoom(t*u.scale(i));return isNaN(A)?1/0:A},project:function(t,i){return i=i===void 0?this._zoom:i,this.options.crs.latLngToPoint(fe(t),i)},unproject:function(t,i){return i=i===void 0?this._zoom:i,this.options.crs.pointToLatLng(q(t),i)},layerPointToLatLng:function(t){var i=q(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){var i=this.project(fe(t))._round();return i._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(fe(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds($(t))},distance:function(t,i){return this.options.crs.distance(fe(t),fe(i))},containerPointToLayerPoint:function(t){return q(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return q(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(q(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(fe(t)))},mouseEventToContainerPoint:function(t){return go(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=Gn(t);if(i){if(i._leaflet_id)throw new Error("Map container is already initialized.")}else throw new Error("Map container not found.");Ye(i,"scroll",this._onScroll,this),this._containerId=x(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Re.any3d,et(t,"leaflet-container"+(Re.touch?" leaflet-touch":"")+(Re.retina?" leaflet-retina":"")+(Re.ielt9?" leaflet-oldie":"")+(Re.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=fo(t,"position");i!=="absolute"&&i!=="relative"&&i!=="fixed"&&i!=="sticky"&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Gt(this._mapPane,new G(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(et(t.markerPane,"leaflet-zoom-hide"),et(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i,u){Gt(this._mapPane,new G(0,0));var A=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var b=this._zoom!==i;this._moveStart(b,u)._move(t,i)._moveEnd(b),this.fire("viewreset"),A&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,u,A){i===void 0&&(i=this._zoom);var b=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),A?u&&u.pinch&&this.fire("zoom",u):((b||u&&u.pinch)&&this.fire("zoom",u),this.fire("move",u)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return ne(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Gt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[x(this._container)]=this;var i=t?Ct:Ye;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),Re.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){ne(this._resizeRequest),this._resizeRequest=V(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var u=[],A,b=i==="mouseout"||i==="mouseover",O=t.target||t.srcElement,K=!1;O;){if(A=this._targets[x(O)],A&&(i==="click"||i==="preclick")&&this._draggableMoved(A)){K=!0;break}if(A&&A.listens(i,!0)&&(b&&!xo(O,t)||(u.push(A),b))||O===this._container)break;O=O.parentNode}return!u.length&&!K&&!b&&this.listens(i,!0)&&(u=[this]),u},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var i=t.target||t.srcElement;if(!(!this._loaded||i._leaflet_disable_events||t.type==="click"&&this._isClickDisabled(i))){var u=t.type;u==="mousedown"&&Di(i),this._fireDOMEvent(t,u)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,i,u){if(t.type==="click"){var A=f({},t);A.type="preclick",this._fireDOMEvent(A,A.type,u)}var b=this._findEventTargets(t,i);if(u){for(var O=[],K=0;K0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),u=this.getMaxZoom(),A=Re.any3d?this.options.zoomSnap:1;return A&&(t=Math.round(t/A)*A),Math.max(i,Math.min(u,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){Pt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var u=this._getCenterOffset(t)._trunc();return(i&&i.animate)!==!0&&!this.getSize().contains(u)?!1:(this.panBy(u,i),!0)},_createAnimProxy:function(){var t=this._proxy=tt("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(i){var u=ta,A=this._proxy.style[u];Qn(this._proxy,this.project(i.center,i.zoom),this.getZoomScale(i.zoom,1)),A===this._proxy.style[u]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){Rt(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var t=this.getCenter(),i=this.getZoom();Qn(this._proxy,this.project(t,i),this.getZoomScale(i,1))},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,u){if(this._animatingZoom)return!0;if(u=u||{},!this._zoomAnimated||u.animate===!1||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var A=this.getZoomScale(i),b=this._getCenterOffset(t)._divideBy(1-1/A);return u.animate!==!0&&!this.getSize().contains(b)?!1:(V(function(){this._moveStart(!0,u.noMoveStart||!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,u,A){this._mapPane&&(u&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,et(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:A}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(m(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&Pt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Lr(t,i){return new ut(t,i)}var Pn=ie.extend({options:{position:"topright"},initialize:function(t){C(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),u=this.getPosition(),A=t._controlCorners[u];return et(i,"leaflet-control"),u.indexOf("bottom")!==-1?A.insertBefore(i,A.firstChild):A.appendChild(i),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(Rt(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),Mr=function(t){return new Pn(t)};ut.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},i="leaflet-",u=this._controlContainer=tt("div",i+"control-container",this._container);function A(b,O){var K=i+b+" "+i+O;t[b+O]=tt("div",K,u)}A("top","left"),A("top","right"),A("bottom","left"),A("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)Rt(this._controlCorners[t]);Rt(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var oa=Pn.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,u,A){return u1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(x(t.target)),u=i.overlay?t.type==="add"?"overlayadd":"overlayremove":t.type==="add"?"baselayerchange":null;u&&this._map.fire(u,i)},_createRadioElement:function(t,i){var u='",A=document.createElement("div");return A.innerHTML=u,A.firstChild},_addItem:function(t){var i=document.createElement("label"),u=this._map.hasLayer(t.layer),A;t.overlay?(A=document.createElement("input"),A.type="checkbox",A.className="leaflet-control-layers-selector",A.defaultChecked=u):A=this._createRadioElement("leaflet-base-layers_"+x(this),u),this._layerControlInputs.push(A),A.layerId=x(t.layer),Ye(A,"click",this._onInputClick,this);var b=document.createElement("span");b.innerHTML=" "+t.name;var O=document.createElement("span");i.appendChild(O),O.appendChild(A),O.appendChild(b);var K=t.overlay?this._overlaysList:this._baseLayersList;return K.appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t=this._layerControlInputs,i,u,A=[],b=[];this._handlingClick=!0;for(var O=t.length-1;O>=0;O--)i=t[O],u=this._getLayer(i.layerId).layer,i.checked?A.push(u):i.checked||b.push(u);for(O=0;O=0;b--)i=t[b],u=this._getLayer(i.layerId).layer,i.disabled=u.options.minZoom!==void 0&&Au.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;this._preventClick=!0,Ye(t,"click",jt),this.expand();var i=this;setTimeout(function(){Ct(t,"click",jt),i._preventClick=!1})}}),as=function(t,i,u){return new oa(t,i,u)},Ri=Pn.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",u=tt("div",i+" leaflet-bar"),A=this.options;return this._zoomInButton=this._createButton(A.zoomInText,A.zoomInTitle,i+"-in",u,this._zoomIn),this._zoomOutButton=this._createButton(A.zoomOutText,A.zoomOutTitle,i+"-out",u,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),u},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,u,A,b){var O=tt("a",u,A);return O.innerHTML=t,O.href="#",O.title=i,O.setAttribute("role","button"),O.setAttribute("aria-label",i),Ao(O),Ye(O,"click",$n),Ye(O,"click",b,this),Ye(O,"click",this._refocusOnMap,this),O},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";Pt(this._zoomInButton,i),Pt(this._zoomOutButton,i),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||t._zoom===t.getMinZoom())&&(et(this._zoomOutButton,i),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||t._zoom===t.getMaxZoom())&&(et(this._zoomInButton,i),this._zoomInButton.setAttribute("aria-disabled","true"))}});ut.mergeOptions({zoomControl:!0}),ut.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ri,this.addControl(this.zoomControl))});var yl=function(t){return new Ri(t)},_n=Pn.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i="leaflet-control-scale",u=tt("div",i),A=this.options;return this._addScales(A,i+"-line",u),t.on(A.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),u},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,u){t.metric&&(this._mScale=tt("div",i,u)),t.imperial&&(this._iScale=tt("div",i,u))},_update:function(){var t=this._map,i=t.getSize().y/2,u=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(u)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),u=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,u,i/t)},_updateImperial:function(t){var i=t*3.2808399,u,A,b;i>5280?(u=i/5280,A=this._getRoundNum(u),this._updateScale(this._iScale,A+" mi",A/u)):(b=this._getRoundNum(i),this._updateScale(this._iScale,b+" ft",b/i))},_updateScale:function(t,i,u){t.style.width=Math.round(this.options.maxWidth*u)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),u=t/i;return u=u>=10?10:u>=5?5:u>=3?3:u>=2?2:1,i*u}}),Fi=function(t){return new _n(t)},sa='',ri=Pn.extend({options:{position:"bottomright",prefix:''+(Re.inlineSvg?sa+" ":"")+"Leaflet"},initialize:function(t){C(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=tt("div","leaflet-control-attribution"),Ao(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var u=[];this.options.prefix&&u.push(this.options.prefix),t.length&&u.push(t.join(", ")),this._container.innerHTML=u.join(' ')}}});ut.mergeOptions({attributionControl:!0}),ut.addInitHook(function(){this.options.attributionControl&&new ri().addTo(this)});var td=function(t){return new ri(t)};Pn.Layers=oa,Pn.Zoom=Ri,Pn.Scale=_n,Pn.Attribution=ri,Mr.layers=as,Mr.zoom=yl,Mr.scale=Fi,Mr.attribution=td;var Mn=ie.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Mn.addTo=function(t,i){return t.addHandler(i,this),this};var aa={Events:ae},Ni=Re.touch?"touchstart mousedown":"mousedown",Yn=pe.extend({options:{clickTolerance:3},initialize:function(t,i,u,A){C(this,A),this._element=t,this._dragStartTarget=i||t,this._preventOutline=u},enable:function(){this._enabled||(Ye(this._dragStartTarget,Ni,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Yn._dragging===this&&this.finishDrag(!0),Ct(this._dragStartTarget,Ni,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(this._enabled&&(this._moved=!1,!Bi(this._element,"leaflet-zoom-anim"))){if(t.touches&&t.touches.length!==1){Yn._dragging===this&&this.finishDrag();return}if(!(Yn._dragging||t.shiftKey||t.which!==1&&t.button!==1&&!t.touches)&&(Yn._dragging=this,this._preventOutline&&Di(this._element),ts(),ht(),!this._moving)){this.fire("down");var i=t.touches?t.touches[0]:t,u=_r(this._element);this._startPoint=new G(i.clientX,i.clientY),this._startPos=yr(this._element),this._parentScale=sr(u);var A=t.type==="mousedown";Ye(document,A?"mousemove":"touchmove",this._onMove,this),Ye(document,A?"mouseup":"touchend touchcancel",this._onUp,this)}}},_onMove:function(t){if(this._enabled){if(t.touches&&t.touches.length>1){this._moved=!0;return}var i=t.touches&&t.touches.length===1?t.touches[0]:t,u=new G(i.clientX,i.clientY)._subtract(this._startPoint);!u.x&&!u.y||Math.abs(u.x)+Math.abs(u.y)O&&(K=re,O=ue);O>u&&(i[K]=1,ca(t,i,u,A,K),ca(t,i,u,K,b))}function od(t,i){for(var u=[t[0]],A=1,b=0,O=t.length;Ai&&(u.push(t[A]),b=A);return bi.max.x&&(u|=2),t.yi.max.y&&(u|=8),u}function sd(t,i){var u=i.x-t.x,A=i.y-t.y;return u*u+A*A}function oi(t,i,u,A){var b=i.x,O=i.y,K=u.x-b,re=u.y-O,ue=K*K+re*re,ve;return ue>0&&(ve=((t.x-b)*K+(t.y-O)*re)/ue,ve>1?(b=u.x,O=u.y):ve>0&&(b+=K*ve,O+=re*ve)),K=t.x-b,re=t.y-O,A?K*K+re*re:new G(b,O)}function In(t){return!k(t[0])||typeof t[0][0]!="object"&&typeof t[0][0]<"u"}function Cl(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),In(t)}function El(t,i){var u,A,b,O,K,re,ue,ve;if(!t||t.length===0)throw new Error("latlngs not passed");In(t)||(console.warn("latlngs are not flat! Only the first ring will be used"),t=t[0]);var Pe=fe([0,0]),qe=$(t),nt=qe.getNorthWest().distanceTo(qe.getSouthWest())*qe.getNorthEast().distanceTo(qe.getNorthWest());nt<1700&&(Pe=ua(t));var rn=t.length,Xt=[];for(u=0;uA){ue=(O-A)/b,ve=[re.x-ue*(re.x-K.x),re.y-ue*(re.y-K.y)];break}var wn=i.unproject(q(ve));return fe([wn.lat+Pe.lat,wn.lng+Pe.lng])}var kl={__proto__:null,simplify:ls,pointToSegmentDistance:wl,closestPointOnSegment:rd,clipSegment:bl,_getEdgeIntersection:us,_getBitCode:ii,_sqClosestPointOnSegment:oi,isFlat:In,_flat:Cl,polylineCenter:El},fa={project:function(t){return new G(t.lng,t.lat)},unproject:function(t){return new he(t.y,t.x)},bounds:new D([-180,-90],[180,90])},ha={R:6378137,R_MINOR:6356752314245179e-9,bounds:new D([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(t){var i=Math.PI/180,u=this.R,A=t.lat*i,b=this.R_MINOR/u,O=Math.sqrt(1-b*b),K=O*Math.sin(A),re=Math.tan(Math.PI/4-A/2)/Math.pow((1-K)/(1+K),O/2);return A=-u*Math.log(Math.max(re,1e-10)),new G(t.lng*i*u,A)},unproject:function(t){for(var i=180/Math.PI,u=this.R,A=this.R_MINOR/u,b=Math.sqrt(1-A*A),O=Math.exp(-t.y/u),K=Math.PI/2-2*Math.atan(O),re=0,ue=.1,ve;re<15&&Math.abs(ue)>1e-7;re++)ve=b*Math.sin(K),ve=Math.pow((1-ve)/(1+ve),b/2),ue=Math.PI/2-2*Math.atan(O*ve)-K,K+=ue;return new he(K*i,t.x*i/u)}},ad={__proto__:null,LonLat:fa,Mercator:ha,SphericalMercator:$e},ld=f({},ge,{code:"EPSG:3395",projection:ha,transformation:(function(){var t=.5/(Math.PI*ha.R);return ft(t,.5,-t,.5)})()}),Sl=f({},ge,{code:"EPSG:4326",projection:fa,transformation:ft(1/180,1,-1/180,.5)}),ud=f({},ke,{projection:fa,transformation:ft(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var u=i.lng-t.lng,A=i.lat-t.lat;return Math.sqrt(u*u+A*A)},infinite:!0});ke.Earth=ge,ke.EPSG3395=ld,ke.EPSG3857=Se,ke.EPSG900913=Ue,ke.EPSG4326=Sl,ke.Simple=ud;var Xn=pe.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[x(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[x(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var u=this.getEvents();i.on(u,this),this.once("remove",function(){i.off(u,this)},this)}this.onAdd(i),this.fire("add"),i.fire("layeradd",{layer:this})}}});ut.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=x(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=x(t);return this._layers[i]?(this._loaded&&t.onRemove(this),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return x(t)in this._layers},eachLayer:function(t,i){for(var u in this._layers)t.call(i,this._layers[u]);return this},_addLayers:function(t){t=t?k(t)?t:[t]:[];for(var i=0,u=t.length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===void 0&&this._layersMinZoom&&this.getZoom()=2&&i[0]instanceof he&&i[0].equals(i[u-1])&&i.pop(),i},_setLatLngs:function(t){Tn.prototype._setLatLngs.call(this,t),In(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return In(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,u=new G(i,i);if(t=new D(t.min.subtract(u),t.max.add(u)),this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(t))){if(this.options.noClip){this._parts=this._rings;return}for(var A=0,b=this._rings.length,O;At.y!=b.y>t.y&&t.x<(b.x-A.x)*(t.y-A.y)/(b.y-A.y)+A.x&&(i=!i);return i||Tn.prototype._containsPoint.call(this,t,!0)}});function fd(t,i){return new Cr(t,i)}var lr=wr.extend({initialize:function(t,i){C(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i=k(t)?t:t.features,u,A,b;if(i){for(u=0,A=i.length;u0&&b.push(b[0].slice()),b}function Ii(t,i){return t.feature?f({},t.feature,{geometry:i}):As(i)}function As(t){return t.type==="Feature"||t.type==="FeatureCollection"?t:{type:"Feature",properties:{},geometry:t}}var ma={toGeoJSON:function(t){return Ii(this,{type:"Point",coordinates:ps(this.getLatLng(),t)})}};br.include(ma),ds.include(ma),cs.include(ma),Tn.include({toGeoJSON:function(t){var i=!In(this._latlngs),u=ms(this._latlngs,i?1:0,!1,t);return Ii(this,{type:(i?"Multi":"")+"LineString",coordinates:u})}}),Cr.include({toGeoJSON:function(t){var i=!In(this._latlngs),u=i&&!In(this._latlngs[0]),A=ms(this._latlngs,u?2:i?1:0,!0,t);return i||(A=[A]),Ii(this,{type:(u?"Multi":"")+"Polygon",coordinates:A})}}),Ir.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(u){i.push(u.toGeoJSON(t).geometry.coordinates)}),Ii(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(i==="MultiPoint")return this.toMultiPoint(t);var u=i==="GeometryCollection",A=[];return this.eachLayer(function(b){if(b.toGeoJSON){var O=b.toGeoJSON(t);if(u)A.push(O.geometry);else{var K=As(O);K.type==="FeatureCollection"?A.push.apply(A,K.features):A.push(K)}}}),u?Ii(this,{geometries:A,type:"GeometryCollection"}):{type:"FeatureCollection",features:A}}});function Dl(t,i){return new lr(t,i)}var Jn=Dl,zr=Xn.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,u){this._url=t,this._bounds=$(i),C(this,u)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(et(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){Rt(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&Si(this._image),this},bringToBack:function(){return this._map&&vr(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=$(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t=this._url.tagName==="IMG",i=this._image=t?this._url:tt("img");if(et(i,"leaflet-image-layer"),this._zoomAnimated&&et(i,"leaflet-zoom-animated"),this.options.className&&et(i,this.options.className),i.onselectstart=v,i.onmousemove=v,i.onload=m(this.fire,this,"load"),i.onerror=m(this._overlayOnError,this,"error"),(this.options.crossOrigin||this.options.crossOrigin==="")&&(i.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t){this._url=i.src;return}i.src=this._url,i.alt=this.options.alt},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),u=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;Qn(this._image,u,i)},_reset:function(){var t=this._image,i=new D(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),u=i.getSize();Gt(t,i.min),t.style.width=u.x+"px",t.style.height=u.y+"px"},_updateOpacity:function(){yn(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)},getCenter:function(){return this._bounds.getCenter()}}),Rl=function(t,i,u){return new zr(t,i,u)},Aa=zr.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var t=this._url.tagName==="VIDEO",i=this._image=t?this._url:tt("video");if(et(i,"leaflet-image-layer"),this._zoomAnimated&&et(i,"leaflet-zoom-animated"),this.options.className&&et(i,this.options.className),i.onselectstart=v,i.onmousemove=v,i.onloadeddata=m(this.fire,this,"load"),t){for(var u=i.getElementsByTagName("source"),A=[],b=0;b0?A:[i.src];return}k(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(i.style,"objectFit")&&(i.style.objectFit="fill"),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop,i.muted=!!this.options.muted,i.playsInline=!!this.options.playsInline;for(var O=0;Ob?(i.height=b+"px",et(t,O)):Pt(t,O),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),u=this._getAnchor();Gt(this._container,i.add(u))},_adjustPan:function(){if(this.options.autoPan){if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning){this._autopanning=!1;return}var t=this._map,i=parseInt(fo(this._container,"marginBottom"),10)||0,u=this._container.offsetHeight+i,A=this._containerWidth,b=new G(this._containerLeft,-u-this._containerBottom);b._add(yr(this._container));var O=t.layerPointToContainerPoint(b),K=q(this.options.autoPanPadding),re=q(this.options.autoPanPaddingTopLeft||K),ue=q(this.options.autoPanPaddingBottomRight||K),ve=t.getSize(),Pe=0,qe=0;O.x+A+ue.x>ve.x&&(Pe=O.x+A-ve.x+ue.x),O.x-Pe-re.x<0&&(Pe=O.x-re.x),O.y+u+ue.y>ve.y&&(qe=O.y+u-ve.y+ue.y),O.y-qe-re.y<0&&(qe=O.y-re.y),(Pe||qe)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([Pe,qe]))}},_getAnchor:function(){return q(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),Oi=function(t,i){return new gs(t,i)};ut.mergeOptions({closePopupOnClick:!0}),ut.include({openPopup:function(t,i,u){return this._initOverlay(gs,t,i,u).openOn(this),this},closePopup:function(t){return t=arguments.length?t:this._popup,t&&t.close(),this}}),Xn.include({bindPopup:function(t,i){return this._popup=this._initOverlay(gs,this._popup,t,i),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof wr||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return this._popup?this._popup.isOpen():!1},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){if(!(!this._popup||!this._map)){$n(t);var i=t.layer||t.target;if(this._popup._source===i&&!(i instanceof Or)){this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng);return}this._popup._source=i,this.openPopup(t.latlng)}},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){t.originalEvent.keyCode===13&&this._openPopup(t)}});var zi=ur.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){ur.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){ur.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=ur.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip",i=t+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=tt("div",i),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+x(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i,u,A=this._map,b=this._container,O=A.latLngToContainerPoint(A.getCenter()),K=A.layerPointToContainerPoint(t),re=this.options.direction,ue=b.offsetWidth,ve=b.offsetHeight,Pe=q(this.options.offset),qe=this._getAnchor();re==="top"?(i=ue/2,u=ve):re==="bottom"?(i=ue/2,u=0):re==="center"?(i=ue/2,u=ve/2):re==="right"?(i=0,u=ve/2):re==="left"?(i=ue,u=ve/2):K.xthis.options.maxZoom||uA?this._retainParent(b,O,K,A):!1)},_retainChildren:function(t,i,u,A){for(var b=2*t;b<2*t+2;b++)for(var O=2*i;O<2*i+2;O++){var K=new G(b,O);K.z=u+1;var re=this._tileCoordsToKey(K),ue=this._tiles[re];if(ue&&ue.active){ue.retain=!0;continue}else ue&&ue.loaded&&(ue.retain=!0);u+1this.options.maxZoom||this.options.minZoom!==void 0&&b1){this._setView(t,u);return}for(var qe=b.min.y;qe<=b.max.y;qe++)for(var nt=b.min.x;nt<=b.max.x;nt++){var rn=new G(nt,qe);if(rn.z=this._tileZoom,!!this._isValidTile(rn)){var Xt=this._tiles[this._tileCoordsToKey(rn)];Xt?Xt.current=!0:K.push(rn)}}if(K.sort(function(wn,Zi){return wn.distanceTo(O)-Zi.distanceTo(O)}),K.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var Dn=document.createDocumentFragment();for(nt=0;ntu.max.x)||!i.wrapLat&&(t.yu.max.y))return!1}if(!this.options.bounds)return!0;var A=this._tileCoordsToBounds(t);return $(this.options.bounds).overlaps(A)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,u=this.getTileSize(),A=t.scaleBy(u),b=A.add(u),O=i.unproject(A,t.z),K=i.unproject(b,t.z);return[O,K]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),u=new Q(i[0],i[1]);return this.options.noWrap||(u=this._map.wrapLatLngBounds(u)),u},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),u=new G(+i[0],+i[1]);return u.z=+i[2],u},_removeTile:function(t){var i=this._tiles[t];i&&(Rt(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){et(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=v,t.onmousemove=v,Re.ielt9&&this.options.opacity<1&&yn(t,this.options.opacity)},_addTile:function(t,i){var u=this._getTilePos(t),A=this._tileCoordsToKey(t),b=this.createTile(this._wrapCoords(t),m(this._tileReady,this,t));this._initTile(b),this.createTile.length<2&&V(m(this._tileReady,this,t,null,b)),Gt(b,u),this._tiles[A]={el:b,coords:t,current:!0},i.appendChild(b),this.fire("tileloadstart",{tile:b,coords:t})},_tileReady:function(t,i,u){i&&this.fire("tileerror",{error:i,tile:u,coords:t});var A=this._tileCoordsToKey(t);u=this._tiles[A],u&&(u.loaded=+new Date,this._map._fadeAnimated?(yn(u.el,0),ne(this._fadeFrame),this._fadeFrame=V(this._updateOpacity,this)):(u.active=!0,this._pruneTiles()),i||(et(u.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:u.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Re.ielt9||!this._map._fadeAnimated?V(this._pruneTiles,this):setTimeout(m(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new G(this._wrapX?y(t.x,this._wrapX):t.x,this._wrapY?y(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new D(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});function ji(t){return new jr(t)}var Hr=jr.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,i){this._url=t,i=C(this,i),i.detectRetina&&Re.retina&&i.maxZoom>0?(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom=Math.min(i.maxZoom,i.minZoom+1)):(i.zoomOffset++,i.maxZoom=Math.max(i.minZoom,i.maxZoom-1)),i.minZoom=Math.max(0,i.minZoom)):i.zoomReverse?i.minZoom=Math.min(i.maxZoom,i.minZoom):i.maxZoom=Math.max(i.minZoom,i.maxZoom),typeof i.subdomains=="string"&&(i.subdomains=i.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&i===void 0&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var u=document.createElement("img");return Ye(u,"load",m(this._tileOnLoad,this,i,u)),Ye(u,"error",m(this._tileOnError,this,i,u)),(this.options.crossOrigin||this.options.crossOrigin==="")&&(u.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),typeof this.options.referrerPolicy=="string"&&(u.referrerPolicy=this.options.referrerPolicy),u.alt="",u.src=this.getTileUrl(t),u},getTileUrl:function(t){var i={r:Re.retina?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var u=this._globalTileRange.max.y-t.y;this.options.tms&&(i.y=u),i["-y"]=u}return B(this._url,f(i,this.options))},_tileOnLoad:function(t,i){Re.ielt9?setTimeout(m(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,u){var A=this.options.errorTileUrl;A&&i.getAttribute("src")!==A&&(i.src=A),t(u,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,u=this.options.zoomReverse,A=this.options.zoomOffset;return u&&(t=i-t),t+A},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)if(this._tiles[t].coords.z!==this._tileZoom&&(i=this._tiles[t].el,i.onload=v,i.onerror=v,!i.complete)){i.src=I;var u=this._tiles[t].coords;Rt(i),delete this._tiles[t],this.fire("tileabort",{tile:i,coords:u})}},_removeTile:function(t){var i=this._tiles[t];if(i)return i.el.setAttribute("src",I),jr.prototype._removeTile.call(this,t)},_tileReady:function(t,i,u){if(!(!this._map||u&&u.getAttribute("src")===I))return jr.prototype._tileReady.call(this,t,i,u)}});function va(t,i){return new Hr(t,i)}var bo=Hr.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,i){this._url=t;var u=f({},this.defaultWmsParams);for(var A in i)A in this.options||(u[A]=i[A]);i=C(this,i);var b=i.detectRetina&&Re.retina?2:1,O=this.getTileSize();u.width=O.x*b,u.height=O.y*b,this.wmsParams=u},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,Hr.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),u=this._crs,A=U(u.project(i[0]),u.project(i[1])),b=A.min,O=A.max,K=(this._wmsVersion>=1.3&&this._crs===Sl?[b.y,b.x,O.y,O.x]:[b.x,b.y,O.x,O.y]).join(","),re=Hr.prototype.getTileUrl.call(this,t);return re+E(this.wmsParams,re,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+K},setParams:function(t,i){return f(this.wmsParams,t),i||this.redraw(),this}});function Ll(t,i){return new bo(t,i)}Hr.WMS=bo,va.wms=Ll;var cr=Xn.extend({options:{padding:.1},initialize:function(t){C(this,t),x(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),et(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var u=this._map.getZoomScale(i,this._zoom),A=this._map.getSize().multiplyBy(.5+this.options.padding),b=this._map.project(this._center,i),O=A.multiplyBy(-u).add(b).subtract(this._map._getNewPixelOrigin(t,i));Re.any3d?Qn(this._container,O,u):Gt(this._container,O)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),u=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new D(u,u.add(i.multiplyBy(1+t*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),ya=cr.extend({options:{tolerance:0},getEvents:function(){var t=cr.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){cr.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");Ye(t,"mousemove",this._onMouseMove,this),Ye(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Ye(t,"mouseout",this._handleMouseOut,this),t._leaflet_disable_events=!0,this._ctx=t.getContext("2d")},_destroyContainer:function(){ne(this._redrawRequest),delete this._ctx,Rt(this._container),Ct(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){var t;this._redrawBounds=null;for(var i in this._layers)t=this._layers[i],t._update();this._redraw()}},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){cr.prototype._update.call(this);var t=this._bounds,i=this._container,u=t.getSize(),A=Re.retina?2:1;Gt(i,t.min),i.width=A*u.x,i.height=A*u.y,i.style.width=u.x+"px",i.style.height=u.y+"px",Re.retina&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){cr.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[x(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,u=i.next,A=i.prev;u?u.prev=A:this._drawLast=A,A?A.next=u:this._drawFirst=u,delete t._order,delete this._layers[x(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(typeof t.options.dashArray=="string"){var i=t.options.dashArray.split(/[, ]+/),u=[],A,b;for(b=0;b')}}catch{}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}})(),Ml={_initContainer:function(){this._container=tt("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(cr.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=Hi("shape");et(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=Hi("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[x(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;Rt(i),t.removeInteractiveTarget(i),delete this._layers[x(t)]},_updateStyle:function(t){var i=t._stroke,u=t._fill,A=t.options,b=t._container;b.stroked=!!A.stroke,b.filled=!!A.fill,A.stroke?(i||(i=t._stroke=Hi("stroke")),b.appendChild(i),i.weight=A.weight+"px",i.color=A.color,i.opacity=A.opacity,A.dashArray?i.dashStyle=k(A.dashArray)?A.dashArray.join(" "):A.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=A.lineCap.replace("butt","flat"),i.joinstyle=A.lineJoin):i&&(b.removeChild(i),t._stroke=null),A.fill?(u||(u=t._fill=Hi("fill")),b.appendChild(u),u.color=A.fillColor||A.color,u.opacity=A.fillOpacity):u&&(b.removeChild(u),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),u=Math.round(t._radius),A=Math.round(t._radiusY||u);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+u+","+A+" 0,"+65535*360)},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){Si(t._container)},_bringToBack:function(t){vr(t._container)}},er=Re.vml?Hi:at,ai=cr.extend({_initContainer:function(){this._container=er("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=er("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){Rt(this._container),Ct(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){cr.prototype._update.call(this);var t=this._bounds,i=t.getSize(),u=this._container;(!this._svgSize||!this._svgSize.equals(i))&&(this._svgSize=i,u.setAttribute("width",i.x),u.setAttribute("height",i.y)),Gt(u,t.min),u.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=er("path");t.options.className&&et(i,t.options.className),t.options.interactive&&et(i,"leaflet-interactive"),this._updateStyle(t),this._layers[x(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){Rt(t._path),t.removeInteractiveTarget(t._path),delete this._layers[x(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,u=t.options;i&&(u.stroke?(i.setAttribute("stroke",u.color),i.setAttribute("stroke-opacity",u.opacity),i.setAttribute("stroke-width",u.weight),i.setAttribute("stroke-linecap",u.lineCap),i.setAttribute("stroke-linejoin",u.lineJoin),u.dashArray?i.setAttribute("stroke-dasharray",u.dashArray):i.removeAttribute("stroke-dasharray"),u.dashOffset?i.setAttribute("stroke-dashoffset",u.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),u.fill?(i.setAttribute("fill",u.fillColor||u.color),i.setAttribute("fill-opacity",u.fillOpacity),i.setAttribute("fill-rule",u.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,Dt(t._parts,i))},_updateCircle:function(t){var i=t._point,u=Math.max(Math.round(t._radius),1),A=Math.max(Math.round(t._radiusY),1)||u,b="a"+u+","+A+" 0 1,0 ",O=t._empty()?"M0 0":"M"+(i.x-u)+","+i.y+b+u*2+",0 "+b+-u*2+",0 ";this._setPath(t,O)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){Si(t._path)},_bringToBack:function(t){vr(t._path)}});Re.vml&&ai.include(Ml);function vs(t){return Re.svg||Re.vml?new ai(t):null}ut.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if(t==="overlayPane"||t===void 0)return!1;var i=this._paneRenderers[t];return i===void 0&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&_a(t)||vs(t)}});var Il=Cr.extend({initialize:function(t,i){Cr.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=$(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});function hd(t,i){return new Il(t,i)}ai.create=er,ai.pointsToPath=Dt,lr.geometryToLayer=Mi,lr.coordsToLatLng=hs,lr.coordsToLatLngs=_o,lr.latLngToCoords=ps,lr.latLngsToCoords=ms,lr.getFeature=Ii,lr.asFeature=As,ut.mergeOptions({boxZoom:!0});var Vi=Mn.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){Ye(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Ct(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){Rt(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){this._resetStateTimeout!==0&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||t.which!==1&&t.button!==1)return!1;this._clearDeferredResetState(),this._resetState(),ht(),ts(),this._startPoint=this._map.mouseEventToContainerPoint(t),Ye(document,{contextmenu:$n,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=tt("div","leaflet-zoom-box",this._container),et(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new D(this._point,this._startPoint),u=i.getSize();Gt(this._box,i.min),this._box.style.width=u.x+"px",this._box.style.height=u.y+"px"},_finish:function(){this._moved&&(Rt(this._box),Pt(this._container,"leaflet-crosshair")),Ti(),ns(),Ct(document,{contextmenu:$n,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if(!(t.which!==1&&t.button!==1)&&(this._finish(),!!this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(m(this._resetState,this),0);var i=new Q(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){t.keyCode===27&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});ut.addInitHook("addHandler","boxZoom",Vi),ut.mergeOptions({doubleClickZoom:!0});var Ol=Mn.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,u=i.getZoom(),A=i.options.zoomDelta,b=t.originalEvent.shiftKey?u-A:u+A;i.options.doubleClickZoom==="center"?i.setZoom(b):i.setZoomAround(t.containerPoint,b)}});ut.addInitHook("addHandler","doubleClickZoom",Ol),ut.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var wa=Mn.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Yn(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}et(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){Pt(this._map._container,"leaflet-grab"),Pt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=$(this._map.options.maxBounds);this._offsetLimit=U(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,u=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(u),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(!(!this._viscosity||!this._offsetLimit)){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),u=this._initialWorldOffset,A=this._draggable._newPos.x,b=(A-i+u)%t+i-u,O=(A+i+u)%t-i-u,K=Math.abs(b+u)0?O:-O))-i;this._delta=0,this._startTime=null,K&&(t.options.scrollWheelZoom==="center"?t.setZoom(i+K):t.setZoomAround(this._lastMousePos,i+K))}});ut.addInitHook("addHandler","scrollWheelZoom",Et);var Ca=600;ut.mergeOptions({tapHold:Re.touchNative&&Re.safari&&Re.mobile,tapTolerance:15});var Co=Mn.extend({addHooks:function(){Ye(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Ct(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(clearTimeout(this._holdTimeout),t.touches.length===1){var i=t.touches[0];this._startPos=this._newPos=new G(i.clientX,i.clientY),this._holdTimeout=setTimeout(m(function(){this._cancel(),this._isTapValid()&&(Ye(document,"touchend",jt),Ye(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",i))},this),Ca),Ye(document,"touchend touchcancel contextmenu",this._cancel,this),Ye(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function t(){Ct(document,"touchend",jt),Ct(document,"touchend touchcancel",t)},_cancel:function(){clearTimeout(this._holdTimeout),Ct(document,"touchend touchcancel contextmenu",this._cancel,this),Ct(document,"touchmove",this._onMove,this)},_onMove:function(t){var i=t.touches[0];this._newPos=new G(i.clientX,i.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(t,i){var u=new MouseEvent(t,{bubbles:!0,cancelable:!0,view:window,screenX:i.screenX,screenY:i.screenY,clientX:i.clientX,clientY:i.clientY});u._simulated=!0,i.target.dispatchEvent(u)}});ut.addInitHook("addHandler","tapHold",Co),ut.mergeOptions({touchZoom:Re.touch,bounceAtZoomLimits:!0});var Ui=Mn.extend({addHooks:function(){et(this._map._container,"leaflet-touch-zoom"),Ye(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){Pt(this._map._container,"leaflet-touch-zoom"),Ct(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(!(!t.touches||t.touches.length!==2||i._animatingZoom||this._zooming)){var u=i.mouseEventToContainerPoint(t.touches[0]),A=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),i.options.touchZoom!=="center"&&(this._pinchStartLatLng=i.containerPointToLatLng(u.add(A)._divideBy(2))),this._startDist=u.distanceTo(A),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),Ye(document,"touchmove",this._onTouchMove,this),Ye(document,"touchend touchcancel",this._onTouchEnd,this),jt(t)}},_onTouchMove:function(t){if(!(!t.touches||t.touches.length!==2||!this._zooming)){var i=this._map,u=i.mouseEventToContainerPoint(t.touches[0]),A=i.mouseEventToContainerPoint(t.touches[1]),b=u.distanceTo(A)/this._startDist;if(this._zoom=i.getScaleZoom(b,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&b>1)&&(this._zoom=i._limitZoom(this._zoom)),i.options.touchZoom==="center"){if(this._center=this._startLatLng,b===1)return}else{var O=u._add(A)._divideBy(2)._subtract(this._centerPoint);if(b===1&&O.x===0&&O.y===0)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(O),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),ne(this._animRequest);var K=m(i._move,i,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=V(K,this,!0),jt(t)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,ne(this._animRequest),Ct(document,"touchmove",this._onTouchMove,this),Ct(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))}});ut.addInitHook("addHandler","touchZoom",Ui),ut.BoxZoom=Vi,ut.DoubleClickZoom=Ol,ut.Drag=wa,ut.Keyboard=ba,ut.ScrollWheelZoom=Et,ut.TapHold=Co,ut.TouchZoom=Ui,o.Bounds=D,o.Browser=Re,o.CRS=ke,o.Canvas=ya,o.Circle=ds,o.CircleMarker=cs,o.Class=ie,o.Control=Pn,o.DivIcon=xs,o.DivOverlay=ur,o.DomEvent=os,o.DomUtil=mo,o.Draggable=Yn,o.Evented=pe,o.FeatureGroup=wr,o.GeoJSON=lr,o.GridLayer=jr,o.Handler=Mn,o.Icon=si,o.ImageOverlay=zr,o.LatLng=he,o.LatLngBounds=Q,o.Layer=Xn,o.LayerGroup=Ir,o.LineUtil=kl,o.Map=ut,o.Marker=br,o.Mixin=aa,o.Path=Or,o.Point=G,o.PolyUtil=nd,o.Polygon=Cr,o.Polyline=Tn,o.Popup=gs,o.PosAnimation=ss,o.Projection=ad,o.Rectangle=Il,o.Renderer=cr,o.SVG=ai,o.SVGOverlay=ga,o.TileLayer=Hr,o.Tooltip=zi,o.Transformation=wt,o.Util=X,o.VideoOverlay=Aa,o.bind=m,o.bounds=U,o.canvas=_a,o.circle=yo,o.circleMarker=Tl,o.control=Mr,o.divIcon=Nl,o.extend=f,o.featureGroup=Bl,o.geoJSON=Dl,o.geoJson=Jn,o.gridLayer=ji,o.icon=Pl,o.imageOverlay=Rl,o.latLng=fe,o.latLngBounds=$,o.layerGroup=vo,o.map=Lr,o.marker=cd,o.point=q,o.polygon=fd,o.polyline=dd,o.popup=Oi,o.rectangle=hd,o.setOptions=C,o.stamp=x,o.svg=vs,o.svgOverlay=xa,o.tileLayer=va,o.tooltip=wo,o.transformation=ft,o.version=l,o.videoOverlay=Fl;var zl=window.L;o.noConflict=function(){return window.L=zl,this},window.L=o}))})(tl,tl.exports)),tl.exports}var qc=P2();function E0(r,a,o){return Object.freeze({instance:r,context:a,container:o})}function k0(r,a){return a==null?function(l,f){const d=F.useRef();return d.current||(d.current=r(l,f)),d}:function(l,f){const d=F.useRef();d.current||(d.current=r(l,f));const m=F.useRef(l),{instance:h}=d.current;return F.useEffect(function(){m.current!==l&&(a(h,l,m.current),m.current=l)},[h,l,f]),d}}function px(r,a){F.useEffect(function(){return(a.layerContainer??a.map).addLayer(r.instance),function(){var d;(d=a.layerContainer)==null||d.removeLayer(r.instance),a.map.removeLayer(r.instance)}},[a,r])}function T2(r){return function(o){const l=Zc(),f=r(Wc(o,l),l);return dx(l.map,o.attribution),C0(f.current,o.eventHandlers),px(f.current,l),f}}function D2(r,a){const o=F.useRef();F.useEffect(function(){if(a.pathOptions!==o.current){const f=a.pathOptions??{};r.instance.setStyle(f),o.current=f}},[r,a])}function R2(r){return function(o){const l=Zc(),f=r(Wc(o,l),l);return C0(f.current,o.eventHandlers),px(f.current,l),D2(f.current,o),f}}function F2(r,a){const o=k0(r),l=S2(o,a);return E2(l)}function N2(r,a){const o=k0(r,a),l=R2(o);return C2(l)}function L2(r,a){const o=k0(r,a),l=T2(o);return k2(l)}function M2(r,a,o){const{opacity:l,zIndex:f}=a;l!=null&&l!==o.opacity&&r.setOpacity(l),f!=null&&f!==o.zIndex&&r.setZIndex(f)}function I2(){return Zc().map}const O2=N2(function({center:a,children:o,...l},f){const d=new qc.CircleMarker(a,l);return E0(d,b2(f,{overlayContainer:d}))},y2);function Yf(){return Yf=Object.assign||function(r){for(var a=1;a(P==null?void 0:P.map)??null,[P]);const C=F.useCallback(T=>{if(T!==null&&P===null){const B=new qc.Map(T,y);o!=null&&p!=null?B.setView(o,p):r!=null&&B.fitBounds(r,a),x!=null&&B.whenReady(x),R(w2(B))}},[]);F.useEffect(()=>()=>{P==null||P.map.remove()},[P]);const E=P?Ce.createElement(hx,{value:P},l):m??null;return Ce.createElement("div",Yf({},w,{ref:C}),E)}const j2=F.forwardRef(z2),H2=F2(function(a,o){const l=new qc.Popup(a,o.overlayContainer);return E0(l,o)},function(a,o,{position:l},f){F.useEffect(function(){const{instance:m}=a;function h(p){p.popup===m&&(m.update(),f(!0))}function x(p){p.popup===m&&f(!1)}return o.map.on({popupopen:h,popupclose:x}),o.overlayContainer==null?(l!=null&&m.setLatLng(l),m.openOn(o.map)):o.overlayContainer.bindPopup(m),function(){var y;o.map.off({popupopen:h,popupclose:x}),(y=o.overlayContainer)==null||y.unbindPopup(),o.map.removeLayer(m)}},[a,o,f,l])}),V2=L2(function({url:a,...o},l){const f=new qc.TileLayer(a,Wc(o,l));return E0(f,l)},function(a,o,l){M2(a,o,l);const{url:f}=o;f!=null&&f!==l.url&&a.setUrl(f)});function U2(r){const o=Date.now()/1e3-r,l=3600,f=86400;return o{if(o)return;const f=()=>{if(r.length===0){a.setView([20,0],2),l(!0);return}if(r.length===1){a.setView([r[0].lat,r[0].lon],10),l(!0);return}const d=r.map(m=>[m.lat,m.lon]);a.fitBounds(d,{padding:[50,50],maxZoom:12}),l(!0)};"geolocation"in navigator?navigator.geolocation.getCurrentPosition(d=>{a.setView([d.coords.latitude,d.coords.longitude],8),l(!0)},()=>{f()},{timeout:5e3,maximumAge:3e5}):f()},[a,r,o]),null}function W2({contacts:r}){const a=F.useMemo(()=>{const o=Date.now()/1e3-604800;return r.filter(l=>l.lat!=null&&l.lon!=null&&l.last_seen!=null&&l.last_seen>o)},[r]);return S.jsxs("div",{className:"flex flex-col h-full",children:[S.jsxs("div",{className:"px-4 py-2 bg-muted/50 text-xs text-muted-foreground flex items-center justify-between",children:[S.jsxs("span",{children:["Showing ",a.length," contact",a.length!==1?"s":""," heard in the last 7 days"]}),S.jsxs("div",{className:"flex items-center gap-3",children:[S.jsxs("span",{className:"flex items-center gap-1",children:[S.jsx("span",{className:"w-3 h-3 rounded-full bg-[#22c55e]"})," <1h"]}),S.jsxs("span",{className:"flex items-center gap-1",children:[S.jsx("span",{className:"w-3 h-3 rounded-full bg-[#4ade80]"})," <1d"]}),S.jsxs("span",{className:"flex items-center gap-1",children:[S.jsx("span",{className:"w-3 h-3 rounded-full bg-[#a3e635]"})," <3d"]}),S.jsxs("span",{className:"flex items-center gap-1",children:[S.jsx("span",{className:"w-3 h-3 rounded-full bg-[#9ca3af]"})," older"]})]})]}),S.jsx("div",{className:"flex-1 relative",style:{zIndex:0},children:S.jsxs(j2,{center:[20,0],zoom:2,className:"h-full w-full",style:{background:"#1a1a2e"},children:[S.jsx(V2,{attribution:'© OpenStreetMap',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),S.jsx(Z2,{contacts:a}),a.map(o=>{const l=o.type===l0,f=U2(o.last_seen),d=o.name||o.public_key.slice(0,12);return S.jsx(O2,{center:[o.lat,o.lon],radius:l?10:7,pathOptions:{color:l?f:"#000",fillColor:f,fillOpacity:.8,weight:l?0:1},children:S.jsx(H2,{children:S.jsxs("div",{className:"text-sm",children:[S.jsxs("div",{className:"font-medium flex items-center gap-1",children:[l&&S.jsx("span",{title:"Repeater",children:"🛜"}),d]}),S.jsxs("div",{className:"text-xs text-gray-500 mt-1",children:["Last heard: ",il(o.last_seen)]}),S.jsxs("div",{className:"text-xs text-gray-400 mt-1 font-mono",children:[o.lat.toFixed(5),", ",o.lon.toFixed(5)]})]})})},o.public_key)})]})})]})}const q2="modulepreload",G2=function(r){return"/"+r},rm={},Q2=function(a,o,l){let f=Promise.resolve();if(o&&o.length>0){let m=function(p){return Promise.all(p.map(y=>Promise.resolve(y).then(v=>({status:"fulfilled",value:v}),v=>({status:"rejected",reason:v}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),x=(h==null?void 0:h.nonce)||(h==null?void 0:h.getAttribute("nonce"));f=m(o.map(p=>{if(p=G2(p),p in rm)return;rm[p]=!0;const y=p.endsWith(".css"),v=y?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${v}`))return;const w=document.createElement("link");if(w.rel=y?"stylesheet":q2,y||(w.as="script"),w.crossOrigin="",w.href=p,x&&w.setAttribute("nonce",x),document.head.appendChild(w),y)return new Promise((P,R)=>{w.addEventListener("load",P),w.addEventListener("error",()=>R(new Error(`Unable to preload CSS for ${p}`)))})}))}function d(m){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=m,window.dispatchEvent(h),!h.defaultPrevented)throw m}return f.then(m=>{for(const h of m||[])h.status==="rejected"&&d(h.reason);return a().catch(d)})};var yi={},Va={},gn={},im;function or(){if(im)return gn;im=1,Object.defineProperty(gn,"__esModule",{value:!0}),gn.RequestType=gn.AdvertFlags=gn.DeviceRole=gn.PayloadVersion=gn.ControlSubType=gn.PayloadType=gn.RouteType=void 0;var r;(function(h){h[h.TransportFlood=0]="TransportFlood",h[h.Flood=1]="Flood",h[h.Direct=2]="Direct",h[h.TransportDirect=3]="TransportDirect"})(r||(gn.RouteType=r={}));var a;(function(h){h[h.Request=0]="Request",h[h.Response=1]="Response",h[h.TextMessage=2]="TextMessage",h[h.Ack=3]="Ack",h[h.Advert=4]="Advert",h[h.GroupText=5]="GroupText",h[h.GroupData=6]="GroupData",h[h.AnonRequest=7]="AnonRequest",h[h.Path=8]="Path",h[h.Trace=9]="Trace",h[h.Multipart=10]="Multipart",h[h.Control=11]="Control",h[h.RawCustom=15]="RawCustom"})(a||(gn.PayloadType=a={}));var o;(function(h){h[h.NodeDiscoverReq=128]="NodeDiscoverReq",h[h.NodeDiscoverResp=144]="NodeDiscoverResp"})(o||(gn.ControlSubType=o={}));var l;(function(h){h[h.Version1=0]="Version1",h[h.Version2=1]="Version2",h[h.Version3=2]="Version3",h[h.Version4=3]="Version4"})(l||(gn.PayloadVersion=l={}));var f;(function(h){h[h.Unknown=0]="Unknown",h[h.ChatNode=1]="ChatNode",h[h.Repeater=2]="Repeater",h[h.RoomServer=3]="RoomServer",h[h.Sensor=4]="Sensor"})(f||(gn.DeviceRole=f={}));var d;(function(h){h[h.HasLocation=16]="HasLocation",h[h.HasFeature1=32]="HasFeature1",h[h.HasFeature2=64]="HasFeature2",h[h.HasName=128]="HasName"})(d||(gn.AdvertFlags=d={}));var m;return(function(h){h[h.GetStats=1]="GetStats",h[h.Keepalive=2]="Keepalive",h[h.GetTelemetryData=3]="GetTelemetryData",h[h.GetMinMaxAvgData=4]="GetMinMaxAvgData",h[h.GetAccessList=5]="GetAccessList"})(m||(gn.RequestType=m={})),gn}var zo={},om;function xn(){if(om)return zo;om=1,Object.defineProperty(zo,"__esModule",{value:!0}),zo.byteToHex=r,zo.bytesToHex=a,zo.numberToHex=o,zo.hexToBytes=l;function r(f){return f.toString(16).padStart(2,"0").toUpperCase()}function a(f){return Array.from(f).map(r).join("")}function o(f,d=8){return(f>>>0).toString(16).padStart(d,"0").toUpperCase()}function l(f){const d=f.replace(/\s/g,"").toUpperCase();if(!/^[0-9A-F]*$/.test(d))throw new Error("Invalid hex string: invalid characters at position 0");if(d.length%2!==0)throw new Error("Invalid hex string: odd length");const m=new Uint8Array(d.length/2);for(let h=0;h>>2]>>>24-j%4*8&255;k[I+j>>>2]|=H<<24-(I+j)%4*8}else for(var te=0;te>>2]=N[te>>>2];return this.sigBytes+=z,this},clamp:function(){var B=this.words,k=this.sigBytes;B[k>>>2]&=4294967295<<32-k%4*8,B.length=l.ceil(k/4)},clone:function(){var B=y.clone.call(this);return B.words=this.words.slice(0),B},random:function(B){for(var k=[],N=0;N>>2]>>>24-z%4*8&255;I.push((j>>>4).toString(16)),I.push((j&15).toString(16))}return I.join("")},parse:function(B){for(var k=B.length,N=[],I=0;I>>3]|=parseInt(B.substr(I,2),16)<<24-I%8*4;return new v.init(N,k/2)}},R=w.Latin1={stringify:function(B){for(var k=B.words,N=B.sigBytes,I=[],z=0;z>>2]>>>24-z%4*8&255;I.push(String.fromCharCode(j))}return I.join("")},parse:function(B){for(var k=B.length,N=[],I=0;I>>2]|=(B.charCodeAt(I)&255)<<24-I%4*8;return new v.init(N,k)}},C=w.Utf8={stringify:function(B){try{return decodeURIComponent(escape(R.stringify(B)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(B){return R.parse(unescape(encodeURIComponent(B)))}},E=p.BufferedBlockAlgorithm=y.extend({reset:function(){this._data=new v.init,this._nDataBytes=0},_append:function(B){typeof B=="string"&&(B=C.parse(B)),this._data.concat(B),this._nDataBytes+=B.sigBytes},_process:function(B){var k,N=this._data,I=N.words,z=N.sigBytes,j=this.blockSize,H=j*4,te=z/H;B?te=l.ceil(te):te=l.max((te|0)-this._minBufferSize,0);var Z=te*j,V=l.min(Z*4,z);if(Z){for(var ne=0;ne>>2]|=x[v]<<24-v%4*8;m.call(this,y,p)}else m.apply(this,arguments)};h.prototype=d}})(),o.lib.WordArray})})(Uu)),Uu.exports}var Zu={exports:{}},tb=Zu.exports,cm;function nb(){return cm||(cm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(tb,function(o){return(function(){var l=o,f=l.lib,d=f.WordArray,m=l.enc;m.Utf16=m.Utf16BE={stringify:function(x){for(var p=x.words,y=x.sigBytes,v=[],w=0;w>>2]>>>16-w%4*8&65535;v.push(String.fromCharCode(P))}return v.join("")},parse:function(x){for(var p=x.length,y=[],v=0;v>>1]|=x.charCodeAt(v)<<16-v%2*16;return d.create(y,p*2)}},m.Utf16LE={stringify:function(x){for(var p=x.words,y=x.sigBytes,v=[],w=0;w>>2]>>>16-w%4*8&65535);v.push(String.fromCharCode(P))}return v.join("")},parse:function(x){for(var p=x.length,y=[],v=0;v>>1]|=h(x.charCodeAt(v)<<16-v%2*16);return d.create(y,p*2)}};function h(x){return x<<8&4278255360|x>>>8&16711935}})(),o.enc.Utf16})})(Zu)),Zu.exports}var Wu={exports:{}},rb=Wu.exports,dm;function Go(){return dm||(dm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(rb,function(o){return(function(){var l=o,f=l.lib,d=f.WordArray,m=l.enc;m.Base64={stringify:function(x){var p=x.words,y=x.sigBytes,v=this._map;x.clamp();for(var w=[],P=0;P>>2]>>>24-P%4*8&255,C=p[P+1>>>2]>>>24-(P+1)%4*8&255,E=p[P+2>>>2]>>>24-(P+2)%4*8&255,T=R<<16|C<<8|E,B=0;B<4&&P+B*.75>>6*(3-B)&63));var k=v.charAt(64);if(k)for(;w.length%4;)w.push(k);return w.join("")},parse:function(x){var p=x.length,y=this._map,v=this._reverseMap;if(!v){v=this._reverseMap=[];for(var w=0;w>>6-P%4*2,E=R|C;v[w>>>2]|=E<<24-w%4*8,w++}return d.create(v,w)}})(),o.enc.Base64})})(Wu)),Wu.exports}var qu={exports:{}},ib=qu.exports,fm;function ob(){return fm||(fm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(ib,function(o){return(function(){var l=o,f=l.lib,d=f.WordArray,m=l.enc;m.Base64url={stringify:function(x,p){p===void 0&&(p=!0);var y=x.words,v=x.sigBytes,w=p?this._safe_map:this._map;x.clamp();for(var P=[],R=0;R>>2]>>>24-R%4*8&255,E=y[R+1>>>2]>>>24-(R+1)%4*8&255,T=y[R+2>>>2]>>>24-(R+2)%4*8&255,B=C<<16|E<<8|T,k=0;k<4&&R+k*.75>>6*(3-k)&63));var N=w.charAt(64);if(N)for(;P.length%4;)P.push(N);return P.join("")},parse:function(x,p){p===void 0&&(p=!0);var y=x.length,v=p?this._safe_map:this._map,w=this._reverseMap;if(!w){w=this._reverseMap=[];for(var P=0;P>>6-P%4*2,E=R|C;v[w>>>2]|=E<<24-w%4*8,w++}return d.create(v,w)}})(),o.enc.Base64url})})(qu)),qu.exports}var Gu={exports:{}},sb=Gu.exports,hm;function Qo(){return hm||(hm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(sb,function(o){return(function(l){var f=o,d=f.lib,m=d.WordArray,h=d.Hasher,x=f.algo,p=[];(function(){for(var C=0;C<64;C++)p[C]=l.abs(l.sin(C+1))*4294967296|0})();var y=x.MD5=h.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(C,E){for(var T=0;T<16;T++){var B=E+T,k=C[B];C[B]=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360}var N=this._hash.words,I=C[E+0],z=C[E+1],j=C[E+2],H=C[E+3],te=C[E+4],Z=C[E+5],V=C[E+6],ne=C[E+7],X=C[E+8],ie=C[E+9],de=C[E+10],ae=C[E+11],pe=C[E+12],G=C[E+13],J=C[E+14],q=C[E+15],D=N[0],U=N[1],Q=N[2],$=N[3];D=v(D,U,Q,$,I,7,p[0]),$=v($,D,U,Q,z,12,p[1]),Q=v(Q,$,D,U,j,17,p[2]),U=v(U,Q,$,D,H,22,p[3]),D=v(D,U,Q,$,te,7,p[4]),$=v($,D,U,Q,Z,12,p[5]),Q=v(Q,$,D,U,V,17,p[6]),U=v(U,Q,$,D,ne,22,p[7]),D=v(D,U,Q,$,X,7,p[8]),$=v($,D,U,Q,ie,12,p[9]),Q=v(Q,$,D,U,de,17,p[10]),U=v(U,Q,$,D,ae,22,p[11]),D=v(D,U,Q,$,pe,7,p[12]),$=v($,D,U,Q,G,12,p[13]),Q=v(Q,$,D,U,J,17,p[14]),U=v(U,Q,$,D,q,22,p[15]),D=w(D,U,Q,$,z,5,p[16]),$=w($,D,U,Q,V,9,p[17]),Q=w(Q,$,D,U,ae,14,p[18]),U=w(U,Q,$,D,I,20,p[19]),D=w(D,U,Q,$,Z,5,p[20]),$=w($,D,U,Q,de,9,p[21]),Q=w(Q,$,D,U,q,14,p[22]),U=w(U,Q,$,D,te,20,p[23]),D=w(D,U,Q,$,ie,5,p[24]),$=w($,D,U,Q,J,9,p[25]),Q=w(Q,$,D,U,H,14,p[26]),U=w(U,Q,$,D,X,20,p[27]),D=w(D,U,Q,$,G,5,p[28]),$=w($,D,U,Q,j,9,p[29]),Q=w(Q,$,D,U,ne,14,p[30]),U=w(U,Q,$,D,pe,20,p[31]),D=P(D,U,Q,$,Z,4,p[32]),$=P($,D,U,Q,X,11,p[33]),Q=P(Q,$,D,U,ae,16,p[34]),U=P(U,Q,$,D,J,23,p[35]),D=P(D,U,Q,$,z,4,p[36]),$=P($,D,U,Q,te,11,p[37]),Q=P(Q,$,D,U,ne,16,p[38]),U=P(U,Q,$,D,de,23,p[39]),D=P(D,U,Q,$,G,4,p[40]),$=P($,D,U,Q,I,11,p[41]),Q=P(Q,$,D,U,H,16,p[42]),U=P(U,Q,$,D,V,23,p[43]),D=P(D,U,Q,$,ie,4,p[44]),$=P($,D,U,Q,pe,11,p[45]),Q=P(Q,$,D,U,q,16,p[46]),U=P(U,Q,$,D,j,23,p[47]),D=R(D,U,Q,$,I,6,p[48]),$=R($,D,U,Q,ne,10,p[49]),Q=R(Q,$,D,U,J,15,p[50]),U=R(U,Q,$,D,Z,21,p[51]),D=R(D,U,Q,$,pe,6,p[52]),$=R($,D,U,Q,H,10,p[53]),Q=R(Q,$,D,U,de,15,p[54]),U=R(U,Q,$,D,z,21,p[55]),D=R(D,U,Q,$,X,6,p[56]),$=R($,D,U,Q,q,10,p[57]),Q=R(Q,$,D,U,V,15,p[58]),U=R(U,Q,$,D,G,21,p[59]),D=R(D,U,Q,$,te,6,p[60]),$=R($,D,U,Q,ae,10,p[61]),Q=R(Q,$,D,U,j,15,p[62]),U=R(U,Q,$,D,ie,21,p[63]),N[0]=N[0]+D|0,N[1]=N[1]+U|0,N[2]=N[2]+Q|0,N[3]=N[3]+$|0},_doFinalize:function(){var C=this._data,E=C.words,T=this._nDataBytes*8,B=C.sigBytes*8;E[B>>>5]|=128<<24-B%32;var k=l.floor(T/4294967296),N=T;E[(B+64>>>9<<4)+15]=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360,E[(B+64>>>9<<4)+14]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360,C.sigBytes=(E.length+1)*4,this._process();for(var I=this._hash,z=I.words,j=0;j<4;j++){var H=z[j];z[j]=(H<<8|H>>>24)&16711935|(H<<24|H>>>8)&4278255360}return I},clone:function(){var C=h.clone.call(this);return C._hash=this._hash.clone(),C}});function v(C,E,T,B,k,N,I){var z=C+(E&T|~E&B)+k+I;return(z<>>32-N)+E}function w(C,E,T,B,k,N,I){var z=C+(E&B|T&~B)+k+I;return(z<>>32-N)+E}function P(C,E,T,B,k,N,I){var z=C+(E^T^B)+k+I;return(z<>>32-N)+E}function R(C,E,T,B,k,N,I){var z=C+(T^(E|~B))+k+I;return(z<>>32-N)+E}f.MD5=h._createHelper(y),f.HmacMD5=h._createHmacHelper(y)})(Math),o.MD5})})(Gu)),Gu.exports}var Qu={exports:{}},ab=Qu.exports,pm;function mx(){return pm||(pm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(ab,function(o){return(function(){var l=o,f=l.lib,d=f.WordArray,m=f.Hasher,h=l.algo,x=[],p=h.SHA1=m.extend({_doReset:function(){this._hash=new d.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(y,v){for(var w=this._hash.words,P=w[0],R=w[1],C=w[2],E=w[3],T=w[4],B=0;B<80;B++){if(B<16)x[B]=y[v+B]|0;else{var k=x[B-3]^x[B-8]^x[B-14]^x[B-16];x[B]=k<<1|k>>>31}var N=(P<<5|P>>>27)+T+x[B];B<20?N+=(R&C|~R&E)+1518500249:B<40?N+=(R^C^E)+1859775393:B<60?N+=(R&C|R&E|C&E)-1894007588:N+=(R^C^E)-899497514,T=E,E=C,C=R<<30|R>>>2,R=P,P=N}w[0]=w[0]+P|0,w[1]=w[1]+R|0,w[2]=w[2]+C|0,w[3]=w[3]+E|0,w[4]=w[4]+T|0},_doFinalize:function(){var y=this._data,v=y.words,w=this._nDataBytes*8,P=y.sigBytes*8;return v[P>>>5]|=128<<24-P%32,v[(P+64>>>9<<4)+14]=Math.floor(w/4294967296),v[(P+64>>>9<<4)+15]=w,y.sigBytes=v.length*4,this._process(),this._hash},clone:function(){var y=m.clone.call(this);return y._hash=this._hash.clone(),y}});l.SHA1=m._createHelper(p),l.HmacSHA1=m._createHmacHelper(p)})(),o.SHA1})})(Qu)),Qu.exports}var Ku={exports:{}},lb=Ku.exports,mm;function dl(){return mm||(mm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(lb,function(o){return(function(l){var f=o,d=f.lib,m=d.WordArray,h=d.Hasher,x=f.algo,p=[],y=[];(function(){function P(T){for(var B=l.sqrt(T),k=2;k<=B;k++)if(!(T%k))return!1;return!0}function R(T){return(T-(T|0))*4294967296|0}for(var C=2,E=0;E<64;)P(C)&&(E<8&&(p[E]=R(l.pow(C,1/2))),y[E]=R(l.pow(C,1/3)),E++),C++})();var v=[],w=x.SHA256=h.extend({_doReset:function(){this._hash=new m.init(p.slice(0))},_doProcessBlock:function(P,R){for(var C=this._hash.words,E=C[0],T=C[1],B=C[2],k=C[3],N=C[4],I=C[5],z=C[6],j=C[7],H=0;H<64;H++){if(H<16)v[H]=P[R+H]|0;else{var te=v[H-15],Z=(te<<25|te>>>7)^(te<<14|te>>>18)^te>>>3,V=v[H-2],ne=(V<<15|V>>>17)^(V<<13|V>>>19)^V>>>10;v[H]=Z+v[H-7]+ne+v[H-16]}var X=N&I^~N&z,ie=E&T^E&B^T&B,de=(E<<30|E>>>2)^(E<<19|E>>>13)^(E<<10|E>>>22),ae=(N<<26|N>>>6)^(N<<21|N>>>11)^(N<<7|N>>>25),pe=j+ae+X+y[H]+v[H],G=de+ie;j=z,z=I,I=N,N=k+pe|0,k=B,B=T,T=E,E=pe+G|0}C[0]=C[0]+E|0,C[1]=C[1]+T|0,C[2]=C[2]+B|0,C[3]=C[3]+k|0,C[4]=C[4]+N|0,C[5]=C[5]+I|0,C[6]=C[6]+z|0,C[7]=C[7]+j|0},_doFinalize:function(){var P=this._data,R=P.words,C=this._nDataBytes*8,E=P.sigBytes*8;return R[E>>>5]|=128<<24-E%32,R[(E+64>>>9<<4)+14]=l.floor(C/4294967296),R[(E+64>>>9<<4)+15]=C,P.sigBytes=R.length*4,this._process(),this._hash},clone:function(){var P=h.clone.call(this);return P._hash=this._hash.clone(),P}});f.SHA256=h._createHelper(w),f.HmacSHA256=h._createHmacHelper(w)})(Math),o.SHA256})})(Ku)),Ku.exports}var $u={exports:{}},ub=$u.exports,Am;function cb(){return Am||(Am=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),dl())})(ub,function(o){return(function(){var l=o,f=l.lib,d=f.WordArray,m=l.algo,h=m.SHA256,x=m.SHA224=h.extend({_doReset:function(){this._hash=new d.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var p=h._doFinalize.call(this);return p.sigBytes-=4,p}});l.SHA224=h._createHelper(x),l.HmacSHA224=h._createHmacHelper(x)})(),o.SHA224})})($u)),$u.exports}var Yu={exports:{}},db=Yu.exports,gm;function Ax(){return gm||(gm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Gc())})(db,function(o){return(function(){var l=o,f=l.lib,d=f.Hasher,m=l.x64,h=m.Word,x=m.WordArray,p=l.algo;function y(){return h.create.apply(h,arguments)}var v=[y(1116352408,3609767458),y(1899447441,602891725),y(3049323471,3964484399),y(3921009573,2173295548),y(961987163,4081628472),y(1508970993,3053834265),y(2453635748,2937671579),y(2870763221,3664609560),y(3624381080,2734883394),y(310598401,1164996542),y(607225278,1323610764),y(1426881987,3590304994),y(1925078388,4068182383),y(2162078206,991336113),y(2614888103,633803317),y(3248222580,3479774868),y(3835390401,2666613458),y(4022224774,944711139),y(264347078,2341262773),y(604807628,2007800933),y(770255983,1495990901),y(1249150122,1856431235),y(1555081692,3175218132),y(1996064986,2198950837),y(2554220882,3999719339),y(2821834349,766784016),y(2952996808,2566594879),y(3210313671,3203337956),y(3336571891,1034457026),y(3584528711,2466948901),y(113926993,3758326383),y(338241895,168717936),y(666307205,1188179964),y(773529912,1546045734),y(1294757372,1522805485),y(1396182291,2643833823),y(1695183700,2343527390),y(1986661051,1014477480),y(2177026350,1206759142),y(2456956037,344077627),y(2730485921,1290863460),y(2820302411,3158454273),y(3259730800,3505952657),y(3345764771,106217008),y(3516065817,3606008344),y(3600352804,1432725776),y(4094571909,1467031594),y(275423344,851169720),y(430227734,3100823752),y(506948616,1363258195),y(659060556,3750685593),y(883997877,3785050280),y(958139571,3318307427),y(1322822218,3812723403),y(1537002063,2003034995),y(1747873779,3602036899),y(1955562222,1575990012),y(2024104815,1125592928),y(2227730452,2716904306),y(2361852424,442776044),y(2428436474,593698344),y(2756734187,3733110249),y(3204031479,2999351573),y(3329325298,3815920427),y(3391569614,3928383900),y(3515267271,566280711),y(3940187606,3454069534),y(4118630271,4000239992),y(116418474,1914138554),y(174292421,2731055270),y(289380356,3203993006),y(460393269,320620315),y(685471733,587496836),y(852142971,1086792851),y(1017036298,365543100),y(1126000580,2618297676),y(1288033470,3409855158),y(1501505948,4234509866),y(1607167915,987167468),y(1816402316,1246189591)],w=[];(function(){for(var R=0;R<80;R++)w[R]=y()})();var P=p.SHA512=d.extend({_doReset:function(){this._hash=new x.init([new h.init(1779033703,4089235720),new h.init(3144134277,2227873595),new h.init(1013904242,4271175723),new h.init(2773480762,1595750129),new h.init(1359893119,2917565137),new h.init(2600822924,725511199),new h.init(528734635,4215389547),new h.init(1541459225,327033209)])},_doProcessBlock:function(R,C){for(var E=this._hash.words,T=E[0],B=E[1],k=E[2],N=E[3],I=E[4],z=E[5],j=E[6],H=E[7],te=T.high,Z=T.low,V=B.high,ne=B.low,X=k.high,ie=k.low,de=N.high,ae=N.low,pe=I.high,G=I.low,J=z.high,q=z.low,D=j.high,U=j.low,Q=H.high,$=H.low,he=te,fe=Z,ke=V,ge=ne,Ze=X,$e=ie,wt=de,ft=ae,Se=pe,Ue=G,at=J,Dt=q,xt=D,ot=U,Ke=Q,Xe=$,xe=0;xe<80;xe++){var Te,pt,Ut=w[xe];if(xe<16)pt=Ut.high=R[C+xe*2]|0,Te=Ut.low=R[C+xe*2+1]|0;else{var en=w[xe-15],Ot=en.high,tn=en.low,pn=(Ot>>>1|tn<<31)^(Ot>>>8|tn<<24)^Ot>>>7,Bn=(tn>>>1|Ot<<31)^(tn>>>8|Ot<<24)^(tn>>>7|Ot<<25),Zt=w[xe-2],Bt=Zt.high,Wt=Zt.low,Wn=(Bt>>>19|Wt<<13)^(Bt<<3|Wt>>>29)^Bt>>>6,vn=(Wt>>>19|Bt<<13)^(Wt<<3|Bt>>>29)^(Wt>>>6|Bt<<26),Ae=w[xe-7],be=Ae.high,De=Ae.low,se=w[xe-16],me=se.high,Be=se.low;Te=Bn+De,pt=pn+be+(Te>>>0>>0?1:0),Te=Te+vn,pt=pt+Wn+(Te>>>0>>0?1:0),Te=Te+Be,pt=pt+me+(Te>>>0>>0?1:0),Ut.high=pt,Ut.low=Te}var je=Se&at^~Se&xt,We=Ue&Dt^~Ue&ot,Kt=he&ke^he&Ze^ke&Ze,Ve=fe&ge^fe&$e^ge&$e,mt=(he>>>28|fe<<4)^(he<<30|fe>>>2)^(he<<25|fe>>>7),St=(fe>>>28|he<<4)^(fe<<30|he>>>2)^(fe<<25|he>>>7),Nt=(Se>>>14|Ue<<18)^(Se>>>18|Ue<<14)^(Se<<23|Ue>>>9),Ln=(Ue>>>14|Se<<18)^(Ue>>>18|Se<<14)^(Ue<<23|Se>>>9),it=v[xe],bt=it.high,qn=it.low,At=Xe+Ln,Lt=Ke+Nt+(At>>>0>>0?1:0),At=At+We,Lt=Lt+je+(At>>>0>>0?1:0),At=At+qn,Lt=Lt+bt+(At>>>0>>0?1:0),At=At+Te,Lt=Lt+pt+(At>>>0>>0?1:0),qt=St+Ve,Re=mt+Kt+(qt>>>0>>0?1:0);Ke=xt,Xe=ot,xt=at,ot=Dt,at=Se,Dt=Ue,Ue=ft+At|0,Se=wt+Lt+(Ue>>>0>>0?1:0)|0,wt=Ze,ft=$e,Ze=ke,$e=ge,ke=he,ge=fe,fe=At+qt|0,he=Lt+Re+(fe>>>0>>0?1:0)|0}Z=T.low=Z+fe,T.high=te+he+(Z>>>0>>0?1:0),ne=B.low=ne+ge,B.high=V+ke+(ne>>>0>>0?1:0),ie=k.low=ie+$e,k.high=X+Ze+(ie>>>0<$e>>>0?1:0),ae=N.low=ae+ft,N.high=de+wt+(ae>>>0>>0?1:0),G=I.low=G+Ue,I.high=pe+Se+(G>>>0>>0?1:0),q=z.low=q+Dt,z.high=J+at+(q>>>0
>>0?1:0),U=j.low=U+ot,j.high=D+xt+(U>>>0>>0?1:0),$=H.low=$+Xe,H.high=Q+Ke+($>>>0>>0?1:0)},_doFinalize:function(){var R=this._data,C=R.words,E=this._nDataBytes*8,T=R.sigBytes*8;C[T>>>5]|=128<<24-T%32,C[(T+128>>>10<<5)+30]=Math.floor(E/4294967296),C[(T+128>>>10<<5)+31]=E,R.sigBytes=C.length*4,this._process();var B=this._hash.toX32();return B},clone:function(){var R=d.clone.call(this);return R._hash=this._hash.clone(),R},blockSize:1024/32});l.SHA512=d._createHelper(P),l.HmacSHA512=d._createHmacHelper(P)})(),o.SHA512})})(Yu)),Yu.exports}var Xu={exports:{}},fb=Xu.exports,xm;function hb(){return xm||(xm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Gc(),Ax())})(fb,function(o){return(function(){var l=o,f=l.x64,d=f.Word,m=f.WordArray,h=l.algo,x=h.SHA512,p=h.SHA384=x.extend({_doReset:function(){this._hash=new m.init([new d.init(3418070365,3238371032),new d.init(1654270250,914150663),new d.init(2438529370,812702999),new d.init(355462360,4144912697),new d.init(1731405415,4290775857),new d.init(2394180231,1750603025),new d.init(3675008525,1694076839),new d.init(1203062813,3204075428)])},_doFinalize:function(){var y=x._doFinalize.call(this);return y.sigBytes-=16,y}});l.SHA384=x._createHelper(p),l.HmacSHA384=x._createHmacHelper(p)})(),o.SHA384})})(Xu)),Xu.exports}var Ju={exports:{}},pb=Ju.exports,vm;function mb(){return vm||(vm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Gc())})(pb,function(o){return(function(l){var f=o,d=f.lib,m=d.WordArray,h=d.Hasher,x=f.x64,p=x.Word,y=f.algo,v=[],w=[],P=[];(function(){for(var E=1,T=0,B=0;B<24;B++){v[E+5*T]=(B+1)*(B+2)/2%64;var k=T%5,N=(2*E+3*T)%5;E=k,T=N}for(var E=0;E<5;E++)for(var T=0;T<5;T++)w[E+5*T]=T+(2*E+3*T)%5*5;for(var I=1,z=0;z<24;z++){for(var j=0,H=0,te=0;te<7;te++){if(I&1){var Z=(1<>>24)&16711935|(I<<24|I>>>8)&4278255360,z=(z<<8|z>>>24)&16711935|(z<<24|z>>>8)&4278255360;var j=B[N];j.high^=z,j.low^=I}for(var H=0;H<24;H++){for(var te=0;te<5;te++){for(var Z=0,V=0,ne=0;ne<5;ne++){var j=B[te+5*ne];Z^=j.high,V^=j.low}var X=R[te];X.high=Z,X.low=V}for(var te=0;te<5;te++)for(var ie=R[(te+4)%5],de=R[(te+1)%5],ae=de.high,pe=de.low,Z=ie.high^(ae<<1|pe>>>31),V=ie.low^(pe<<1|ae>>>31),ne=0;ne<5;ne++){var j=B[te+5*ne];j.high^=Z,j.low^=V}for(var G=1;G<25;G++){var Z,V,j=B[G],J=j.high,q=j.low,D=v[G];D<32?(Z=J<>>32-D,V=q<>>32-D):(Z=q<>>64-D,V=J<>>64-D);var U=R[w[G]];U.high=Z,U.low=V}var Q=R[0],$=B[0];Q.high=$.high,Q.low=$.low;for(var te=0;te<5;te++)for(var ne=0;ne<5;ne++){var G=te+5*ne,j=B[G],he=R[G],fe=R[(te+1)%5+5*ne],ke=R[(te+2)%5+5*ne];j.high=he.high^~fe.high&ke.high,j.low=he.low^~fe.low&ke.low}var j=B[0],ge=P[H];j.high^=ge.high,j.low^=ge.low}},_doFinalize:function(){var E=this._data,T=E.words;this._nDataBytes*8;var B=E.sigBytes*8,k=this.blockSize*32;T[B>>>5]|=1<<24-B%32,T[(l.ceil((B+1)/k)*k>>>5)-1]|=128,E.sigBytes=T.length*4,this._process();for(var N=this._state,I=this.cfg.outputLength/8,z=I/8,j=[],H=0;H>>24)&16711935|(Z<<24|Z>>>8)&4278255360,V=(V<<8|V>>>24)&16711935|(V<<24|V>>>8)&4278255360,j.push(V),j.push(Z)}return new m.init(j,I)},clone:function(){for(var E=h.clone.call(this),T=E._state=this._state.slice(0),B=0;B<25;B++)T[B]=T[B].clone();return E}});f.SHA3=h._createHelper(C),f.HmacSHA3=h._createHmacHelper(C)})(Math),o.SHA3})})(Ju)),Ju.exports}var ec={exports:{}},Ab=ec.exports,ym;function gb(){return ym||(ym=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Ab,function(o){/** @preserve + (c) 2012 by Cédric Mesnil. All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */return(function(l){var f=o,d=f.lib,m=d.WordArray,h=d.Hasher,x=f.algo,p=m.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),y=m.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),v=m.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),w=m.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),P=m.create([0,1518500249,1859775393,2400959708,2840853838]),R=m.create([1352829926,1548603684,1836072691,2053994217,0]),C=x.RIPEMD160=h.extend({_doReset:function(){this._hash=m.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(z,j){for(var H=0;H<16;H++){var te=j+H,Z=z[te];z[te]=(Z<<8|Z>>>24)&16711935|(Z<<24|Z>>>8)&4278255360}var V=this._hash.words,ne=P.words,X=R.words,ie=p.words,de=y.words,ae=v.words,pe=w.words,G,J,q,D,U,Q,$,he,fe,ke;Q=G=V[0],$=J=V[1],he=q=V[2],fe=D=V[3],ke=U=V[4];for(var ge,H=0;H<80;H+=1)ge=G+z[j+ie[H]]|0,H<16?ge+=E(J,q,D)+ne[0]:H<32?ge+=T(J,q,D)+ne[1]:H<48?ge+=B(J,q,D)+ne[2]:H<64?ge+=k(J,q,D)+ne[3]:ge+=N(J,q,D)+ne[4],ge=ge|0,ge=I(ge,ae[H]),ge=ge+U|0,G=U,U=D,D=I(q,10),q=J,J=ge,ge=Q+z[j+de[H]]|0,H<16?ge+=N($,he,fe)+X[0]:H<32?ge+=k($,he,fe)+X[1]:H<48?ge+=B($,he,fe)+X[2]:H<64?ge+=T($,he,fe)+X[3]:ge+=E($,he,fe)+X[4],ge=ge|0,ge=I(ge,pe[H]),ge=ge+ke|0,Q=ke,ke=fe,fe=I(he,10),he=$,$=ge;ge=V[1]+q+fe|0,V[1]=V[2]+D+ke|0,V[2]=V[3]+U+Q|0,V[3]=V[4]+G+$|0,V[4]=V[0]+J+he|0,V[0]=ge},_doFinalize:function(){var z=this._data,j=z.words,H=this._nDataBytes*8,te=z.sigBytes*8;j[te>>>5]|=128<<24-te%32,j[(te+64>>>9<<4)+14]=(H<<8|H>>>24)&16711935|(H<<24|H>>>8)&4278255360,z.sigBytes=(j.length+1)*4,this._process();for(var Z=this._hash,V=Z.words,ne=0;ne<5;ne++){var X=V[ne];V[ne]=(X<<8|X>>>24)&16711935|(X<<24|X>>>8)&4278255360}return Z},clone:function(){var z=h.clone.call(this);return z._hash=this._hash.clone(),z}});function E(z,j,H){return z^j^H}function T(z,j,H){return z&j|~z&H}function B(z,j,H){return(z|~j)^H}function k(z,j,H){return z&H|j&~H}function N(z,j,H){return z^(j|~H)}function I(z,j){return z<>>32-j}f.RIPEMD160=h._createHelper(C),f.HmacRIPEMD160=h._createHmacHelper(C)})(),o.RIPEMD160})})(ec)),ec.exports}var tc={exports:{}},xb=tc.exports,_m;function Qc(){return _m||(_m=1,(function(r,a){(function(o,l){r.exports=l(dt())})(xb,function(o){(function(){var l=o,f=l.lib,d=f.Base,m=l.enc,h=m.Utf8,x=l.algo;x.HMAC=d.extend({init:function(p,y){p=this._hasher=new p.init,typeof y=="string"&&(y=h.parse(y));var v=p.blockSize,w=v*4;y.sigBytes>w&&(y=p.finalize(y)),y.clamp();for(var P=this._oKey=y.clone(),R=this._iKey=y.clone(),C=P.words,E=R.words,T=0;T>>2]&255;Z.sigBytes-=V}};d.BlockCipher=P.extend({cfg:P.cfg.extend({mode:E,padding:B}),reset:function(){var Z;P.reset.call(this);var V=this.cfg,ne=V.iv,X=V.mode;this._xformMode==this._ENC_XFORM_MODE?Z=X.createEncryptor:(Z=X.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==Z?this._mode.init(this,ne&&ne.words):(this._mode=Z.call(X,this,ne&&ne.words),this._mode.__creator=Z)},_doProcessBlock:function(Z,V){this._mode.processBlock(Z,V)},_doFinalize:function(){var Z,V=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(V.pad(this._data,this.blockSize),Z=this._process(!0)):(Z=this._process(!0),V.unpad(Z)),Z},blockSize:128/32});var k=d.CipherParams=m.extend({init:function(Z){this.mixIn(Z)},toString:function(Z){return(Z||this.formatter).stringify(this)}}),N=f.format={},I=N.OpenSSL={stringify:function(Z){var V,ne=Z.ciphertext,X=Z.salt;return X?V=h.create([1398893684,1701076831]).concat(X).concat(ne):V=ne,V.toString(y)},parse:function(Z){var V,ne=y.parse(Z),X=ne.words;return X[0]==1398893684&&X[1]==1701076831&&(V=h.create(X.slice(2,4)),X.splice(0,4),ne.sigBytes-=16),k.create({ciphertext:ne,salt:V})}},z=d.SerializableCipher=m.extend({cfg:m.extend({format:I}),encrypt:function(Z,V,ne,X){X=this.cfg.extend(X);var ie=Z.createEncryptor(ne,X),de=ie.finalize(V),ae=ie.cfg;return k.create({ciphertext:de,key:ne,iv:ae.iv,algorithm:Z,mode:ae.mode,padding:ae.padding,blockSize:Z.blockSize,formatter:X.format})},decrypt:function(Z,V,ne,X){X=this.cfg.extend(X),V=this._parse(V,X.format);var ie=Z.createDecryptor(ne,X).finalize(V.ciphertext);return ie},_parse:function(Z,V){return typeof Z=="string"?V.parse(Z,this):Z}}),j=f.kdf={},H=j.OpenSSL={execute:function(Z,V,ne,X,ie){if(X||(X=h.random(64/8)),ie)var de=w.create({keySize:V+ne,hasher:ie}).compute(Z,X);else var de=w.create({keySize:V+ne}).compute(Z,X);var ae=h.create(de.words.slice(V),ne*4);return de.sigBytes=V*4,k.create({key:de,iv:ae,salt:X})}},te=d.PasswordBasedCipher=z.extend({cfg:z.cfg.extend({kdf:H}),encrypt:function(Z,V,ne,X){X=this.cfg.extend(X);var ie=X.kdf.execute(ne,Z.keySize,Z.ivSize,X.salt,X.hasher);X.iv=ie.iv;var de=z.encrypt.call(this,Z,V,ie.key,X);return de.mixIn(ie),de},decrypt:function(Z,V,ne,X){X=this.cfg.extend(X),V=this._parse(V,X.format);var ie=X.kdf.execute(ne,Z.keySize,Z.ivSize,V.salt,X.hasher);X.iv=ie.iv;var de=z.decrypt.call(this,Z,V,ie.key,X);return de}})})()})})(ic)),ic.exports}var oc={exports:{}},bb=oc.exports,Em;function Cb(){return Em||(Em=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),hn())})(bb,function(o){return o.mode.CFB=(function(){var l=o.lib.BlockCipherMode.extend();l.Encryptor=l.extend({processBlock:function(d,m){var h=this._cipher,x=h.blockSize;f.call(this,d,m,x,h),this._prevBlock=d.slice(m,m+x)}}),l.Decryptor=l.extend({processBlock:function(d,m){var h=this._cipher,x=h.blockSize,p=d.slice(m,m+x);f.call(this,d,m,x,h),this._prevBlock=p}});function f(d,m,h,x){var p,y=this._iv;y?(p=y.slice(0),this._iv=void 0):p=this._prevBlock,x.encryptBlock(p,0);for(var v=0;v>24&255)===255){var x=h>>16&255,p=h>>8&255,y=h&255;x===255?(x=0,p===255?(p=0,y===255?y=0:++y):++p):++x,h=0,h+=x<<16,h+=p<<8,h+=y}else h+=1<<24;return h}function d(h){return(h[0]=f(h[0]))===0&&(h[1]=f(h[1])),h}var m=l.Encryptor=l.extend({processBlock:function(h,x){var p=this._cipher,y=p.blockSize,v=this._iv,w=this._counter;v&&(w=this._counter=v.slice(0),this._iv=void 0),d(w);var P=w.slice(0);p.encryptBlock(P,0);for(var R=0;R>>2]|=h<<24-x%4*8,l.sigBytes+=h},unpad:function(l){var f=l.words[l.sigBytes-1>>>2]&255;l.sigBytes-=f}},o.pad.Ansix923})})(cc)),cc.exports}var dc={exports:{}},Lb=dc.exports,Dm;function Mb(){return Dm||(Dm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),hn())})(Lb,function(o){return o.pad.Iso10126={pad:function(l,f){var d=f*4,m=d-l.sigBytes%d;l.concat(o.lib.WordArray.random(m-1)).concat(o.lib.WordArray.create([m<<24],1))},unpad:function(l){var f=l.words[l.sigBytes-1>>>2]&255;l.sigBytes-=f}},o.pad.Iso10126})})(dc)),dc.exports}var fc={exports:{}},Ib=fc.exports,Rm;function Ob(){return Rm||(Rm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),hn())})(Ib,function(o){return o.pad.Iso97971={pad:function(l,f){l.concat(o.lib.WordArray.create([2147483648],1)),o.pad.ZeroPadding.pad(l,f)},unpad:function(l){o.pad.ZeroPadding.unpad(l),l.sigBytes--}},o.pad.Iso97971})})(fc)),fc.exports}var hc={exports:{}},zb=hc.exports,Fm;function jb(){return Fm||(Fm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),hn())})(zb,function(o){return o.pad.ZeroPadding={pad:function(l,f){var d=f*4;l.clamp(),l.sigBytes+=d-(l.sigBytes%d||d)},unpad:function(l){for(var f=l.words,d=l.sigBytes-1,d=l.sigBytes-1;d>=0;d--)if(f[d>>>2]>>>24-d%4*8&255){l.sigBytes=d+1;break}}},o.pad.ZeroPadding})})(hc)),hc.exports}var pc={exports:{}},Hb=pc.exports,Nm;function Vb(){return Nm||(Nm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),hn())})(Hb,function(o){return o.pad.NoPadding={pad:function(){},unpad:function(){}},o.pad.NoPadding})})(pc)),pc.exports}var mc={exports:{}},Ub=mc.exports,Lm;function Zb(){return Lm||(Lm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),hn())})(Ub,function(o){return(function(l){var f=o,d=f.lib,m=d.CipherParams,h=f.enc,x=h.Hex,p=f.format;p.Hex={stringify:function(y){return y.ciphertext.toString(x)},parse:function(y){var v=x.parse(y);return m.create({ciphertext:v})}}})(),o.format.Hex})})(mc)),mc.exports}var Ac={exports:{}},Wb=Ac.exports,Mm;function qb(){return Mm||(Mm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Go(),Qo(),uo(),hn())})(Wb,function(o){return(function(){var l=o,f=l.lib,d=f.BlockCipher,m=l.algo,h=[],x=[],p=[],y=[],v=[],w=[],P=[],R=[],C=[],E=[];(function(){for(var k=[],N=0;N<256;N++)N<128?k[N]=N<<1:k[N]=N<<1^283;for(var I=0,z=0,N=0;N<256;N++){var j=z^z<<1^z<<2^z<<3^z<<4;j=j>>>8^j&255^99,h[I]=j,x[j]=I;var H=k[I],te=k[H],Z=k[te],V=k[j]*257^j*16843008;p[I]=V<<24|V>>>8,y[I]=V<<16|V>>>16,v[I]=V<<8|V>>>24,w[I]=V;var V=Z*16843009^te*65537^H*257^I*16843008;P[j]=V<<24|V>>>8,R[j]=V<<16|V>>>16,C[j]=V<<8|V>>>24,E[j]=V,I?(I=H^k[k[k[Z^H]]],z^=k[k[z]]):I=z=1}})();var T=[0,1,2,4,8,16,32,64,128,27,54],B=m.AES=d.extend({_doReset:function(){var k;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var N=this._keyPriorReset=this._key,I=N.words,z=N.sigBytes/4,j=this._nRounds=z+6,H=(j+1)*4,te=this._keySchedule=[],Z=0;Z6&&Z%z==4&&(k=h[k>>>24]<<24|h[k>>>16&255]<<16|h[k>>>8&255]<<8|h[k&255]):(k=k<<8|k>>>24,k=h[k>>>24]<<24|h[k>>>16&255]<<16|h[k>>>8&255]<<8|h[k&255],k^=T[Z/z|0]<<24),te[Z]=te[Z-z]^k);for(var V=this._invKeySchedule=[],ne=0;ne>>24]]^R[h[k>>>16&255]]^C[h[k>>>8&255]]^E[h[k&255]]}}},encryptBlock:function(k,N){this._doCryptBlock(k,N,this._keySchedule,p,y,v,w,h)},decryptBlock:function(k,N){var I=k[N+1];k[N+1]=k[N+3],k[N+3]=I,this._doCryptBlock(k,N,this._invKeySchedule,P,R,C,E,x);var I=k[N+1];k[N+1]=k[N+3],k[N+3]=I},_doCryptBlock:function(k,N,I,z,j,H,te,Z){for(var V=this._nRounds,ne=k[N]^I[0],X=k[N+1]^I[1],ie=k[N+2]^I[2],de=k[N+3]^I[3],ae=4,pe=1;pe>>24]^j[X>>>16&255]^H[ie>>>8&255]^te[de&255]^I[ae++],J=z[X>>>24]^j[ie>>>16&255]^H[de>>>8&255]^te[ne&255]^I[ae++],q=z[ie>>>24]^j[de>>>16&255]^H[ne>>>8&255]^te[X&255]^I[ae++],D=z[de>>>24]^j[ne>>>16&255]^H[X>>>8&255]^te[ie&255]^I[ae++];ne=G,X=J,ie=q,de=D}var G=(Z[ne>>>24]<<24|Z[X>>>16&255]<<16|Z[ie>>>8&255]<<8|Z[de&255])^I[ae++],J=(Z[X>>>24]<<24|Z[ie>>>16&255]<<16|Z[de>>>8&255]<<8|Z[ne&255])^I[ae++],q=(Z[ie>>>24]<<24|Z[de>>>16&255]<<16|Z[ne>>>8&255]<<8|Z[X&255])^I[ae++],D=(Z[de>>>24]<<24|Z[ne>>>16&255]<<16|Z[X>>>8&255]<<8|Z[ie&255])^I[ae++];k[N]=G,k[N+1]=J,k[N+2]=q,k[N+3]=D},keySize:256/32});l.AES=d._createHelper(B)})(),o.AES})})(Ac)),Ac.exports}var gc={exports:{}},Gb=gc.exports,Im;function Qb(){return Im||(Im=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Go(),Qo(),uo(),hn())})(Gb,function(o){return(function(){var l=o,f=l.lib,d=f.WordArray,m=f.BlockCipher,h=l.algo,x=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],p=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],y=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],v=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],w=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],P=h.DES=m.extend({_doReset:function(){for(var T=this._key,B=T.words,k=[],N=0;N<56;N++){var I=x[N]-1;k[N]=B[I>>>5]>>>31-I%32&1}for(var z=this._subKeys=[],j=0;j<16;j++){for(var H=z[j]=[],te=y[j],N=0;N<24;N++)H[N/6|0]|=k[(p[N]-1+te)%28]<<31-N%6,H[4+(N/6|0)]|=k[28+(p[N+24]-1+te)%28]<<31-N%6;H[0]=H[0]<<1|H[0]>>>31;for(var N=1;N<7;N++)H[N]=H[N]>>>(N-1)*4+3;H[7]=H[7]<<5|H[7]>>>27}for(var Z=this._invSubKeys=[],N=0;N<16;N++)Z[N]=z[15-N]},encryptBlock:function(T,B){this._doCryptBlock(T,B,this._subKeys)},decryptBlock:function(T,B){this._doCryptBlock(T,B,this._invSubKeys)},_doCryptBlock:function(T,B,k){this._lBlock=T[B],this._rBlock=T[B+1],R.call(this,4,252645135),R.call(this,16,65535),C.call(this,2,858993459),C.call(this,8,16711935),R.call(this,1,1431655765);for(var N=0;N<16;N++){for(var I=k[N],z=this._lBlock,j=this._rBlock,H=0,te=0;te<8;te++)H|=v[te][((j^I[te])&w[te])>>>0];this._lBlock=j,this._rBlock=z^H}var Z=this._lBlock;this._lBlock=this._rBlock,this._rBlock=Z,R.call(this,1,1431655765),C.call(this,8,16711935),C.call(this,2,858993459),R.call(this,16,65535),R.call(this,4,252645135),T[B]=this._lBlock,T[B+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function R(T,B){var k=(this._lBlock>>>T^this._rBlock)&B;this._rBlock^=k,this._lBlock^=k<>>T^this._lBlock)&B;this._lBlock^=k,this._rBlock^=k<192.");var k=B.slice(0,2),N=B.length<4?B.slice(0,2):B.slice(2,4),I=B.length<6?B.slice(0,2):B.slice(4,6);this._des1=P.createEncryptor(d.create(k)),this._des2=P.createEncryptor(d.create(N)),this._des3=P.createEncryptor(d.create(I))},encryptBlock:function(T,B){this._des1.encryptBlock(T,B),this._des2.decryptBlock(T,B),this._des3.encryptBlock(T,B)},decryptBlock:function(T,B){this._des3.decryptBlock(T,B),this._des2.encryptBlock(T,B),this._des1.decryptBlock(T,B)},keySize:192/32,ivSize:64/32,blockSize:64/32});l.TripleDES=m._createHelper(E)})(),o.TripleDES})})(gc)),gc.exports}var xc={exports:{}},Kb=xc.exports,Om;function $b(){return Om||(Om=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Go(),Qo(),uo(),hn())})(Kb,function(o){return(function(){var l=o,f=l.lib,d=f.StreamCipher,m=l.algo,h=m.RC4=d.extend({_doReset:function(){for(var y=this._key,v=y.words,w=y.sigBytes,P=this._S=[],R=0;R<256;R++)P[R]=R;for(var R=0,C=0;R<256;R++){var E=R%w,T=v[E>>>2]>>>24-E%4*8&255;C=(C+P[R]+T)%256;var B=P[R];P[R]=P[C],P[C]=B}this._i=this._j=0},_doProcessBlock:function(y,v){y[v]^=x.call(this)},keySize:256/32,ivSize:0});function x(){for(var y=this._S,v=this._i,w=this._j,P=0,R=0;R<4;R++){v=(v+1)%256,w=(w+y[v])%256;var C=y[v];y[v]=y[w],y[w]=C,P|=y[(y[v]+y[w])%256]<<24-R*8}return this._i=v,this._j=w,P}l.RC4=d._createHelper(h);var p=m.RC4Drop=h.extend({cfg:h.cfg.extend({drop:192}),_doReset:function(){h._doReset.call(this);for(var y=this.cfg.drop;y>0;y--)x.call(this)}});l.RC4Drop=d._createHelper(p)})(),o.RC4})})(xc)),xc.exports}var vc={exports:{}},Yb=vc.exports,zm;function Xb(){return zm||(zm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Go(),Qo(),uo(),hn())})(Yb,function(o){return(function(){var l=o,f=l.lib,d=f.StreamCipher,m=l.algo,h=[],x=[],p=[],y=m.Rabbit=d.extend({_doReset:function(){for(var w=this._key.words,P=this.cfg.iv,R=0;R<4;R++)w[R]=(w[R]<<8|w[R]>>>24)&16711935|(w[R]<<24|w[R]>>>8)&4278255360;var C=this._X=[w[0],w[3]<<16|w[2]>>>16,w[1],w[0]<<16|w[3]>>>16,w[2],w[1]<<16|w[0]>>>16,w[3],w[2]<<16|w[1]>>>16],E=this._C=[w[2]<<16|w[2]>>>16,w[0]&4294901760|w[1]&65535,w[3]<<16|w[3]>>>16,w[1]&4294901760|w[2]&65535,w[0]<<16|w[0]>>>16,w[2]&4294901760|w[3]&65535,w[1]<<16|w[1]>>>16,w[3]&4294901760|w[0]&65535];this._b=0;for(var R=0;R<4;R++)v.call(this);for(var R=0;R<8;R++)E[R]^=C[R+4&7];if(P){var T=P.words,B=T[0],k=T[1],N=(B<<8|B>>>24)&16711935|(B<<24|B>>>8)&4278255360,I=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360,z=N>>>16|I&4294901760,j=I<<16|N&65535;E[0]^=N,E[1]^=z,E[2]^=I,E[3]^=j,E[4]^=N,E[5]^=z,E[6]^=I,E[7]^=j;for(var R=0;R<4;R++)v.call(this)}},_doProcessBlock:function(w,P){var R=this._X;v.call(this),h[0]=R[0]^R[5]>>>16^R[3]<<16,h[1]=R[2]^R[7]>>>16^R[5]<<16,h[2]=R[4]^R[1]>>>16^R[7]<<16,h[3]=R[6]^R[3]>>>16^R[1]<<16;for(var C=0;C<4;C++)h[C]=(h[C]<<8|h[C]>>>24)&16711935|(h[C]<<24|h[C]>>>8)&4278255360,w[P+C]^=h[C]},blockSize:128/32,ivSize:64/32});function v(){for(var w=this._X,P=this._C,R=0;R<8;R++)x[R]=P[R];P[0]=P[0]+1295307597+this._b|0,P[1]=P[1]+3545052371+(P[0]>>>0>>0?1:0)|0,P[2]=P[2]+886263092+(P[1]>>>0>>0?1:0)|0,P[3]=P[3]+1295307597+(P[2]>>>0>>0?1:0)|0,P[4]=P[4]+3545052371+(P[3]>>>0>>0?1:0)|0,P[5]=P[5]+886263092+(P[4]>>>0>>0?1:0)|0,P[6]=P[6]+1295307597+(P[5]>>>0>>0?1:0)|0,P[7]=P[7]+3545052371+(P[6]>>>0>>0?1:0)|0,this._b=P[7]>>>0>>0?1:0;for(var R=0;R<8;R++){var C=w[R]+P[R],E=C&65535,T=C>>>16,B=((E*E>>>17)+E*T>>>15)+T*T,k=((C&4294901760)*C|0)+((C&65535)*C|0);p[R]=B^k}w[0]=p[0]+(p[7]<<16|p[7]>>>16)+(p[6]<<16|p[6]>>>16)|0,w[1]=p[1]+(p[0]<<8|p[0]>>>24)+p[7]|0,w[2]=p[2]+(p[1]<<16|p[1]>>>16)+(p[0]<<16|p[0]>>>16)|0,w[3]=p[3]+(p[2]<<8|p[2]>>>24)+p[1]|0,w[4]=p[4]+(p[3]<<16|p[3]>>>16)+(p[2]<<16|p[2]>>>16)|0,w[5]=p[5]+(p[4]<<8|p[4]>>>24)+p[3]|0,w[6]=p[6]+(p[5]<<16|p[5]>>>16)+(p[4]<<16|p[4]>>>16)|0,w[7]=p[7]+(p[6]<<8|p[6]>>>24)+p[5]|0}l.Rabbit=d._createHelper(y)})(),o.Rabbit})})(vc)),vc.exports}var yc={exports:{}},Jb=yc.exports,jm;function eC(){return jm||(jm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Go(),Qo(),uo(),hn())})(Jb,function(o){return(function(){var l=o,f=l.lib,d=f.StreamCipher,m=l.algo,h=[],x=[],p=[],y=m.RabbitLegacy=d.extend({_doReset:function(){var w=this._key.words,P=this.cfg.iv,R=this._X=[w[0],w[3]<<16|w[2]>>>16,w[1],w[0]<<16|w[3]>>>16,w[2],w[1]<<16|w[0]>>>16,w[3],w[2]<<16|w[1]>>>16],C=this._C=[w[2]<<16|w[2]>>>16,w[0]&4294901760|w[1]&65535,w[3]<<16|w[3]>>>16,w[1]&4294901760|w[2]&65535,w[0]<<16|w[0]>>>16,w[2]&4294901760|w[3]&65535,w[1]<<16|w[1]>>>16,w[3]&4294901760|w[0]&65535];this._b=0;for(var E=0;E<4;E++)v.call(this);for(var E=0;E<8;E++)C[E]^=R[E+4&7];if(P){var T=P.words,B=T[0],k=T[1],N=(B<<8|B>>>24)&16711935|(B<<24|B>>>8)&4278255360,I=(k<<8|k>>>24)&16711935|(k<<24|k>>>8)&4278255360,z=N>>>16|I&4294901760,j=I<<16|N&65535;C[0]^=N,C[1]^=z,C[2]^=I,C[3]^=j,C[4]^=N,C[5]^=z,C[6]^=I,C[7]^=j;for(var E=0;E<4;E++)v.call(this)}},_doProcessBlock:function(w,P){var R=this._X;v.call(this),h[0]=R[0]^R[5]>>>16^R[3]<<16,h[1]=R[2]^R[7]>>>16^R[5]<<16,h[2]=R[4]^R[1]>>>16^R[7]<<16,h[3]=R[6]^R[3]>>>16^R[1]<<16;for(var C=0;C<4;C++)h[C]=(h[C]<<8|h[C]>>>24)&16711935|(h[C]<<24|h[C]>>>8)&4278255360,w[P+C]^=h[C]},blockSize:128/32,ivSize:64/32});function v(){for(var w=this._X,P=this._C,R=0;R<8;R++)x[R]=P[R];P[0]=P[0]+1295307597+this._b|0,P[1]=P[1]+3545052371+(P[0]>>>0>>0?1:0)|0,P[2]=P[2]+886263092+(P[1]>>>0>>0?1:0)|0,P[3]=P[3]+1295307597+(P[2]>>>0>>0?1:0)|0,P[4]=P[4]+3545052371+(P[3]>>>0>>0?1:0)|0,P[5]=P[5]+886263092+(P[4]>>>0>>0?1:0)|0,P[6]=P[6]+1295307597+(P[5]>>>0>>0?1:0)|0,P[7]=P[7]+3545052371+(P[6]>>>0>>0?1:0)|0,this._b=P[7]>>>0>>0?1:0;for(var R=0;R<8;R++){var C=w[R]+P[R],E=C&65535,T=C>>>16,B=((E*E>>>17)+E*T>>>15)+T*T,k=((C&4294901760)*C|0)+((C&65535)*C|0);p[R]=B^k}w[0]=p[0]+(p[7]<<16|p[7]>>>16)+(p[6]<<16|p[6]>>>16)|0,w[1]=p[1]+(p[0]<<8|p[0]>>>24)+p[7]|0,w[2]=p[2]+(p[1]<<16|p[1]>>>16)+(p[0]<<16|p[0]>>>16)|0,w[3]=p[3]+(p[2]<<8|p[2]>>>24)+p[1]|0,w[4]=p[4]+(p[3]<<16|p[3]>>>16)+(p[2]<<16|p[2]>>>16)|0,w[5]=p[5]+(p[4]<<8|p[4]>>>24)+p[3]|0,w[6]=p[6]+(p[5]<<16|p[5]>>>16)+(p[4]<<16|p[4]>>>16)|0,w[7]=p[7]+(p[6]<<8|p[6]>>>24)+p[5]|0}l.RabbitLegacy=d._createHelper(y)})(),o.RabbitLegacy})})(yc)),yc.exports}var _c={exports:{}},tC=_c.exports,Hm;function nC(){return Hm||(Hm=1,(function(r,a){(function(o,l,f){r.exports=l(dt(),Go(),Qo(),uo(),hn())})(tC,function(o){return(function(){var l=o,f=l.lib,d=f.BlockCipher,m=l.algo;const h=16,x=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],p=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var y={pbox:[],sbox:[]};function v(E,T){let B=T>>24&255,k=T>>16&255,N=T>>8&255,I=T&255,z=E.sbox[0][B]+E.sbox[1][k];return z=z^E.sbox[2][N],z=z+E.sbox[3][I],z}function w(E,T,B){let k=T,N=B,I;for(let z=0;z1;--z)k=k^E.pbox[z],N=v(E,k)^N,I=k,k=N,N=I;return I=k,k=N,N=I,N=N^E.pbox[1],k=k^E.pbox[0],{left:k,right:N}}function R(E,T,B){for(let j=0;j<4;j++){E.sbox[j]=[];for(let H=0;H<256;H++)E.sbox[j][H]=p[j][H]}let k=0;for(let j=0;j=B&&(k=0);let N=0,I=0,z=0;for(let j=0;j=0&&(I=I.substring(0,z));const j=I.indexOf(": ");let H,te;if(j>0&&j<50){const Z=I.substring(0,j);/[:\[\]]/.test(Z)?te=I:(H=Z,te=I.substring(j+2))}else te=I;return{success:!0,data:{timestamp:T,flags:B,sender:H,message:te}}}catch(h){return{success:!1,error:h instanceof Error?h.message:"Decryption failed"}}}static calculateChannelHash(f){const d=(0,r.SHA256)(r.enc.Hex.parse(f));return(0,a.hexToBytes)(d.toString(r.enc.Hex))[0].toString(16).padStart(2,"0")}}return Za.ChannelCrypto=o,Za}var Zm;function xx(){if(Zm)return Ua;Zm=1,Object.defineProperty(Ua,"__esModule",{value:!0}),Ua.MeshCoreKeyStore=void 0;const r=S0();class a{constructor(l){this.nodeKeys=new Map,this.channelHashToKeys=new Map,l!=null&&l.channelSecrets&&this.addChannelSecrets(l.channelSecrets),l!=null&&l.nodeKeys&&Object.entries(l.nodeKeys).forEach(([f,d])=>{this.addNodeKey(f,d)})}addNodeKey(l,f){const d=l.toUpperCase();this.nodeKeys.set(d,f)}hasChannelKey(l){const f=l.toLowerCase();return this.channelHashToKeys.has(f)}hasNodeKey(l){const f=l.toUpperCase();return this.nodeKeys.has(f)}getChannelKeys(l){const f=l.toLowerCase();return this.channelHashToKeys.get(f)||[]}getNodeKey(l){const f=l.toUpperCase();return this.nodeKeys.get(f)}addChannelSecrets(l){for(const f of l){const d=r.ChannelCrypto.calculateChannelHash(f).toLowerCase();this.channelHashToKeys.has(d)||this.channelHashToKeys.set(d,[]),this.channelHashToKeys.get(d).push(f)}}}return Ua.MeshCoreKeyStore=a,Ua}var Wa={},Tr={};/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const vx={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Sn,n:wc,Gx:Wm,Gy:qm,a:Of,d:zf}=vx,iC=8n,Xr=32,sl=64,ir=(r="")=>{throw new Error(r)},oC=r=>typeof r=="bigint",yx=r=>typeof r=="string",sC=r=>r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array",qo=(r,a)=>!sC(r)||typeof a=="number"&&a>0&&r.length!==a?ir("Uint8Array expected"):r,Kc=r=>new Uint8Array(r),B0=r=>Uint8Array.from(r),_x=(r,a)=>r.toString(16).padStart(a,"0"),P0=r=>Array.from(qo(r)).map(a=>_x(a,2)).join(""),wi={_0:48,_9:57,A:65,F:70,a:97,f:102},Gm=r=>{if(r>=wi._0&&r<=wi._9)return r-wi._0;if(r>=wi.A&&r<=wi.F)return r-(wi.A-10);if(r>=wi.a&&r<=wi.f)return r-(wi.a-10)},T0=r=>{const a="hex invalid";if(!yx(r))return ir(a);const o=r.length,l=o/2;if(o%2)return ir(a);const f=Kc(l);for(let d=0,m=0;dqo(yx(r)?T0(r):B0(qo(r)),a),wx=()=>globalThis==null?void 0:globalThis.crypto,aC=()=>{var r;return((r=wx())==null?void 0:r.subtle)??ir("crypto.subtle must be defined")},al=(...r)=>{const a=Kc(r.reduce((l,f)=>l+qo(f).length,0));let o=0;return r.forEach(l=>{a.set(l,o),o+=l.length}),a},bx=(r=Xr)=>wx().getRandomValues(Kc(r)),Tc=BigInt,Uo=(r,a,o,l="bad number: out of range")=>oC(r)&&a<=r&&r{const o=r%a;return o>=0n?o:a+o},Cx=r=>Oe(r,wc),Ex=(r,a)=>{(r===0n||a<=0n)&&ir("no inverse n="+r+" mod="+a);let o=Oe(r,a),l=a,f=0n,d=1n;for(;o!==0n;){const m=l/o,h=l%o,x=f-d*m;l=o,o=h,f=d,d=x}return l===1n?Oe(f,a):ir("no inverse")},lC=r=>{const a=I0[r];return typeof a!="function"&&ir("hashes."+r+" not set"),a},Qm=r=>r instanceof Rr?r:ir("Point expected"),Jf=2n**256n,Qr=class Qr{constructor(a,o,l,f){Mo(this,"ex");Mo(this,"ey");Mo(this,"ez");Mo(this,"et");const d=Jf;this.ex=Uo(a,0n,d),this.ey=Uo(o,0n,d),this.ez=Uo(l,1n,d),this.et=Uo(f,0n,d),Object.freeze(this)}static fromAffine(a){return new Qr(a.x,a.y,1n,Oe(a.x*a.y))}static fromBytes(a,o=!1){const l=zf,f=B0(qo(a,Xr)),d=a[31];f[31]=d&-129;const m=D0(f);Uo(m,0n,o?Jf:Sn);const x=Oe(m*m),p=Oe(x-1n),y=Oe(l*x+1n);let{isValid:v,value:w}=cC(p,y);v||ir("bad point: y not sqrt");const P=(w&1n)===1n,R=(d&128)!==0;return!o&&w===0n&&R&&ir("bad point: x==0, isLastByteOdd"),R!==P&&(w=Oe(-w)),new Qr(w,m,1n,Oe(w*m))}assertValidity(){const a=Of,o=zf,l=this;if(l.is0())throw new Error("bad point: ZERO");const{ex:f,ey:d,ez:m,et:h}=l,x=Oe(f*f),p=Oe(d*d),y=Oe(m*m),v=Oe(y*y),w=Oe(x*a),P=Oe(y*Oe(w+p)),R=Oe(v+Oe(o*Oe(x*p)));if(P!==R)throw new Error("bad point: equation left != right (1)");const C=Oe(f*d),E=Oe(m*h);if(C!==E)throw new Error("bad point: equation left != right (2)");return this}equals(a){const{ex:o,ey:l,ez:f}=this,{ex:d,ey:m,ez:h}=Qm(a),x=Oe(o*h),p=Oe(d*f),y=Oe(l*h),v=Oe(m*f);return x===p&&y===v}is0(){return this.equals(Hs)}negate(){return new Qr(Oe(-this.ex),this.ey,this.ez,Oe(-this.et))}double(){const{ex:a,ey:o,ez:l}=this,f=Of,d=Oe(a*a),m=Oe(o*o),h=Oe(2n*Oe(l*l)),x=Oe(f*d),p=a+o,y=Oe(Oe(p*p)-d-m),v=x+m,w=v-h,P=x-m,R=Oe(y*w),C=Oe(v*P),E=Oe(y*P),T=Oe(w*v);return new Qr(R,C,T,E)}add(a){const{ex:o,ey:l,ez:f,et:d}=this,{ex:m,ey:h,ez:x,et:p}=Qm(a),y=Of,v=zf,w=Oe(o*m),P=Oe(l*h),R=Oe(d*v*p),C=Oe(f*x),E=Oe((o+l)*(m+h)-w-P),T=Oe(C-R),B=Oe(C+R),k=Oe(P-y*w),N=Oe(E*T),I=Oe(B*k),z=Oe(E*k),j=Oe(T*B);return new Qr(N,I,j,z)}multiply(a,o=!0){if(!o&&(a===0n||this.is0()))return Hs;if(Uo(a,1n,wc),a===1n)return this;if(this.equals(Ci))return yC(a).p;let l=Hs,f=Ci;for(let d=this;a>0n;d=d.double(),a>>=1n)a&1n?l=l.add(d):o&&(f=f.add(d));return l}toAffine(){const{ex:a,ey:o,ez:l}=this;if(this.equals(Hs))return{x:0n,y:1n};const f=Ex(l,Sn);return Oe(l*f)!==1n&&ir("invalid inverse"),{x:Oe(a*f),y:Oe(o*f)}}toBytes(){const{x:a,y:o}=this.assertValidity().toAffine(),l=kx(o);return l[31]|=a&1n?128:0,l}toHex(){return P0(this.toBytes())}clearCofactor(){return this.multiply(Tc(iC),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let a=this.multiply(wc/2n,!1).double();return wc%2n&&(a=a.add(this)),a.is0()}static fromHex(a,o){return Qr.fromBytes(lo(a),o)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}toRawBytes(){return this.toBytes()}};Mo(Qr,"BASE"),Mo(Qr,"ZERO");let Rr=Qr;const Ci=new Rr(Wm,qm,1n,Oe(Wm*qm)),Hs=new Rr(0n,1n,1n,0n);Rr.BASE=Ci;Rr.ZERO=Hs;const kx=r=>T0(_x(Uo(r,0n,Jf),sl)).reverse(),D0=r=>Tc("0x"+P0(B0(qo(r)).reverse())),Gr=(r,a)=>{let o=r;for(;a-- >0n;)o*=o,o%=Sn;return o},uC=r=>{const o=r*r%Sn*r%Sn,l=Gr(o,2n)*o%Sn,f=Gr(l,1n)*r%Sn,d=Gr(f,5n)*f%Sn,m=Gr(d,10n)*d%Sn,h=Gr(m,20n)*m%Sn,x=Gr(h,40n)*h%Sn,p=Gr(x,80n)*x%Sn,y=Gr(p,80n)*x%Sn,v=Gr(y,10n)*d%Sn;return{pow_p_5_8:Gr(v,2n)*r%Sn,b2:o}},Km=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,cC=(r,a)=>{const o=Oe(a*a*a),l=Oe(o*o*a),f=uC(r*l).pow_p_5_8;let d=Oe(r*o*f);const m=Oe(a*d*d),h=d,x=Oe(d*Km),p=m===r,y=m===Oe(-r),v=m===Oe(-r*Km);return p&&(d=h),(y||v)&&(d=x),(Oe(d)&1n)===1n&&(d=Oe(-d)),{isValid:p||y,value:d}},Dc=r=>Cx(D0(r)),R0=(...r)=>I0.sha512Async(...r),F0=(...r)=>lC("sha512Sync")(...r),Sx=r=>{const a=r.slice(0,Xr);a[0]&=248,a[31]&=127,a[31]|=64;const o=r.slice(Xr,sl),l=Dc(a),f=Ci.multiply(l),d=f.toBytes();return{head:a,prefix:o,scalar:l,point:f,pointBytes:d}},N0=r=>R0(lo(r,Xr)).then(Sx),L0=r=>Sx(F0(lo(r,Xr))),dC=r=>N0(r).then(a=>a.pointBytes),fC=r=>L0(r).pointBytes,Bx=r=>R0(r.hashable).then(r.finish),Px=r=>r.finish(F0(r.hashable)),Tx=(r,a,o)=>{const{pointBytes:l,scalar:f}=r,d=Dc(a),m=Ci.multiply(d).toBytes();return{hashable:al(m,l,o),finish:p=>{const y=Cx(d+Dc(p)*f);return qo(al(m,kx(y)),sl)}}},hC=async(r,a)=>{const o=lo(r),l=await N0(a),f=await R0(l.prefix,o);return Bx(Tx(l,f,o))},pC=(r,a)=>{const o=lo(r),l=L0(a),f=F0(l.prefix,o);return Px(Tx(l,f,o))},M0={zip215:!0},Dx=(r,a,o,l=M0)=>{r=lo(r,sl),a=lo(a),o=lo(o,Xr);const{zip215:f}=l;let d,m,h,x,p=Uint8Array.of();try{d=Rr.fromHex(o,f),m=Rr.fromHex(r.slice(0,Xr),f),h=D0(r.slice(Xr,sl)),x=Ci.multiply(h,!1),p=al(m.toBytes(),d.toBytes(),a)}catch{}return{hashable:p,finish:v=>{if(x==null||!f&&d.isSmallOrder())return!1;const w=Dc(v);return m.add(d.multiply(w,!1)).add(x.negate()).clearCofactor().is0()}}},mC=async(r,a,o,l=M0)=>Bx(Dx(r,a,o,l)),AC=(r,a,o,l=M0)=>Px(Dx(r,a,o,l)),I0={sha512Async:async(...r)=>{const a=aC(),o=al(...r);return Kc(await a.digest("SHA-512",o.buffer))},sha512Sync:void 0,bytesToHex:P0,hexToBytes:T0,concatBytes:al,mod:Oe,invert:Ex,randomBytes:bx},gC={getExtendedPublicKeyAsync:N0,getExtendedPublicKey:L0,randomPrivateKey:()=>bx(Xr),precompute:(r=8,a=Ci)=>(a.multiply(3n),a)},Rc=8,xC=256,Rx=Math.ceil(xC/Rc)+1,e0=2**(Rc-1),vC=()=>{const r=[];let a=Ci,o=a;for(let l=0;l{const o=a.negate();return r?o:a},yC=r=>{const a=$m||($m=vC());let o=Hs,l=Ci;const f=2**Rc,d=f,m=Tc(f-1),h=Tc(Rc);for(let x=0;x>=h,p>e0&&(p-=d,r+=1n);const y=x*e0,v=y,w=y+Math.abs(p)-1,P=x%2!==0,R=p<0;p===0?l=l.add(Ym(P,a[v])):o=o.add(Ym(R,a[w]))}return{p:o,f:l}},_C=Object.freeze(Object.defineProperty({__proto__:null,CURVE:vx,ExtendedPoint:Rr,Point:Rr,etc:I0,getPublicKey:fC,getPublicKeyAsync:dC,sign:pC,signAsync:hC,utils:gC,verify:AC,verifyAsync:mC},Symbol.toStringTag,{value:"Module"})),wC=CA(_C);var jo={},jf={exports:{}},Xm;function bC(){return Xm||(Xm=1,(function(r,a){var o=(()=>{var f;var l=typeof document<"u"?(f=document.currentScript)==null?void 0:f.src:void 0;return(async function(d={}){var vn;var m,h=d,x=typeof window=="object",p=typeof WorkerGlobalScope<"u",y=typeof process=="object"&&((vn=process.versions)==null?void 0:vn.node)&&process.type!="renderer";typeof __filename<"u"?l=__filename:p&&(l=self.location.href);var v="";function w(Ae){return h.locateFile?h.locateFile(Ae,v):v+Ae}var P,R;if(y){var C=Pc;v=__dirname+"/",R=Ae=>{Ae=k(Ae)?new URL(Ae):Ae;var be=C.readFileSync(Ae);return be},P=async(Ae,be=!0)=>{Ae=k(Ae)?new URL(Ae):Ae;var De=C.readFileSync(Ae,be?void 0:"utf8");return De},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2)}else if(x||p){try{v=new URL(".",l).href}catch{}p&&(R=Ae=>{var be=new XMLHttpRequest;return be.open("GET",Ae,!1),be.responseType="arraybuffer",be.send(null),new Uint8Array(be.response)}),P=async Ae=>{if(k(Ae))return new Promise((De,se)=>{var me=new XMLHttpRequest;me.open("GET",Ae,!0),me.responseType="arraybuffer",me.onload=()=>{if(me.status==200||me.status==0&&me.response){De(me.response);return}se(me.status)},me.onerror=se,me.send(null)});var be=await fetch(Ae,{credentials:"same-origin"});if(be.ok)return be.arrayBuffer();throw new Error(be.status+" : "+be.url)}}console.log.bind(console);var E=console.error.bind(console),T,B=!1,k=Ae=>Ae.startsWith("file://"),N,I,z,j,H,te=!1;function Z(){var Ae=z.buffer;h.HEAP8=j=new Int8Array(Ae),h.HEAPU8=H=new Uint8Array(Ae),h.HEAP32=new Int32Array(Ae),h.HEAPU32=new Uint32Array(Ae),new BigInt64Array(Ae),new BigUint64Array(Ae)}function V(){if(h.preRun)for(typeof h.preRun=="function"&&(h.preRun=[h.preRun]);h.preRun.length;)wt(h.preRun.shift());ke($e)}function ne(){te=!0,Bt.b()}function X(){if(h.postRun)for(typeof h.postRun=="function"&&(h.postRun=[h.postRun]);h.postRun.length;)Ze(h.postRun.shift());ke(ge)}var ie=0,de=null;function ae(Ae){var be;ie++,(be=h.monitorRunDependencies)==null||be.call(h,ie)}function pe(Ae){var De;if(ie--,(De=h.monitorRunDependencies)==null||De.call(h,ie),ie==0&&de){var be=de;de=null,be()}}function G(Ae){var De;(De=h.onAbort)==null||De.call(h,Ae),Ae="Aborted("+Ae+")",E(Ae),B=!0,Ae+=". Build with -sASSERTIONS for more info.";var be=new WebAssembly.RuntimeError(Ae);throw I==null||I(be),be}var J;function q(){return w("orlp-ed25519.wasm")}function D(Ae){if(Ae==J&&T)return new Uint8Array(T);if(R)return R(Ae);throw"both async and sync fetching of the wasm failed"}async function U(Ae){if(!T)try{var be=await P(Ae);return new Uint8Array(be)}catch{}return D(Ae)}async function Q(Ae,be){try{var De=await U(Ae),se=await WebAssembly.instantiate(De,be);return se}catch(me){E(`failed to asynchronously prepare wasm: ${me}`),G(me)}}async function $(Ae,be,De){if(!Ae&&typeof WebAssembly.instantiateStreaming=="function"&&!k(be)&&!y)try{var se=fetch(be,{credentials:"same-origin"}),me=await WebAssembly.instantiateStreaming(se,De);return me}catch(Be){E(`wasm streaming compile failed: ${Be}`),E("falling back to ArrayBuffer instantiation")}return Q(be,De)}function he(){return{a:Zt}}async function fe(){function Ae(Be,je){return Bt=Be.exports,z=Bt.a,Z(),Bn(Bt),pe(),Bt}ae();function be(Be){return Ae(Be.instance)}var De=he();if(h.instantiateWasm)return new Promise((Be,je)=>{h.instantiateWasm(De,(We,Kt)=>{Be(Ae(We))})});J??(J=q());var se=await $(T,J,De),me=be(se);return me}var ke=Ae=>{for(;Ae.length>0;)Ae.shift()(h)},ge=[],Ze=Ae=>ge.push(Ae),$e=[],wt=Ae=>$e.push(Ae),ft=Ae=>Ot(Ae),Se=()=>pn(),Ue=Ae=>{var be=h["_"+Ae];return be},at=(Ae,be)=>{j.set(Ae,be)},Dt=Ae=>{for(var be=0,De=0;De=55296&&se<=57343?(be+=4,++De):be+=3}return be},xt=(Ae,be,De,se)=>{if(!(se>0))return 0;for(var me=De,Be=De+se-1,je=0;je=Be)break;be[De++]=We}else if(We<=2047){if(De+1>=Be)break;be[De++]=192|We>>6,be[De++]=128|We&63}else if(We<=65535){if(De+2>=Be)break;be[De++]=224|We>>12,be[De++]=128|We>>6&63,be[De++]=128|We&63}else{if(De+3>=Be)break;be[De++]=240|We>>18,be[De++]=128|We>>12&63,be[De++]=128|We>>6&63,be[De++]=128|We&63,je++}}return be[De]=0,De-me},ot=(Ae,be,De)=>xt(Ae,H,be,De),Ke=Ae=>tn(Ae),Xe=Ae=>{var be=Dt(Ae)+1,De=Ke(be);return ot(Ae,De,be),De},xe=typeof TextDecoder<"u"?new TextDecoder:void 0,Te=(Ae,be=0,De=NaN)=>{for(var se=be+De,me=be;Ae[me]&&!(me>=se);)++me;if(me-be>16&&Ae.buffer&&xe)return xe.decode(Ae.subarray(be,me));for(var Be="";be>10,56320|Ve&1023)}}return Be},pt=(Ae,be)=>Ae?Te(H,Ae,be):"",Ut=(Ae,be,De,se,me)=>{var Be={string:it=>{var bt=0;return it!=null&&it!==0&&(bt=Xe(it)),bt},array:it=>{var bt=Ke(it.length);return at(it,bt),bt}};function je(it){return be==="string"?pt(it):be==="boolean"?!!it:it}var We=Ue(Ae),Kt=[],Ve=0;if(se)for(var mt=0;mt{var me=!De||De.every(je=>je==="number"||je==="boolean"),Be=be!=="string";return Be&&me&&!se?Ue(Ae):(...je)=>Ut(Ae,be,De,je)};h.noExitRuntime&&h.noExitRuntime,h.print&&h.print,h.printErr&&(E=h.printErr),h.wasmBinary&&(T=h.wasmBinary),h.arguments&&h.arguments,h.thisProgram&&h.thisProgram,h.ccall=Ut,h.cwrap=en;var Ot,tn,pn;function Bn(Ae){h._orlp_derive_public_key=Ae.c,h._orlp_validate_keypair=Ae.d,h._orlp_sign=Ae.e,h._orlp_verify=Ae.f,Ot=Ae.g,tn=Ae.h,pn=Ae.i}var Zt={},Bt=await fe();function Wt(){if(ie>0){de=Wt;return}if(V(),ie>0){de=Wt;return}function Ae(){var be;h.calledRun=!0,!B&&(ne(),N==null||N(h),(be=h.onRuntimeInitialized)==null||be.call(h),X())}h.setStatus?(h.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>h.setStatus(""),1),Ae()},1)):Ae()}function Wn(){if(h.preInit)for(typeof h.preInit=="function"&&(h.preInit=[h.preInit]);h.preInit.length>0;)h.preInit.shift()()}return Wn(),Wt(),te?m=h:m=new Promise((Ae,be)=>{N=Ae,I=be}),m})})();r.exports=o,r.exports.default=o})(jf)),jf.exports}var Jm;function O0(){if(Jm)return jo;Jm=1,Object.defineProperty(jo,"__esModule",{value:!0}),jo.derivePublicKey=l,jo.validateKeyPair=f,jo.sign=d,jo.verify=m;const r=xn(),a=bC();async function o(){return await a()}async function l(h){const x=await o(),p=(0,r.hexToBytes)(h);if(p.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${p.length}`);const y=1024,v=1088;if(x.HEAPU8.set(p,y),x.ccall("orlp_derive_public_key","number",["number","number"],[v,y])!==0)throw new Error("orlp key derivation failed: invalid private key");const P=new Uint8Array(32);return P.set(x.HEAPU8.subarray(v,v+32)),(0,r.bytesToHex)(P)}async function f(h,x){try{const p=await o(),y=(0,r.hexToBytes)(h),v=(0,r.hexToBytes)(x);if(y.length!==64||v.length!==32)return!1;const w=2048,P=2112;return p.HEAPU8.set(y,w),p.HEAPU8.set(v,P),p.ccall("orlp_validate_keypair","number",["number","number"],[P,w])===1}catch{return!1}}async function d(h,x,p){const y=await o(),v=(0,r.hexToBytes)(h),w=(0,r.hexToBytes)(x),P=(0,r.hexToBytes)(p);if(w.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${w.length}`);if(P.length!==32)throw new Error(`Invalid public key length: expected 32 bytes, got ${P.length}`);const R=1e5,C=2e5,E=3e5,T=4e5;y.HEAPU8.set(v,R),y.HEAPU8.set(w,C),y.HEAPU8.set(P,E),y.ccall("orlp_sign","void",["number","number","number","number","number"],[T,R,v.length,E,C]);const B=new Uint8Array(64);return B.set(y.HEAPU8.subarray(T,T+64)),(0,r.bytesToHex)(B)}async function m(h,x,p){try{const y=await o(),v=(0,r.hexToBytes)(h),w=(0,r.hexToBytes)(x),P=(0,r.hexToBytes)(p);if(v.length!==64||P.length!==32)return!1;const R=5e5,C=6e5,E=7e5;return y.HEAPU8.set(v,C),y.HEAPU8.set(w,R),y.HEAPU8.set(P,E),y.ccall("orlp_verify","number",["number","number","number","number"],[C,R,w.length,E])===1}catch{return!1}}return jo}var eA;function Fx(){if(eA)return Tr;eA=1;var r=Tr&&Tr.__createBinding||(Object.create?(function(p,y,v,w){w===void 0&&(w=v);var P=Object.getOwnPropertyDescriptor(y,v);(!P||("get"in P?!y.__esModule:P.writable||P.configurable))&&(P={enumerable:!0,get:function(){return y[v]}}),Object.defineProperty(p,w,P)}):(function(p,y,v,w){w===void 0&&(w=v),p[w]=y[v]})),a=Tr&&Tr.__setModuleDefault||(Object.create?(function(p,y){Object.defineProperty(p,"default",{enumerable:!0,value:y})}):function(p,y){p.default=y}),o=Tr&&Tr.__importStar||(function(){var p=function(y){return p=Object.getOwnPropertyNames||function(v){var w=[];for(var P in v)Object.prototype.hasOwnProperty.call(v,P)&&(w[w.length]=P);return w},p(y)};return function(y){if(y&&y.__esModule)return y;var v={};if(y!=null)for(var w=p(y),P=0;P>>24&255,P[R*4+1]=C>>>16&255,P[R*4+2]=C>>>8&255,P[R*4+3]=C&255}return P}catch{throw new Error("No SHA-512 implementation available for synchronous operation")}}l.etc.sha512Async=m;try{l.etc.sha512Sync=h}catch(p){console.debug("Could not set up synchronous SHA-512:",p)}class x{static async verifyAdvertisementSignature(y,v,w,P){try{const R=(0,f.hexToBytes)(y),C=(0,f.hexToBytes)(v),E=(0,f.hexToBytes)(P),T=this.constructAdvertSignedMessage(y,w,E);return await l.verify(C,T,R)}catch(R){return console.error("Ed25519 signature verification failed:",R),!1}}static constructAdvertSignedMessage(y,v,w){const P=(0,f.hexToBytes)(y),R=new Uint8Array(4);R[0]=v&255,R[1]=v>>8&255,R[2]=v>>16&255,R[3]=v>>24&255;const C=new Uint8Array(36+w.length);return C.set(P,0),C.set(R,32),C.set(w,36),C}static getSignedMessageDescription(y,v,w){return`Public Key: ${y} + Timestamp: ${v} (${new Date(v*1e3).toISOString()}) + App Data: ${w}`}static getSignedMessageHex(y,v,w){const P=(0,f.hexToBytes)(w),R=this.constructAdvertSignedMessage(y,v,P);return(0,f.bytesToHex)(R)}static async derivePublicKey(y){try{const v=(0,f.hexToBytes)(y);if(v.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${v.length}`);return await(0,d.derivePublicKey)(y)}catch(v){throw new Error(`Failed to derive public key: ${v instanceof Error?v.message:"Unknown error"}`)}}static derivePublicKeySync(y){try{const v=(0,f.hexToBytes)(y);throw v.length!==64?new Error(`Invalid private key length: expected 64 bytes, got ${v.length}`):new Error("Synchronous key derivation not supported with WASM. Use derivePublicKey() instead.")}catch(v){throw new Error(`Failed to derive public key: ${v instanceof Error?v.message:"Unknown error"}`)}}static async validateKeyPair(y,v){try{return await(0,d.validateKeyPair)(y,v)}catch{return!1}}}return Tr.Ed25519SignatureVerifier=x,Tr}var tA;function CC(){if(tA)return Wa;tA=1,Object.defineProperty(Wa,"__esModule",{value:!0}),Wa.AdvertPayloadDecoder=void 0;const r=or(),a=xn(),o=ol(),l=Fx();class f{static decode(m,h){try{if(m.length<101){const T={type:r.PayloadType.Advert,version:r.PayloadVersion.Version1,isValid:!1,errors:["Advertisement payload too short"],publicKey:"",timestamp:0,signature:"",appData:{flags:0,deviceRole:r.DeviceRole.ChatNode,hasLocation:!1,hasName:!1}};return h!=null&&h.includeSegments&&(T.segments=[{name:"Invalid Advert Data",description:"Advert payload too short (minimum 101 bytes required)",startByte:h.segmentOffset||0,endByte:(h.segmentOffset||0)+m.length-1,value:(0,a.bytesToHex)(m)}]),T}const x=[],p=(h==null?void 0:h.segmentOffset)||0;let y=0;const v=(0,a.bytesToHex)(m.subarray(y,y+32));h!=null&&h.includeSegments&&x.push({name:"Public Key",description:"Ed25519 public key",startByte:p+y,endByte:p+y+31,value:v}),y+=32;const w=this.readUint32LE(m,y);if(h!=null&&h.includeSegments){const T=new Date(w*1e3);x.push({name:"Timestamp",description:`${w} (${T.toISOString().slice(0,19)}Z)`,startByte:p+y,endByte:p+y+3,value:(0,a.bytesToHex)(m.subarray(y,y+4))})}y+=4;const P=(0,a.bytesToHex)(m.subarray(y,y+64));h!=null&&h.includeSegments&&x.push({name:"Signature",description:"Ed25519 signature",startByte:p+y,endByte:p+y+63,value:P}),y+=64;const R=m[y];if(h!=null&&h.includeSegments){const T=R.toString(2).padStart(8,"0"),B=this.parseDeviceRole(R),N=` | Bits 0-3 (Role): ${(0,o.getDeviceRoleName)(B)} | Bit 4 (Location): ${R&r.AdvertFlags.HasLocation?"Yes":"No"} | Bit 7 (Name): ${R&r.AdvertFlags.HasName?"Yes":"No"}`;x.push({name:"App Flags",description:`Binary: ${T}${N}`,startByte:p+y,endByte:p+y,value:R.toString(16).padStart(2,"0").toUpperCase()})}y+=1;const C={type:r.PayloadType.Advert,version:r.PayloadVersion.Version1,isValid:!0,publicKey:v,timestamp:w,signature:P,appData:{flags:R,deviceRole:this.parseDeviceRole(R),hasLocation:!!(R&r.AdvertFlags.HasLocation),hasName:!!(R&r.AdvertFlags.HasName)}};let E=y;if(R&r.AdvertFlags.HasLocation&&m.length>=E+8){const T=this.readInt32LE(m,E)/1e6,B=this.readInt32LE(m,E+4)/1e6;C.appData.location={latitude:Math.round(T*1e6)/1e6,longitude:Math.round(B*1e6)/1e6},h!=null&&h.includeSegments&&(x.push({name:"Latitude",description:`${T}° (${T})`,startByte:p+E,endByte:p+E+3,value:(0,a.bytesToHex)(m.subarray(E,E+4))}),x.push({name:"Longitude",description:`${B}° (${B})`,startByte:p+E+4,endByte:p+E+7,value:(0,a.bytesToHex)(m.subarray(E+4,E+8))})),E+=8}if(R&r.AdvertFlags.HasFeature1&&(E+=2),R&r.AdvertFlags.HasFeature2&&(E+=2),R&r.AdvertFlags.HasName&&m.length>E){const T=m.subarray(E),B=new TextDecoder("utf-8").decode(T).replace(/\0.*$/,"");C.appData.name=this.sanitizeControlCharacters(B)||B,h!=null&&h.includeSegments&&x.push({name:"Node Name",description:`Node name: "${C.appData.name}"`,startByte:p+E,endByte:p+m.length-1,value:(0,a.bytesToHex)(T)})}return h!=null&&h.includeSegments&&(C.segments=x),C}catch(x){return{type:r.PayloadType.Advert,version:r.PayloadVersion.Version1,isValid:!1,errors:[x instanceof Error?x.message:"Failed to decode advertisement payload"],publicKey:"",timestamp:0,signature:"",appData:{flags:0,deviceRole:r.DeviceRole.ChatNode,hasLocation:!1,hasName:!1}}}}static async decodeWithVerification(m,h){const x=this.decode(m,h);if(!x||!x.isValid)return x;try{const y=m.subarray(100),v=(0,a.bytesToHex)(y),w=await l.Ed25519SignatureVerifier.verifyAdvertisementSignature(x.publicKey,x.signature,x.timestamp,v);x.signatureValid=w,w||(x.signatureError="Ed25519 signature verification failed",x.isValid=!1,x.errors||(x.errors=[]),x.errors.push("Invalid Ed25519 signature"))}catch(p){x.signatureValid=!1,x.signatureError=p instanceof Error?p.message:"Signature verification error",x.isValid=!1,x.errors||(x.errors=[]),x.errors.push("Signature verification failed: "+(p instanceof Error?p.message:"Unknown error"))}return x}static parseDeviceRole(m){switch(m&15){case 1:return r.DeviceRole.ChatNode;case 2:return r.DeviceRole.Repeater;case 3:return r.DeviceRole.RoomServer;case 4:return r.DeviceRole.Sensor;default:return r.DeviceRole.ChatNode}}static readUint32LE(m,h){return m[h]|m[h+1]<<8|m[h+2]<<16|m[h+3]<<24}static readInt32LE(m,h){const x=this.readUint32LE(m,h);return x>2147483647?x-4294967296:x}static sanitizeControlCharacters(m){return m&&m.trim().replace(/[\x00-\x1F\x7F]/g,"")||null}}return Wa.AdvertPayloadDecoder=f,Wa}var qa={},nA;function EC(){if(nA)return qa;nA=1,Object.defineProperty(qa,"__esModule",{value:!0}),qa.TracePayloadDecoder=void 0;const r=or(),a=xn();class o{static decode(f,d,m){try{if(f.length<9){const B={type:r.PayloadType.Trace,version:r.PayloadVersion.Version1,isValid:!1,errors:["Trace payload too short (need at least tag(4) + auth(4) + flags(1))"],traceTag:"00000000",authCode:0,flags:0,pathHashes:[]};return m!=null&&m.includeSegments&&(B.segments=[{name:"Invalid Trace Data",description:"Trace payload too short (minimum 9 bytes required)",startByte:m.segmentOffset||0,endByte:(m.segmentOffset||0)+f.length-1,value:(0,a.bytesToHex)(f)}]),B}let h=0;const x=[],p=(m==null?void 0:m.segmentOffset)||0,y=this.readUint32LE(f,h),v=(0,a.numberToHex)(y,8);m!=null&&m.includeSegments&&x.push({name:"Trace Tag",description:`Unique identifier for this trace: 0x${y.toString(16).padStart(8,"0")}`,startByte:p+h,endByte:p+h+3,value:(0,a.bytesToHex)(f.slice(h,h+4))}),h+=4;const w=this.readUint32LE(f,h);m!=null&&m.includeSegments&&x.push({name:"Auth Code",description:`Authentication/verification code: ${w}`,startByte:p+h,endByte:p+h+3,value:(0,a.bytesToHex)(f.slice(h,h+4))}),h+=4;const P=f[h];m!=null&&m.includeSegments&&x.push({name:"Flags",description:`Application-defined control flags: 0x${P.toString(16).padStart(2,"0")} (${P.toString(2).padStart(8,"0")}b)`,startByte:p+h,endByte:p+h,value:P.toString(16).padStart(2,"0").toUpperCase()}),h+=1;const R=[],C=h;for(;h0){const B=R.join(" ");x.push({name:"Path Hashes",description:`Node hashes in trace path: ${B}`,startByte:p+C,endByte:p+f.length-1,value:(0,a.bytesToHex)(f.slice(C))})}let E;d&&d.length>0&&(E=d.map(B=>{const k=parseInt(B,16);return(k>127?k-256:k)/4}));const T={type:r.PayloadType.Trace,version:r.PayloadVersion.Version1,isValid:!0,traceTag:v,authCode:w,flags:P,pathHashes:R,snrValues:E};return m!=null&&m.includeSegments&&(T.segments=x),T}catch(h){return{type:r.PayloadType.Trace,version:r.PayloadVersion.Version1,isValid:!1,errors:[h instanceof Error?h.message:"Failed to decode trace payload"],traceTag:"00000000",authCode:0,flags:0,pathHashes:[]}}}static readUint32LE(f,d){return f[d]|f[d+1]<<8|f[d+2]<<16|f[d+3]<<24}}return qa.TracePayloadDecoder=o,qa}var Ga={},rA;function kC(){if(rA)return Ga;rA=1,Object.defineProperty(Ga,"__esModule",{value:!0}),Ga.GroupTextPayloadDecoder=void 0;const r=or(),a=S0(),o=xn();class l{static decode(d,m){try{if(d.length<3){const R={type:r.PayloadType.GroupText,version:r.PayloadVersion.Version1,isValid:!1,errors:["GroupText payload too short (need at least channel_hash(1) + MAC(2))"],channelHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0};return m!=null&&m.includeSegments&&(R.segments=[{name:"Invalid GroupText Data",description:"GroupText payload too short (minimum 3 bytes required)",startByte:m.segmentOffset||0,endByte:(m.segmentOffset||0)+d.length-1,value:(0,o.bytesToHex)(d)}]),R}const h=[],x=(m==null?void 0:m.segmentOffset)||0;let p=0;const y=(0,o.byteToHex)(d[p]);m!=null&&m.includeSegments&&h.push({name:"Channel Hash",description:"First byte of SHA256 of channel's shared key",startByte:x+p,endByte:x+p,value:y}),p+=1;const v=(0,o.bytesToHex)(d.subarray(p,p+2));m!=null&&m.includeSegments&&h.push({name:"Cipher MAC",description:"MAC for encrypted data",startByte:x+p,endByte:x+p+1,value:v}),p+=2;const w=(0,o.bytesToHex)(d.subarray(p));m!=null&&m.includeSegments&&d.length>p&&h.push({name:"Ciphertext",description:"Encrypted message content (timestamp + flags + message)",startByte:x+p,endByte:x+d.length-1,value:w});const P={type:r.PayloadType.GroupText,version:r.PayloadVersion.Version1,isValid:!0,channelHash:y,cipherMac:v,ciphertext:w,ciphertextLength:d.length-3};if(m!=null&&m.keyStore&&m.keyStore.hasChannelKey(y)){const R=m.keyStore.getChannelKeys(y);for(const C of R){const E=a.ChannelCrypto.decryptGroupTextMessage(w,v,C);if(E.success&&E.data){P.decrypted={timestamp:E.data.timestamp,flags:E.data.flags,sender:E.data.sender,message:E.data.message};break}}}return m!=null&&m.includeSegments&&(P.segments=h),P}catch(h){return{type:r.PayloadType.GroupText,version:r.PayloadVersion.Version1,isValid:!1,errors:[h instanceof Error?h.message:"Failed to decode GroupText payload"],channelHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0}}}}return Ga.GroupTextPayloadDecoder=l,Ga}var Qa={},iA;function SC(){if(iA)return Qa;iA=1,Object.defineProperty(Qa,"__esModule",{value:!0}),Qa.RequestPayloadDecoder=void 0;const r=or(),a=xn();class o{static decode(f,d){try{if(f.length<4){const R={type:r.PayloadType.Request,version:r.PayloadVersion.Version1,isValid:!1,errors:["Request payload too short (minimum 4 bytes: dest hash + source hash + MAC)"],timestamp:0,requestType:r.RequestType.GetStats,requestData:"",destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:""};return d!=null&&d.includeSegments&&(R.segments=[{name:"Invalid Request Data",description:"Request payload too short (minimum 4 bytes required: 1 for dest hash + 1 for source hash + 2 for MAC)",startByte:d.segmentOffset||0,endByte:(d.segmentOffset||0)+f.length-1,value:(0,a.bytesToHex)(f)}]),R}const m=[],h=(d==null?void 0:d.segmentOffset)||0;let x=0;const p=(0,a.bytesToHex)(f.subarray(x,x+1));d!=null&&d.includeSegments&&m.push({name:"Destination Hash",description:`First byte of destination node public key: 0x${p}`,startByte:h+x,endByte:h+x,value:p}),x+=1;const y=(0,a.bytesToHex)(f.subarray(x,x+1));d!=null&&d.includeSegments&&m.push({name:"Source Hash",description:`First byte of source node public key: 0x${y}`,startByte:h+x,endByte:h+x,value:y}),x+=1;const v=(0,a.bytesToHex)(f.subarray(x,x+2));d!=null&&d.includeSegments&&m.push({name:"Cipher MAC",description:"MAC for encrypted data verification (2 bytes)",startByte:h+x,endByte:h+x+1,value:v}),x+=2;const w=(0,a.bytesToHex)(f.subarray(x));d!=null&&d.includeSegments&&f.length>x&&m.push({name:"Ciphertext",description:`Encrypted message data (${f.length-x} bytes). Contains encrypted plaintext with this structure: +• Timestamp (4 bytes) - send time as unix timestamp +• Request Type (1 byte) - type of request (GetStats, GetTelemetryData, etc.) +• Request Data (remaining bytes) - additional request-specific data`,startByte:h+x,endByte:h+f.length-1,value:w});const P={type:r.PayloadType.Request,version:r.PayloadVersion.Version1,isValid:!0,timestamp:0,requestType:r.RequestType.GetStats,requestData:"",destinationHash:p,sourceHash:y,cipherMac:v,ciphertext:w};return d!=null&&d.includeSegments&&(P.segments=m),P}catch(m){return{type:r.PayloadType.Request,version:r.PayloadVersion.Version1,isValid:!1,errors:[m instanceof Error?m.message:"Failed to decode request payload"],timestamp:0,requestType:r.RequestType.GetStats,requestData:"",destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:""}}}}return Qa.RequestPayloadDecoder=o,Qa}var Ka={},oA;function BC(){if(oA)return Ka;oA=1,Object.defineProperty(Ka,"__esModule",{value:!0}),Ka.ResponsePayloadDecoder=void 0;const r=or(),a=xn();class o{static decode(f,d){try{if(f.length<4){const R={type:r.PayloadType.Response,version:r.PayloadVersion.Version1,isValid:!1,errors:["Response payload too short (minimum 4 bytes: dest + source + MAC)"],destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0};return d!=null&&d.includeSegments&&(R.segments=[{name:"Invalid Response Data",description:"Response payload too short (minimum 4 bytes required)",startByte:d.segmentOffset||0,endByte:(d.segmentOffset||0)+f.length-1,value:(0,a.bytesToHex)(f)}]),R}const m=[],h=(d==null?void 0:d.segmentOffset)||0;let x=0;const p=(0,a.byteToHex)(f[x]);d!=null&&d.includeSegments&&m.push({name:"Destination Hash",description:"First byte of destination node public key",startByte:h+x,endByte:h+x,value:p}),x+=1;const y=(0,a.byteToHex)(f[x]);d!=null&&d.includeSegments&&m.push({name:"Source Hash",description:"First byte of source node public key",startByte:h+x,endByte:h+x,value:y}),x+=1;const v=(0,a.bytesToHex)(f.subarray(x,x+2));d!=null&&d.includeSegments&&m.push({name:"Cipher MAC",description:"MAC for encrypted data in next field",startByte:h+x,endByte:h+x+1,value:v}),x+=2;const w=(0,a.bytesToHex)(f.subarray(x));d!=null&&d.includeSegments&&f.length>x&&m.push({name:"Ciphertext",description:"Encrypted response data (tag + content)",startByte:h+x,endByte:h+f.length-1,value:w});const P={type:r.PayloadType.Response,version:r.PayloadVersion.Version1,isValid:!0,destinationHash:p,sourceHash:y,cipherMac:v,ciphertext:w,ciphertextLength:f.length-4};return d!=null&&d.includeSegments&&(P.segments=m),P}catch(m){return{type:r.PayloadType.Response,version:r.PayloadVersion.Version1,isValid:!1,errors:[m instanceof Error?m.message:"Failed to decode response payload"],destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0}}}}return Ka.ResponsePayloadDecoder=o,Ka}var $a={},sA;function PC(){if(sA)return $a;sA=1,Object.defineProperty($a,"__esModule",{value:!0}),$a.AnonRequestPayloadDecoder=void 0;const r=or(),a=xn();class o{static decode(f,d){try{if(f.length<35){const R={type:r.PayloadType.AnonRequest,version:r.PayloadVersion.Version1,isValid:!1,errors:["AnonRequest payload too short (minimum 35 bytes: dest + public key + MAC)"],destinationHash:"",senderPublicKey:"",cipherMac:"",ciphertext:"",ciphertextLength:0};return d!=null&&d.includeSegments&&(R.segments=[{name:"Invalid AnonRequest Data",description:"AnonRequest payload too short (minimum 35 bytes required: 1 for dest hash + 32 for public key + 2 for MAC)",startByte:d.segmentOffset||0,endByte:(d.segmentOffset||0)+f.length-1,value:(0,a.bytesToHex)(f)}]),R}const m=[],h=(d==null?void 0:d.segmentOffset)||0;let x=0;const p=(0,a.byteToHex)(f[0]);d!=null&&d.includeSegments&&m.push({name:"Destination Hash",description:`First byte of destination node public key: 0x${p}`,startByte:h+x,endByte:h+x,value:p}),x+=1;const y=(0,a.bytesToHex)(f.subarray(1,33));d!=null&&d.includeSegments&&m.push({name:"Sender Public Key",description:"Ed25519 public key of the sender (32 bytes)",startByte:h+x,endByte:h+x+31,value:y}),x+=32;const v=(0,a.bytesToHex)(f.subarray(33,35));d!=null&&d.includeSegments&&m.push({name:"Cipher MAC",description:"MAC for encrypted data verification (2 bytes)",startByte:h+x,endByte:h+x+1,value:v}),x+=2;const w=(0,a.bytesToHex)(f.subarray(35));d!=null&&d.includeSegments&&f.length>35&&m.push({name:"Ciphertext",description:`Encrypted message data (${f.length-35} bytes). Contains encrypted plaintext with this structure: +• Timestamp (4 bytes) - send time as unix timestamp +• Sync Timestamp (4 bytes) - room server only, sender's "sync messages SINCE x" timestamp +• Password (remaining bytes) - password for repeater/room`,startByte:h+x,endByte:h+f.length-1,value:w});const P={type:r.PayloadType.AnonRequest,version:r.PayloadVersion.Version1,isValid:!0,destinationHash:p,senderPublicKey:y,cipherMac:v,ciphertext:w,ciphertextLength:f.length-35};return d!=null&&d.includeSegments&&(P.segments=m),P}catch(m){return{type:r.PayloadType.AnonRequest,version:r.PayloadVersion.Version1,isValid:!1,errors:[m instanceof Error?m.message:"Failed to decode AnonRequest payload"],destinationHash:"",senderPublicKey:"",cipherMac:"",ciphertext:"",ciphertextLength:0}}}}return $a.AnonRequestPayloadDecoder=o,$a}var Ya={},aA;function TC(){if(aA)return Ya;aA=1,Object.defineProperty(Ya,"__esModule",{value:!0}),Ya.AckPayloadDecoder=void 0;const r=or(),a=xn();class o{static decode(f,d){try{if(f.length<4){const y={type:r.PayloadType.Ack,version:r.PayloadVersion.Version1,isValid:!1,errors:["Ack payload too short (minimum 4 bytes for checksum)"],checksum:""};return d!=null&&d.includeSegments&&(y.segments=[{name:"Invalid Ack Data",description:"Ack payload too short (minimum 4 bytes required for checksum)",startByte:d.segmentOffset||0,endByte:(d.segmentOffset||0)+f.length-1,value:(0,a.bytesToHex)(f)}]),y}const m=[],h=(d==null?void 0:d.segmentOffset)||0,x=(0,a.bytesToHex)(f.subarray(0,4));d!=null&&d.includeSegments&&m.push({name:"Checksum",description:`CRC checksum of message timestamp, text, and sender pubkey: 0x${x}`,startByte:h,endByte:h+3,value:x}),d!=null&&d.includeSegments&&f.length>4&&m.push({name:"Additional Data",description:"Extra data in Ack payload",startByte:h+4,endByte:h+f.length-1,value:(0,a.bytesToHex)(f.subarray(4))});const p={type:r.PayloadType.Ack,version:r.PayloadVersion.Version1,isValid:!0,checksum:x};return d!=null&&d.includeSegments&&(p.segments=m),p}catch(m){return{type:r.PayloadType.Ack,version:r.PayloadVersion.Version1,isValid:!1,errors:[m instanceof Error?m.message:"Failed to decode Ack payload"],checksum:""}}}}return Ya.AckPayloadDecoder=o,Ya}var Xa={},lA;function DC(){if(lA)return Xa;lA=1,Object.defineProperty(Xa,"__esModule",{value:!0}),Xa.PathPayloadDecoder=void 0;const r=or(),a=xn();class o{static decode(f){try{if(f.length<2)return{type:r.PayloadType.Path,version:r.PayloadVersion.Version1,isValid:!1,errors:["Path payload too short (minimum 2 bytes: path length + extra type)"],pathLength:0,pathHashes:[],extraType:0,extraData:""};const d=f[0];if(f.length<1+d+1)return{type:r.PayloadType.Path,version:r.PayloadVersion.Version1,isValid:!1,errors:[`Path payload too short (need ${1+d+1} bytes for path length + path + extra type)`],pathLength:d,pathHashes:[],extraType:0,extraData:""};const m=[];for(let p=0;p1+d+1&&(x=(0,a.bytesToHex)(f.subarray(1+d+1))),{type:r.PayloadType.Path,version:r.PayloadVersion.Version1,isValid:!0,pathLength:d,pathHashes:m,extraType:h,extraData:x}}catch(d){return{type:r.PayloadType.Path,version:r.PayloadVersion.Version1,isValid:!1,errors:[d instanceof Error?d.message:"Failed to decode Path payload"],pathLength:0,pathHashes:[],extraType:0,extraData:""}}}}return Xa.PathPayloadDecoder=o,Xa}var Ja={},uA;function RC(){if(uA)return Ja;uA=1,Object.defineProperty(Ja,"__esModule",{value:!0}),Ja.TextMessagePayloadDecoder=void 0;const r=or(),a=xn();class o{static decode(f,d){try{if(f.length<4){const R={type:r.PayloadType.TextMessage,version:r.PayloadVersion.Version1,isValid:!1,errors:["TextMessage payload too short (minimum 4 bytes: dest + source + MAC)"],destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0};return d!=null&&d.includeSegments&&(R.segments=[{name:"Invalid TextMessage Data",description:"TextMessage payload too short (minimum 4 bytes required)",startByte:d.segmentOffset||0,endByte:(d.segmentOffset||0)+f.length-1,value:(0,a.bytesToHex)(f)}]),R}const m=[],h=(d==null?void 0:d.segmentOffset)||0;let x=0;const p=(0,a.byteToHex)(f[x]);d!=null&&d.includeSegments&&m.push({name:"Destination Hash",description:"First byte of destination node public key",startByte:h+x,endByte:h+x,value:p}),x+=1;const y=(0,a.byteToHex)(f[x]);d!=null&&d.includeSegments&&m.push({name:"Source Hash",description:"First byte of source node public key",startByte:h+x,endByte:h+x,value:y}),x+=1;const v=(0,a.bytesToHex)(f.subarray(x,x+2));d!=null&&d.includeSegments&&m.push({name:"Cipher MAC",description:"MAC for encrypted data in next field",startByte:h+x,endByte:h+x+1,value:v}),x+=2;const w=(0,a.bytesToHex)(f.subarray(x));d!=null&&d.includeSegments&&f.length>x&&m.push({name:"Ciphertext",description:"Encrypted message data (timestamp + message text)",startByte:h+x,endByte:h+f.length-1,value:w});const P={type:r.PayloadType.TextMessage,version:r.PayloadVersion.Version1,isValid:!0,destinationHash:p,sourceHash:y,cipherMac:v,ciphertext:w,ciphertextLength:f.length-4};return d!=null&&d.includeSegments&&(P.segments=m),P}catch(m){return{type:r.PayloadType.TextMessage,version:r.PayloadVersion.Version1,isValid:!1,errors:[m instanceof Error?m.message:"Failed to decode TextMessage payload"],destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0}}}}return Ja.TextMessagePayloadDecoder=o,Ja}var el={},cA;function FC(){if(cA)return el;cA=1,Object.defineProperty(el,"__esModule",{value:!0}),el.ControlPayloadDecoder=void 0;const r=or(),a=xn(),o=ol();class l{static decode(d,m){try{if(d.length<1)return this.createErrorPayload("Control payload too short (minimum 1 byte required)",d,m);const x=d[0]&240;switch(x){case r.ControlSubType.NodeDiscoverReq:return this.decodeDiscoverReq(d,m);case r.ControlSubType.NodeDiscoverResp:return this.decodeDiscoverResp(d,m);default:return this.createErrorPayload(`Unknown control sub-type: 0x${x.toString(16).padStart(2,"0")}`,d,m)}}catch(h){return this.createErrorPayload(h instanceof Error?h.message:"Failed to decode control payload",d,m)}}static decodeDiscoverReq(d,m){const h=[],x=(m==null?void 0:m.segmentOffset)??0;if(d.length<6){const T={type:r.PayloadType.Control,version:r.PayloadVersion.Version1,isValid:!1,errors:["DISCOVER_REQ payload too short (minimum 6 bytes required)"],subType:r.ControlSubType.NodeDiscoverReq,rawFlags:d[0],prefixOnly:!1,typeFilter:0,typeFilterNames:[],tag:0,since:0};return m!=null&&m.includeSegments&&(T.segments=[{name:"Invalid DISCOVER_REQ Data",description:"DISCOVER_REQ payload too short (minimum 6 bytes required)",startByte:x,endByte:x+d.length-1,value:(0,a.bytesToHex)(d)}]),T}let p=0;const y=d[p],v=(y&1)!==0;m!=null&&m.includeSegments&&h.push({name:"Flags",description:`Sub-type: DISCOVER_REQ (0x8) | Prefix Only: ${v}`,startByte:x+p,endByte:x+p,value:y.toString(16).padStart(2,"0").toUpperCase()}),p+=1;const w=d[p],P=this.parseTypeFilter(w);m!=null&&m.includeSegments&&h.push({name:"Type Filter",description:`Filter mask: 0b${w.toString(2).padStart(8,"0")} | Types: ${P.length>0?P.join(", "):"None"}`,startByte:x+p,endByte:x+p,value:w.toString(16).padStart(2,"0").toUpperCase()}),p+=1;const R=this.readUint32LE(d,p);m!=null&&m.includeSegments&&h.push({name:"Tag",description:`Random tag for response matching: 0x${R.toString(16).padStart(8,"0")}`,startByte:x+p,endByte:x+p+3,value:(0,a.bytesToHex)(d.slice(p,p+4))}),p+=4;let C=0;if(d.length>=p+4&&(C=this.readUint32LE(d,p),m!=null&&m.includeSegments)){const T=C>0?new Date(C*1e3).toISOString().slice(0,19)+"Z":"N/A";h.push({name:"Since",description:`Filter timestamp: ${C} (${T})`,startByte:x+p,endByte:x+p+3,value:(0,a.bytesToHex)(d.slice(p,p+4))})}const E={type:r.PayloadType.Control,version:r.PayloadVersion.Version1,isValid:!0,subType:r.ControlSubType.NodeDiscoverReq,rawFlags:y,prefixOnly:v,typeFilter:w,typeFilterNames:P,tag:R,since:C};return m!=null&&m.includeSegments&&(E.segments=h),E}static decodeDiscoverResp(d,m){const h=[],x=(m==null?void 0:m.segmentOffset)??0;if(d.length<14){const z={type:r.PayloadType.Control,version:r.PayloadVersion.Version1,isValid:!1,errors:["DISCOVER_RESP payload too short (minimum 14 bytes required)"],subType:r.ControlSubType.NodeDiscoverResp,rawFlags:d.length>0?d[0]:0,nodeType:r.DeviceRole.Unknown,nodeTypeName:"Unknown",snr:0,tag:0,publicKey:"",publicKeyLength:0};return m!=null&&m.includeSegments&&(z.segments=[{name:"Invalid DISCOVER_RESP Data",description:"DISCOVER_RESP payload too short (minimum 14 bytes required)",startByte:x,endByte:x+d.length-1,value:(0,a.bytesToHex)(d)}]),z}let p=0;const y=d[p],v=y&15,w=(0,o.getDeviceRoleName)(v);m!=null&&m.includeSegments&&h.push({name:"Flags",description:`Sub-type: DISCOVER_RESP (0x9) | Node Type: ${w}`,startByte:x+p,endByte:x+p,value:y.toString(16).padStart(2,"0").toUpperCase()}),p+=1;const P=d[p],R=P>127?P-256:P,C=R/4;m!=null&&m.includeSegments&&h.push({name:"SNR",description:`Inbound SNR: ${C.toFixed(2)} dB (raw: ${P}, signed: ${R})`,startByte:x+p,endByte:x+p,value:P.toString(16).padStart(2,"0").toUpperCase()}),p+=1;const E=this.readUint32LE(d,p);m!=null&&m.includeSegments&&h.push({name:"Tag",description:`Reflected tag from request: 0x${E.toString(16).padStart(8,"0")}`,startByte:x+p,endByte:x+p+3,value:(0,a.bytesToHex)(d.slice(p,p+4))}),p+=4;const B=d.length-p,k=d.slice(p,p+B),N=(0,a.bytesToHex)(k);if(m!=null&&m.includeSegments){const z=B===32?"Full Public Key":"Public Key Prefix";h.push({name:z,description:`${z} (${B} bytes)`,startByte:x+p,endByte:x+p+B-1,value:N})}const I={type:r.PayloadType.Control,version:r.PayloadVersion.Version1,isValid:!0,subType:r.ControlSubType.NodeDiscoverResp,rawFlags:y,nodeType:v,nodeTypeName:w,snr:C,tag:E,publicKey:N,publicKeyLength:B};return m!=null&&m.includeSegments&&(I.segments=h),I}static parseTypeFilter(d){const m=[];return d&1<0?m[0]:0,prefixOnly:!1,typeFilter:0,typeFilterNames:[],tag:0,since:0};return h!=null&&h.includeSegments&&(x.segments=[{name:"Invalid Control Data",description:d,startByte:h.segmentOffset??0,endByte:(h.segmentOffset??0)+m.length-1,value:(0,a.bytesToHex)(m)}]),x}static readUint32LE(d,m){return(d[m]|d[m+1]<<8|d[m+2]<<16|d[m+3]<<24)>>>0}}return el.ControlPayloadDecoder=l,el}var dA;function fA(){if(dA)return Va;dA=1,Object.defineProperty(Va,"__esModule",{value:!0}),Va.MeshCorePacketDecoder=void 0;const r=or(),a=xn(),o=ol(),l=xx(),f=CC(),d=EC(),m=kC(),h=SC(),x=BC(),p=PC(),y=TC(),v=DC(),w=RC(),P=FC();class R{static decode(E,T){return this.parseInternal(E,!1,T).packet}static async decodeWithVerification(E,T){return(await this.parseInternalAsync(E,!1,T)).packet}static analyzeStructure(E,T){return this.parseInternal(E,!0,T).structure}static async analyzeStructureWithVerification(E,T){return(await this.parseInternalAsync(E,!0,T)).structure}static parseInternal(E,T,B){const k=(0,a.hexToBytes)(E),N=[];if(k.length<2){const I={messageHash:"",routeType:r.RouteType.Flood,payloadType:r.PayloadType.RawCustom,payloadVersion:r.PayloadVersion.Version1,pathLength:0,path:null,payload:{raw:"",decoded:null},totalBytes:k.length,isValid:!1,errors:["Packet too short (minimum 2 bytes required)"]},z={segments:[],totalBytes:k.length,rawHex:E.toUpperCase(),messageHash:"",payload:{segments:[],hex:"",startByte:0,type:"Unknown"}};return{packet:I,structure:z}}try{let I=0;const z=k[0],j=z&3,H=z>>2&15,te=z>>6&3;T&&N.push({name:"Header",description:"Header byte breakdown",startByte:0,endByte:0,value:`0x${z.toString(16).padStart(2,"0")}`,headerBreakdown:{fullBinary:z.toString(2).padStart(8,"0"),fields:[{bits:"0-1",field:"Route Type",value:(0,o.getRouteTypeName)(j),binary:(z&3).toString(2).padStart(2,"0")},{bits:"2-5",field:"Payload Type",value:(0,o.getPayloadTypeName)(H),binary:(z>>2&15).toString(2).padStart(4,"0")},{bits:"6-7",field:"Version",value:te.toString(),binary:(z>>6&3).toString(2).padStart(2,"0")}]}}),I=1;let Z;if(j===r.RouteType.TransportFlood||j===r.RouteType.TransportDirect){if(k.length0?Array.from(ne).map(a.byteToHex):null;if(T&&V>0)if(H===r.PayloadType.Trace){const D=[];for(let U=0;U127?Q-256:Q)/4;D.push(`${he.toFixed(2)}dB (0x${Q.toString(16).padStart(2,"0")})`)}N.push({name:"Path SNR Data",description:`SNR values collected during trace: ${D.join(", ")}`,startByte:I,endByte:I+V-1,value:(0,a.bytesToHex)(k.slice(I,I+V))})}else{let D="Routing path information";j===r.RouteType.Direct||j===r.RouteType.TransportDirect?D="Routing instructions (bytes are stripped at each hop as packet travels to destination)":(j===r.RouteType.Flood||j===r.RouteType.TransportFlood)&&(D="Historical route taken (bytes are added as packet floods through network)"),N.push({name:"Path Data",description:D,startByte:I,endByte:I+V-1,value:(0,a.bytesToHex)(k.slice(I,I+V))})}I+=V;const ie=k.subarray(I),de=(0,a.bytesToHex)(ie);T&&k.length>I&&N.push({name:"Payload",description:`${(0,o.getPayloadTypeName)(H)} payload data`,startByte:I,endByte:k.length-1,value:(0,a.bytesToHex)(k.slice(I))});let ae=null;const pe=[];if(H===r.PayloadType.Advert){const D=f.AdvertPayloadDecoder.decode(ie,{includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}else if(H===r.PayloadType.Trace){const D=d.TracePayloadDecoder.decode(ie,X,{includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}else if(H===r.PayloadType.GroupText){const D=m.GroupTextPayloadDecoder.decode(ie,{...B,includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}else if(H===r.PayloadType.Request){const D=h.RequestPayloadDecoder.decode(ie,{includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}else if(H===r.PayloadType.Response){const D=x.ResponsePayloadDecoder.decode(ie,{includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}else if(H===r.PayloadType.AnonRequest){const D=p.AnonRequestPayloadDecoder.decode(ie,{includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}else if(H===r.PayloadType.Ack){const D=y.AckPayloadDecoder.decode(ie,{includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}else if(H===r.PayloadType.Path)ae=v.PathPayloadDecoder.decode(ie);else if(H===r.PayloadType.TextMessage){const D=w.TextMessagePayloadDecoder.decode(ie,{includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}else if(H===r.PayloadType.Control){const D=P.ControlPayloadDecoder.decode(ie,{includeSegments:T,segmentOffset:0});ae=D,D!=null&&D.segments&&(pe.push(...D.segments),delete D.segments)}T&&pe.length===0&&k.length>I&&pe.push({name:`${(0,o.getPayloadTypeName)(H)} Payload`,description:`Raw ${(0,o.getPayloadTypeName)(H)} payload data (${ie.length} bytes)`,startByte:0,endByte:ie.length-1,value:(0,a.bytesToHex)(ie)});const G=this.calculateMessageHash(k,j,H,te),J={messageHash:G,routeType:j,payloadType:H,payloadVersion:te,transportCodes:Z,pathLength:V,path:X,payload:{raw:de,decoded:ae},totalBytes:k.length,isValid:!0},q={segments:N,totalBytes:k.length,rawHex:E.toUpperCase(),messageHash:G,payload:{segments:pe,hex:de,startByte:I,type:(0,o.getPayloadTypeName)(H)}};return{packet:J,structure:q}}catch(I){const z={messageHash:"",routeType:r.RouteType.Flood,payloadType:r.PayloadType.RawCustom,payloadVersion:r.PayloadVersion.Version1,pathLength:0,path:null,payload:{raw:"",decoded:null},totalBytes:k.length,isValid:!1,errors:[I instanceof Error?I.message:"Unknown decoding error"]},j={segments:[],totalBytes:k.length,rawHex:E.toUpperCase(),messageHash:"",payload:{segments:[],hex:"",startByte:0,type:"Unknown"}};return{packet:z,structure:j}}}static async parseInternalAsync(E,T,B){const k=this.parseInternal(E,T,B);if(k.packet.payloadType===r.PayloadType.Advert&&k.packet.payload.decoded)try{const N=k.packet.payload.decoded,I=await f.AdvertPayloadDecoder.decodeWithVerification((0,a.hexToBytes)(k.packet.payload.raw),{includeSegments:T,segmentOffset:0});I&&(k.packet.payload.decoded=I,I.isValid||(k.packet.isValid=!1,k.packet.errors=I.errors||["Invalid advertisement signature"]),T&&I.segments&&(k.structure.payload.segments=I.segments,delete I.segments))}catch(N){console.error("Signature verification failed:",N)}return k}static validate(E){const T=(0,a.hexToBytes)(E),B=[];if(T.length<2)return B.push("Packet too short (minimum 2 bytes required)"),{isValid:!1,errors:B};try{let k=1;const I=T[0]&3;if((I===r.RouteType.TransportFlood||I===r.RouteType.TransportDirect)&&(T.length=T.length&&B.push("No payload data found")}catch(k){B.push(k instanceof Error?k.message:"Validation error")}return{isValid:B.length===0,errors:B.length>0?B:void 0}}static calculateMessageHash(E,T,B,k){if(B===r.PayloadType.Trace&&E.length>=13){let te=1;if((T===r.RouteType.TransportFlood||T===r.RouteType.TransportDirect)&&(te+=4),E.length>te){const Z=E[te];te+=1+Z}if(E.length>=te+4){const Z=E[te]|E[te+1]<<8|E[te+2]<<16|E[te+3]<<24;return(0,a.numberToHex)(Z,8)}}const N=B<<2|k<<6;let I=1;if((T===r.RouteType.TransportFlood||T===r.RouteType.TransportDirect)&&(I+=4),E.length>I){const te=E[I];I+=1+te}const z=E.slice(I),j=[N,...Array.from(z)];let H=0;for(let te=0;tek.exp)return null;const N=`${v}.${w}`,I=new TextEncoder().encode(N),z=(0,a.bytesToHex)(I);return await(0,r.verify)(P,z,k.publicKey)?k:null}catch{return null}}function m(x){try{const p=x.split(".");return p.length!==3?null:{header:p[0],payload:p[1],signature:p[2]}}catch{return null}}function h(x){try{const p=x.split(".");if(p.length!==3)return null;const y=l(p[1]),v=new TextDecoder().decode(y);return JSON.parse(v)}catch{return null}}return Ho}var mA;function NC(){return mA||(mA=1,(function(r){var a=yi&&yi.__createBinding||(Object.create?(function(T,B,k,N){N===void 0&&(N=k);var I=Object.getOwnPropertyDescriptor(B,k);(!I||("get"in I?!B.__esModule:I.writable||I.configurable))&&(I={enumerable:!0,get:function(){return B[k]}}),Object.defineProperty(T,N,I)}):(function(T,B,k,N){N===void 0&&(N=k),T[N]=B[k]})),o=yi&&yi.__setModuleDefault||(Object.create?(function(T,B){Object.defineProperty(T,"default",{enumerable:!0,value:B})}):function(T,B){T.default=B}),l=yi&&yi.__importStar||(function(){var T=function(B){return T=Object.getOwnPropertyNames||function(k){var N=[];for(var I in k)Object.prototype.hasOwnProperty.call(k,I)&&(N[N.length]=I);return N},T(B)};return function(B){if(B&&B.__esModule)return B;var k={};if(B!=null)for(var N=T(B),I=0;I2?a+o:1;return Vo*l*Vo}function ZC(r,a=n0,o){const l=Math.floor(Date.now()/1e3);return r<=l&&r>=l-a}function WC(r){return!r.includes("�")}class $c{constructor(){this.device=null,this.pipeline=null,this.bindGroupLayout=null,this.paramsBuffer=null,this.matchCountBuffer=null,this.matchIndicesBuffer=null,this.ciphertextBuffer=null,this.ciphertextBufferSize=0,this.matchCountReadBuffers=[null,null],this.matchIndicesReadBuffers=[null,null],this.currentReadBufferIndex=0,this.bindGroup=null,this.bindGroupDirty=!0,this.shaderCode=` +// SHA256 round constants +const K: array = array( + 0x428a2f98u, 0x71374491u, 0xb5c0fbcfu, 0xe9b5dba5u, 0x3956c25bu, 0x59f111f1u, 0x923f82a4u, 0xab1c5ed5u, + 0xd807aa98u, 0x12835b01u, 0x243185beu, 0x550c7dc3u, 0x72be5d74u, 0x80deb1feu, 0x9bdc06a7u, 0xc19bf174u, + 0xe49b69c1u, 0xefbe4786u, 0x0fc19dc6u, 0x240ca1ccu, 0x2de92c6fu, 0x4a7484aau, 0x5cb0a9dcu, 0x76f988dau, + 0x983e5152u, 0xa831c66du, 0xb00327c8u, 0xbf597fc7u, 0xc6e00bf3u, 0xd5a79147u, 0x06ca6351u, 0x14292967u, + 0x27b70a85u, 0x2e1b2138u, 0x4d2c6dfcu, 0x53380d13u, 0x650a7354u, 0x766a0abbu, 0x81c2c92eu, 0x92722c85u, + 0xa2bfe8a1u, 0xa81a664bu, 0xc24b8b70u, 0xc76c51a3u, 0xd192e819u, 0xd6990624u, 0xf40e3585u, 0x106aa070u, + 0x19a4c116u, 0x1e376c08u, 0x2748774cu, 0x34b0bcb5u, 0x391c0cb3u, 0x4ed8aa4au, 0x5b9cca4fu, 0x682e6ff3u, + 0x748f82eeu, 0x78a5636fu, 0x84c87814u, 0x8cc70208u, 0x90befffau, 0xa4506cebu, 0xbef9a3f7u, 0xc67178f2u +); + +// Character lookup table (a-z = 0-25, 0-9 = 26-35, dash = 36) +const CHARS: array = array( + 0x61u, 0x62u, 0x63u, 0x64u, 0x65u, 0x66u, 0x67u, 0x68u, 0x69u, 0x6au, // a-j + 0x6bu, 0x6cu, 0x6du, 0x6eu, 0x6fu, 0x70u, 0x71u, 0x72u, 0x73u, 0x74u, // k-t + 0x75u, 0x76u, 0x77u, 0x78u, 0x79u, 0x7au, // u-z + 0x30u, 0x31u, 0x32u, 0x33u, 0x34u, 0x35u, 0x36u, 0x37u, 0x38u, 0x39u, // 0-9 + 0x2du // dash +); + +struct Params { + target_channel_hash: u32, + batch_offset: u32, + name_length: u32, + batch_size: u32, + target_mac: u32, // First 2 bytes of target MAC (in high 16 bits) + ciphertext_words: u32, // Number of 32-bit words in ciphertext + ciphertext_len_bits: u32, // Length of ciphertext in bits + verify_mac: u32, // 1 to verify MAC, 0 to skip +} + +@group(0) @binding(0) var params: Params; +@group(0) @binding(1) var match_count: atomic; +@group(0) @binding(2) var match_indices: array; +@group(0) @binding(3) var ciphertext: array; // Ciphertext data + +fn rotr(x: u32, n: u32) -> u32 { + return (x >> n) | (x << (32u - n)); +} + +fn ch(x: u32, y: u32, z: u32) -> u32 { + return (x & y) ^ (~x & z); +} + +fn maj(x: u32, y: u32, z: u32) -> u32 { + return (x & y) ^ (x & z) ^ (y & z); +} + +fn sigma0(x: u32) -> u32 { + return rotr(x, 2u) ^ rotr(x, 13u) ^ rotr(x, 22u); +} + +fn sigma1(x: u32) -> u32 { + return rotr(x, 6u) ^ rotr(x, 11u) ^ rotr(x, 25u); +} + +fn gamma0(x: u32) -> u32 { + return rotr(x, 7u) ^ rotr(x, 18u) ^ (x >> 3u); +} + +fn gamma1(x: u32) -> u32 { + return rotr(x, 17u) ^ rotr(x, 19u) ^ (x >> 10u); +} + +// Convert index to room name bytes, returns the hash as a u32 for the first byte check +fn index_to_room_name(idx: u32, length: u32, msg: ptr>) -> bool { + // Message starts with '#' (0x23) + var byte_pos = 0u; + var word_idx = 0u; + var current_word = 0x23000000u; // '#' in big-endian position 0 + byte_pos = 1u; + + var remaining = idx; + var prev_was_dash = false; + + // Generate room name from index + for (var i = 0u; i < length; i++) { + let char_count = select(37u, 36u, i == 0u || i == length - 1u); // no dash at start/end + var char_idx = remaining % char_count; + remaining = remaining / char_count; + + // Check for consecutive dashes (invalid) + let is_dash = char_idx == 36u && i > 0u && i < length - 1u; + if (is_dash && prev_was_dash) { + return false; // Invalid: consecutive dashes + } + prev_was_dash = is_dash; + + // Map char index to actual character + let c = CHARS[char_idx]; + + // Pack byte into current word (big-endian) + let shift = (3u - byte_pos % 4u) * 8u; + if (byte_pos % 4u == 0u && byte_pos > 0u) { + (*msg)[word_idx] = current_word; + word_idx = word_idx + 1u; + current_word = 0u; + } + current_word = current_word | (c << shift); + byte_pos = byte_pos + 1u; + } + + // Add padding: 0x80 followed by zeros, then length in bits + let msg_len_bits = (length + 1u) * 8u; // +1 for '#' + + // Add 0x80 padding byte + let shift = (3u - byte_pos % 4u) * 8u; + if (byte_pos % 4u == 0u) { + (*msg)[word_idx] = current_word; + word_idx = word_idx + 1u; + current_word = 0x80000000u; + } else { + current_word = current_word | (0x80u << shift); + } + byte_pos = byte_pos + 1u; + + // Store current word + if (byte_pos % 4u == 0u || word_idx < 14u) { + (*msg)[word_idx] = current_word; + word_idx = word_idx + 1u; + } + + // Zero-fill until word 14 + for (var i = word_idx; i < 14u; i++) { + (*msg)[i] = 0u; + } + + // Length in bits (64-bit, but we only use lower 32 bits for short messages) + (*msg)[14u] = 0u; + (*msg)[15u] = msg_len_bits; + + return true; +} + +fn sha256_block(msg: ptr>) -> array { + // Initialize hash values + var h: array = array( + 0x6a09e667u, 0xbb67ae85u, 0x3c6ef372u, 0xa54ff53au, + 0x510e527fu, 0x9b05688cu, 0x1f83d9abu, 0x5be0cd19u + ); + + // Message schedule + var w: array; + for (var i = 0u; i < 16u; i++) { + w[i] = (*msg)[i]; + } + for (var i = 16u; i < 64u; i++) { + w[i] = gamma1(w[i-2u]) + w[i-7u] + gamma0(w[i-15u]) + w[i-16u]; + } + + // Compression + var a = h[0]; var b = h[1]; var c = h[2]; var d = h[3]; + var e = h[4]; var f = h[5]; var g = h[6]; var hh = h[7]; + + for (var i = 0u; i < 64u; i++) { + let t1 = hh + sigma1(e) + ch(e, f, g) + K[i] + w[i]; + let t2 = sigma0(a) + maj(a, b, c); + hh = g; g = f; f = e; e = d + t1; + d = c; c = b; b = a; a = t1 + t2; + } + + h[0] = h[0] + a; h[1] = h[1] + b; h[2] = h[2] + c; h[3] = h[3] + d; + h[4] = h[4] + e; h[5] = h[5] + f; h[6] = h[6] + g; h[7] = h[7] + hh; + + return h; +} + +// Compute SHA256 of the key (16 bytes) to get channel hash +fn sha256_key(key: array) -> u32 { + var msg: array; + + // Key bytes (16 bytes = 4 words) + msg[0] = key[0]; + msg[1] = key[1]; + msg[2] = key[2]; + msg[3] = key[3]; + + // Padding: 0x80 followed by zeros + msg[4] = 0x80000000u; + for (var i = 5u; i < 14u; i++) { + msg[i] = 0u; + } + + // Length: 128 bits + msg[14] = 0u; + msg[15] = 128u; + + let hash = sha256_block(&msg); + + // Return first byte of hash (big-endian) + return hash[0] >> 24u; +} + +// HMAC-SHA256 for MAC verification +// Key is 16 bytes (4 words), padded to 32 bytes with zeros for MeshCore +// Returns first 2 bytes of HMAC (as u32 in high 16 bits) +fn hmac_sha256_mac(key: array, ciphertext_len: u32) -> u32 { + // HMAC: H((K' ^ opad) || H((K' ^ ipad) || message)) + // K' is 64 bytes (32 bytes key + 32 bytes zero padding for MeshCore, then padded to 64) + // ipad = 0x36 repeated, opad = 0x5c repeated + + // Build padded key (64 bytes = 16 words) + // MeshCore uses 32-byte secret: 16-byte key + 16 zero bytes + var k_pad: array; + k_pad[0] = key[0]; + k_pad[1] = key[1]; + k_pad[2] = key[2]; + k_pad[3] = key[3]; + for (var i = 4u; i < 16u; i++) { + k_pad[i] = 0u; + } + + // Inner hash: SHA256((K' ^ ipad) || message) + // First block: K' ^ ipad (64 bytes) + var inner_block: array; + for (var i = 0u; i < 16u; i++) { + inner_block[i] = k_pad[i] ^ 0x36363636u; + } + + // Initialize hash state with first block + var h: array = sha256_block(&inner_block); + + // Process ciphertext blocks (continuing from h state) + let ciphertext_words = params.ciphertext_words; + var word_idx = 0u; + + // Process full 64-byte blocks of ciphertext + while (word_idx + 16u <= ciphertext_words) { + var block: array; + for (var i = 0u; i < 16u; i++) { + block[i] = ciphertext[word_idx + i]; + } + h = sha256_block_continue(&block, h); + word_idx = word_idx + 16u; + } + + // Final block with remaining ciphertext + padding + var final_block: array; + var remaining = ciphertext_words - word_idx; + for (var i = 0u; i < 16u; i++) { + if (i < remaining) { + final_block[i] = ciphertext[word_idx + i]; + } else if (i == remaining) { + // Add 0x80 padding + final_block[i] = 0x80000000u; + } else { + final_block[i] = 0u; + } + } + + // Add length (64 bytes of ipad + ciphertext length) + let total_bits = 512u + params.ciphertext_len_bits; + if (remaining < 14u) { + final_block[14] = 0u; + final_block[15] = total_bits; + h = sha256_block_continue(&final_block, h); + } else { + // Need extra block for length + h = sha256_block_continue(&final_block, h); + var len_block: array; + for (var i = 0u; i < 14u; i++) { + len_block[i] = 0u; + } + len_block[14] = 0u; + len_block[15] = total_bits; + h = sha256_block_continue(&len_block, h); + } + + let inner_hash = h; + + // Outer hash: SHA256((K' ^ opad) || inner_hash) + var outer_block: array; + for (var i = 0u; i < 16u; i++) { + outer_block[i] = k_pad[i] ^ 0x5c5c5c5cu; + } + h = sha256_block(&outer_block); + + // Second block: inner_hash (32 bytes) + padding + var hash_block: array; + for (var i = 0u; i < 8u; i++) { + hash_block[i] = inner_hash[i]; + } + hash_block[8] = 0x80000000u; + for (var i = 9u; i < 14u; i++) { + hash_block[i] = 0u; + } + hash_block[14] = 0u; + hash_block[15] = 512u + 256u; // 64 bytes opad + 32 bytes inner hash + + h = sha256_block_continue(&hash_block, h); + + // Return first 2 bytes (high 16 bits of first word) + return h[0] & 0xFFFF0000u; +} + +// SHA256 block computation continuing from existing state +fn sha256_block_continue(msg: ptr>, h_in: array) -> array { + var h = h_in; + + // Message schedule + var w: array; + for (var i = 0u; i < 16u; i++) { + w[i] = (*msg)[i]; + } + for (var i = 16u; i < 64u; i++) { + w[i] = gamma1(w[i-2u]) + w[i-7u] + gamma0(w[i-15u]) + w[i-16u]; + } + + // Compression + var a = h[0]; var b = h[1]; var c = h[2]; var d = h[3]; + var e = h[4]; var f = h[5]; var g = h[6]; var hh = h[7]; + + for (var i = 0u; i < 64u; i++) { + let t1 = hh + sigma1(e) + ch(e, f, g) + K[i] + w[i]; + let t2 = sigma0(a) + maj(a, b, c); + hh = g; g = f; f = e; e = d + t1; + d = c; c = b; b = a; a = t1 + t2; + } + + h[0] = h[0] + a; h[1] = h[1] + b; h[2] = h[2] + c; h[3] = h[3] + d; + h[4] = h[4] + e; h[5] = h[5] + f; h[6] = h[6] + g; h[7] = h[7] + hh; + + return h; +} + +// Process a single candidate and record match if found +fn process_candidate(name_idx: u32) { + // Generate message for this room name + var msg: array; + let valid = index_to_room_name(name_idx, params.name_length, &msg); + + if (!valid) { + return; + } + + // Compute SHA256("#roomname") - this gives us the key + let key_hash = sha256_block(&msg); + + // Take first 16 bytes (4 words) as the key + var key: array; + key[0] = key_hash[0]; + key[1] = key_hash[1]; + key[2] = key_hash[2]; + key[3] = key_hash[3]; + + // Compute SHA256(key) to get channel hash + let channel_hash = sha256_key(key); + + // Check if channel hash matches target + if (channel_hash != params.target_channel_hash) { + return; + } + + // Channel hash matches - verify MAC if enabled + if (params.verify_mac == 1u) { + let computed_mac = hmac_sha256_mac(key, params.ciphertext_len_bits); + if (computed_mac != params.target_mac) { + return; + } + } + + // Found a match - record the index + let match_idx = atomicAdd(&match_count, 1u); + if (match_idx < 1024u) { // Limit stored matches + match_indices[match_idx] = name_idx; + } +} + +// Each thread processes 32 candidates to amortize thread overhead +const CANDIDATES_PER_THREAD: u32 = 32u; + +@compute @workgroup_size(256) +fn main(@builtin(global_invocation_id) global_id: vec3) { + let base_idx = global_id.x * CANDIDATES_PER_THREAD; + + for (var i = 0u; i < CANDIDATES_PER_THREAD; i++) { + let idx = base_idx + i; + if (idx >= params.batch_size) { + return; + } + let name_idx = params.batch_offset + idx; + process_candidate(name_idx); + } +} +`}async init(){if(!navigator.gpu)return console.warn("WebGPU not supported"),!1;try{const a=await navigator.gpu.requestAdapter();if(!a)return console.warn("No GPU adapter found"),!1;this.device=await a.requestDevice(),this.bindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}}]}),this.paramsBuffer=this.device.createBuffer({size:32,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.matchCountBuffer=this.device.createBuffer({size:4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}),this.matchIndicesBuffer=this.device.createBuffer({size:1024*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC});for(let f=0;f<2;f++)this.matchCountReadBuffers[f]=this.device.createBuffer({size:4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.matchIndicesReadBuffers[f]=this.device.createBuffer({size:1024*4,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST});const o=this.device.createShaderModule({code:this.shaderCode}),l=this.device.createPipelineLayout({bindGroupLayouts:[this.bindGroupLayout]});return this.pipeline=this.device.createComputePipeline({layout:l,compute:{module:o,entryPoint:"main"}}),!0}catch(a){return console.error("WebGPU initialization failed:",a),!1}}isAvailable(){return this.device!==null&&this.pipeline!==null}indexToRoomName(a,o){return Zo(o,a)}countNamesForLength(a){return nl(a)}async runBatch(a,o,l,f,d,m){if(!this.device||!this.pipeline||!this.bindGroupLayout||!this.paramsBuffer||!this.matchCountBuffer||!this.matchIndicesBuffer||!this.matchCountReadBuffers[0]||!this.matchCountReadBuffers[1]||!this.matchIndicesReadBuffers[0]||!this.matchIndicesReadBuffers[1])throw new Error("GPU not initialized");const h=this.currentReadBufferIndex;this.currentReadBufferIndex=1-this.currentReadBufferIndex;const x=this.matchCountReadBuffers[h],p=this.matchIndicesReadBuffers[h],y=d&&m?1:0;let v,w=0,P=0;if(y){const I=new Uint8Array(d.length/2);for(let Z=0;Z0){await p.mapAsync(GPUMapMode.READ);const I=new Uint32Array(p.getMappedRange());for(let z=0;z1&&!QC.test(r)||KC.test(r))}class $C{constructor(){this.gpuInstance=null,this.cpuInstance=null,this.wordlist=[],this.abortFlag=!1,this.useTimestampFilter=!0,this.useUtf8Filter=!0,this.useSenderFilter=!0,this.validSeconds=n0,this.useCpu=!1}async loadWordlist(a){const o=await fetch(a);if(!o.ok)throw new Error(`Failed to load wordlist: ${o.status} ${o.statusText}`);const f=(await o.text()).split(` +`).map(d=>d.trim().toLowerCase()).filter(d=>d.length>0);this.wordlist=f.filter(yA)}setWordlist(a){this.wordlist=a.map(o=>o.trim().toLowerCase()).filter(yA)}abort(){this.abortFlag=!0}isGpuAvailable(){return qC()}async decodePacket(a){var l;const o=a.trim().replace(/\s+/g,"").replace(/^0x/i,"");if(!o||!/^[0-9a-fA-F]+$/.test(o))return null;try{const d=(l=(await AA.MeshCorePacketDecoder.decodeWithVerification(o,{})).payload)==null?void 0:l.decoded;return!(d!=null&&d.channelHash)||!(d!=null&&d.ciphertext)||!(d!=null&&d.cipherMac)?null:{channelHash:d.channelHash,ciphertext:d.ciphertext,cipherMac:d.cipherMac,isGroupText:!0}}catch{return null}}async crack(a,o,l){this.abortFlag=!1,this.useTimestampFilter=(o==null?void 0:o.useTimestampFilter)??!0,this.useUtf8Filter=(o==null?void 0:o.useUtf8Filter)??!0,this.useSenderFilter=(o==null?void 0:o.useSenderFilter)??!0,this.validSeconds=(o==null?void 0:o.validSeconds)??n0,this.useCpu=(o==null?void 0:o.forceCpu)??!1;const f=(o==null?void 0:o.maxLength)??8,d=(o==null?void 0:o.startingLength)??1,m=(o==null?void 0:o.useDictionary)??!0,h=(o==null?void 0:o.startFromType)??"bruteforce",x=a.toLowerCase(),p=await this.decodePacket(x);if(!p)return{found:!1,error:"Invalid packet or not a GroupText packet"};const{channelHash:y,ciphertext:v,cipherMac:w}=p,P=parseInt(y,16);this.useCpu?this.cpuInstance||(this.cpuInstance=new vA):this.gpuInstance||(this.gpuInstance=new $c,await this.gpuInstance.init()||(this.useCpu=!0,this.cpuInstance=new vA));const R=performance.now();let C=0,E=performance.now(),T=d,B=0,k=0,N=!1;if(o!=null&&o.startFrom){const X=o.startFrom.toLowerCase();if(h==="dictionary"){const ie=this.wordlist.indexOf(X);ie>=0&&(k=ie+1)}else{N=!0;const ie=UC(X);ie&&(T=Math.max(d,ie.length),B=ie.index+1,B>=nl(T)&&(T++,B=0))}}let I=0;m&&!N&&this.wordlist.length>0&&(I+=this.wordlist.length-k);for(let X=T;X<=f;X++)I+=nl(X);I-=B;const z=(X,ie,de)=>{if(!l)return;const pe=(performance.now()-R)/1e3,G=pe>0?Math.round(C/pe):0,J=I-C,q=G>0?J/G:0;l({checked:C,total:I,percent:I>0?Math.min(100,C/I*100):0,rateKeysPerSec:G,etaSeconds:q,elapsedSeconds:pe,currentLength:ie,currentPosition:de,phase:X})},j=X=>{if(!Ix(v,w,X))return{valid:!1};const ie=AA.ChannelCrypto.decryptGroupTextMessage(v,w,X);return!ie.success||!ie.data?{valid:!1}:this.useTimestampFilter&&!ZC(ie.data.timestamp,this.validSeconds)?{valid:!1}:this.useUtf8Filter&&!WC(ie.data.message)?{valid:!1}:this.useSenderFilter&&!ie.data.sender?{valid:!1}:{valid:!0,message:ie.data.sender?`${ie.data.sender}: ${ie.data.message}`:ie.data.message}};if(!N&&k===0&&T===d&&B===0){z("public-key",0,t0);const X=i0(Ec);if(y===X){const ie=j(Ec);if(ie.valid)return{found:!0,roomName:t0,key:Ec,decryptedMessage:ie.message}}}if(m&&!N&&this.wordlist.length>0)for(let X=k;X=200&&(z("wordlist",ie.length,ie),E=pe,await new Promise(G=>setTimeout(G,0)))}const H=this.useCpu?1024:32768,te=(o==null?void 0:o.gpuDispatchMs)??1e3;let Z=H,V=!1;for(let X=T;X<=f;X++){if(this.abortFlag)return{found:!1,aborted:!0,resumeFrom:Zo(X,0)||void 0,resumeType:"bruteforce"};const ie=nl(X);let de=X===T?B:0;for(;de=H&&J>0){const D=te/J,U=Math.round(ae*D),Q=Math.pow(2,Math.round(Math.log2(Math.max(H,U))));Z=Math.max(H,Q),V=!0}for(const D of G){const U=Zo(X,D);if(!U)continue;const Q=r0("#"+U),$=j(Q);if($.valid)return{found:!0,roomName:U,key:Q,decryptedMessage:$.message,resumeFrom:U,resumeType:"bruteforce"}}de+=ae;const q=performance.now();if(q-E>=200){const D=Zo(X,Math.min(de,ie-1))||"";z("bruteforce",X,D),E=q,await new Promise(U=>setTimeout(U,0))}}}return{found:!1,resumeFrom:Zo(f,nl(f)-1)||void 0,resumeType:"bruteforce"}}destroy(){this.gpuInstance&&(this.gpuInstance.destroy(),this.gpuInstance=null),this.cpuInstance&&(this.cpuInstance.destroy(),this.cpuInstance=null)}}var Hf,_A;function YC(){return _A||(_A=1,Hf={webm:"data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",mp4:"data:video/mp4;base64,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"}),Hf}var Vf,wA;function XC(){if(wA)return Vf;wA=1;const{webm:r,mp4:a}=YC(),o=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,l=()=>"wakeLock"in navigator;class f{constructor(){if(this.enabled=!1,l()){this._wakeLock=null;const m=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",m),document.addEventListener("fullscreenchange",m)}else o()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",r),this._addSourceToVideo(this.noSleepVideo,"mp4",a),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(m,h,x){var p=document.createElement("source");p.src=x,p.type=`video/${h}`,m.appendChild(p)}get isEnabled(){return this.enabled}enable(){return l()?navigator.wakeLock.request("screen").then(m=>{this._wakeLock=m,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(m=>{throw this.enabled=!1,console.error(`${m.name}, ${m.message}`),m}):o()?(this.disable(),console.warn(` + NoSleep enabled for older iOS devices. This can interrupt + active or long-running network requests from completing successfully. + See https://github.com/richtr/NoSleep.js/issues/15 for more details. + `),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(h=>(this.enabled=!0,h)).catch(h=>{throw this.enabled=!1,h})}disable(){l()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):o()?this.noSleepTimer&&(console.warn(` + NoSleep now disabled for older iOS devices. + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}return Vf=f,Vf}var JC=XC();const eE=Gs(JC);function tE(r){if(r.length<4)return null;try{const o=parseInt(r.slice(0,2),16)&3;let l=2;if(o===0||o===3){if(r.length{const Se=new $C;X.current=Se,H(Se.isGpuAvailable());const Ue=new eE;return ie.current=Ue,()=>{Se.destroy(),X.current=null,Ue.disable(),ie.current=null}},[]),F.useEffect(()=>{!f||I||Q2(async()=>{const{ENGLISH_WORDLIST:Se}=await import("./wordlist-BtmChKSf.js");return{ENGLISH_WORDLIST:Se}},[]).then(({ENGLISH_WORDLIST:Se})=>{X.current&&(X.current.setWordlist(Se),z(!0))}).catch(Se=>{console.error("Failed to load wordlist:",Se),kt.error("Failed to load wordlist",{description:"Cracking will not be available"})})},[f,I]),F.useEffect(()=>{const Se=()=>{ct.getUndecryptedPacketCount().then(({count:at})=>Z(at)).catch(()=>Z(null))};Se();const Ue=setInterval(Se,3e4);return()=>clearInterval(Ue)},[]);const he=F.useMemo(()=>new Set(a.map(Se=>Se.key.toUpperCase())),[a]),fe=r.filter(Se=>Se.payload_type==="GROUP_TEXT"&&!Se.decrypted);F.useEffect(()=>{let Se=0;B(Ue=>{const at=new Map(Ue);let Dt=!1;for(const xt of fe)if(!at.has(xt.id)){const ot=tE(xt.data);if(ot&&$.current.has(ot)){Se++;continue}ot&&$.current.add(ot),at.set(xt.id,{packet:xt,attempts:0,lastAttemptLength:0,status:"pending"}),Dt=!0}return Dt?(G.current=at,at):Ue}),Se>0&&ne(Ue=>Ue+Se)},[fe.length]),F.useEffect(()=>{G.current=T},[T]),F.useEffect(()=>{J.current=p},[p]),F.useEffect(()=>{q.current=h},[h]),F.useEffect(()=>{D.current=v},[v]),F.useEffect(()=>{U.current=P},[P]),F.useEffect(()=>{Q.current=new Set(fe.map(Se=>Se.id))},[fe]),F.useEffect(()=>{l==null||l(d)},[d,l]);const ke=Array.from(T.values()).filter(Se=>Se.status==="pending").length,ge=Array.from(T.values()).filter(Se=>Se.status==="cracked").length,Ze=Array.from(T.values()).filter(Se=>Se.status==="failed").length,$e=F.useCallback(async()=>{if(pe.current||!X.current||!de.current)return;const Se=G.current;let Ue=null,at=null;for(const[Ke,Xe]of Se.entries())if(Xe.status==="pending"){Ue=Xe,at=Ke;break}if(!Ue&&J.current){const Ke=Array.from(Se.entries()).filter(([,Xe])=>Xe.status==="failed"&&Xe.lastAttemptLength<10);Ke.length>0&&(Ke.sort((Xe,xe)=>Xe[1].lastAttemptLength-xe[1].lastAttemptLength),[at,Ue]=Ke[0])}if(!Ue||at===null){de.current&&setTimeout(()=>$e(),1e3);return}if(!Q.current.has(at)){B(Ke=>{const Xe=new Map(Ke);return Xe.delete(at),Xe}),de.current&&setTimeout(()=>$e(),10);return}pe.current=!0;const Dt=q.current,xt=Ue.lastAttemptLength>0,ot=xt?Ue.lastAttemptLength+1:Dt;try{const Ke=await X.current.crack(Ue.packet.data,{maxLength:ot,useSenderFilter:!0,useTimestampFilter:!0,useUtf8Filter:!0,...U.current&&{gpuDispatchMs:1e4},...xt&&{useDictionary:!1,startingLength:ot}},Xe=>{E(Xe)});if(ae.current){ae.current=!1,pe.current=!1,E(null);return}if(Ke.found&&Ke.roomName&&Ke.key){B(Te=>{const pt=new Map(Te),Ut=pt.get(at);return Ut&&pt.set(at,{...Ut,status:"cracked",attempts:Ut.attempts+1,lastAttemptLength:ot}),pt});const Xe={roomName:Ke.roomName,key:Ke.key,packetId:at,message:Ke.decryptedMessage||"",crackedAt:Date.now()};N(Te=>[...Te,Xe]);const xe=Ke.key.toUpperCase();if(!he.has(xe))try{const Te="#"+Ke.roomName;await o(Te,Ke.key),D.current&&await ct.decryptHistoricalPackets({key_type:"channel",channel_name:Te})}catch(Te){console.error("Failed to create channel or decrypt historical:",Te),kt.error("Failed to save cracked channel",{description:Te instanceof Error?Te.message:"Channel discovered but could not be saved"})}}else B(Xe=>{const xe=new Map(Xe),Te=xe.get(at);return Te&&xe.set(at,{...Te,status:"failed",attempts:Te.attempts+1,lastAttemptLength:ot}),xe})}catch(Ke){console.error("Cracking error:",Ke),B(Xe=>{const xe=new Map(Xe),Te=xe.get(at);return Te&&xe.set(at,{...Te,status:"failed",attempts:Te.attempts+1,lastAttemptLength:ot}),xe})}pe.current=!1,E(null),de.current&&setTimeout(()=>$e(),100)},[he,o]),wt=()=>{var Se;if(!j){kt.error("WebGPU not available",{description:"Cracking requires Chrome 113+ or Edge 113+ with WebGPU support."});return}m(!0),de.current=!0,ae.current=!1,(Se=ie.current)==null||Se.enable(),$e()},ft=()=>{var Se,Ue;m(!1),de.current=!1,ae.current=!0,(Se=X.current)==null||Se.abort(),(Ue=ie.current)==null||Ue.disable()};return S.jsxs("div",{className:"flex flex-col h-full p-3 gap-3 bg-background border-t border-border",children:[S.jsxs("p",{className:"text-xs text-muted-foreground leading-relaxed",children:["This will attempt to dictionary attack, then brute force GroupText packets as they arrive, testing room names up to the specified length.",S.jsx("strong",{children:" Retry failed at n+1"})," will let the cracker return to the failed queue and pick up messages it couldn't crack, attempting them at one longer length.",S.jsx("strong",{children:" Decrypt historical"})," will run an async job on any room name it finds to see if any historically captured packets will decrypt with that key.",S.jsx("strong",{children:" Turbo mode"})," will push your GPU to the max (target dispatch time of 10s) and may allow accelerated cracking and/or system instability."]}),S.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[S.jsx("button",{onClick:d?ft:wt,disabled:!I||j===!1,className:rt("px-4 py-1.5 rounded text-sm font-medium",d?"bg-destructive text-destructive-foreground hover:bg-destructive/90":"bg-primary text-primary-foreground hover:bg-primary/90","disabled:opacity-50 disabled:cursor-not-allowed"),children:d?"Stop":"Start Cracking"}),S.jsxs("div",{className:"flex items-center gap-2",children:[S.jsx("label",{className:"text-sm text-muted-foreground",children:"Max Length:"}),S.jsx("input",{type:"number",min:1,max:10,value:h,onChange:Se=>x(Math.min(10,Math.max(1,parseInt(Se.target.value)||6))),className:"w-14 px-2 py-1 text-sm bg-muted border border-border rounded"})]}),S.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[S.jsx("input",{type:"checkbox",checked:p,onChange:Se=>y(Se.target.checked),className:"rounded"}),"Retry failed at n+1"]}),S.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[S.jsx("input",{type:"checkbox",checked:v,onChange:Se=>w(Se.target.checked),className:"rounded"}),"Decrypt historical packets if key found"]}),v&&S.jsx("span",{className:"text-xs text-muted-foreground",children:te!==null&&te>0?`(${te.toLocaleString()} packets; messages will stream in as decrypted)`:"(messages will stream in as decrypted)"}),S.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[S.jsx("input",{type:"checkbox",checked:P,onChange:Se=>R(Se.target.checked),className:"rounded"}),"Turbo mode (experimental)"]})]}),S.jsxs("div",{className:"flex gap-4 text-sm",children:[S.jsxs("span",{className:"text-muted-foreground",children:["Pending: ",S.jsx("span",{className:"text-foreground font-medium",children:ke})]}),S.jsxs("span",{className:"text-muted-foreground",children:["Cracked: ",S.jsx("span",{className:"text-green-500 font-medium",children:ge})]}),S.jsxs("span",{className:"text-muted-foreground",children:["Failed: ",S.jsx("span",{className:"text-destructive font-medium",children:Ze})]}),V>0&&S.jsxs("span",{className:"text-muted-foreground",children:["Skipped (dup):"," ",S.jsx("span",{className:"text-muted-foreground font-medium",children:V})]})]}),C&&S.jsxs("div",{className:"space-y-1",children:[S.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[S.jsxs("span",{children:[C.phase==="wordlist"?"Dictionary":C.phase==="bruteforce"?"Bruteforce":"Public Key",C.phase==="bruteforce"&&` - Length ${C.currentLength}`,":"," ",C.currentPosition]}),S.jsxs("span",{children:[C.rateKeysPerSec>=1e9?`${(C.rateKeysPerSec/1e9).toFixed(2)} Gkeys/s`:`${(C.rateKeysPerSec/1e6).toFixed(1)} Mkeys/s`," ","• ETA:"," ",C.etaSeconds<60?`${Math.round(C.etaSeconds)}s`:`${Math.round(C.etaSeconds/60)}m`]})]}),S.jsx("div",{className:"h-2 bg-muted rounded overflow-hidden",children:S.jsx("div",{className:"h-full bg-primary transition-all duration-200",style:{width:`${C.percent}%`}})})]}),j===!1&&S.jsx("div",{className:"text-sm text-destructive",children:"WebGPU not available. Cracking requires Chrome 113+ or Edge 113+."}),!I&&j!==!1&&S.jsx("div",{className:"text-sm text-muted-foreground",children:"Loading wordlist..."}),k.length>0&&S.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0",children:[S.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"Cracked Rooms:"}),S.jsx("div",{className:"space-y-1",children:k.map((Se,Ue)=>S.jsxs("div",{className:"text-sm bg-green-950/30 border border-green-900/50 rounded px-2 py-1",children:[S.jsxs("span",{className:"text-green-400 font-medium",children:["#",Se.roomName]}),S.jsxs("span",{className:"text-muted-foreground ml-2 text-xs",children:['"',Se.message.slice(0,50),Se.message.length>50?"...":"",'"']})]},Ue))})]})]})}const rE=Cg,iE=Eg,Ox=F.forwardRef(({className:r,...a},o)=>S.jsx(Oc,{className:rt("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...a,ref:o}));Ox.displayName=Oc.displayName;const oE=Nc("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),zx=F.forwardRef(({side:r="right",className:a,children:o,hideCloseButton:l=!1,...f},d)=>S.jsxs(iE,{children:[S.jsx(Ox,{}),S.jsxs(zc,{ref:d,className:rt(oE({side:r}),a),...f,children:[!l&&S.jsxs(kg,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[S.jsx(TA,{className:"h-4 w-4"}),S.jsx("span",{className:"sr-only",children:"Close"})]}),o]})]}));zx.displayName=zc.displayName;const jx=({className:r,...a})=>S.jsx("div",{className:rt("flex flex-col space-y-2 text-center sm:text-left",r),...a});jx.displayName="SheetHeader";const Hx=F.forwardRef(({className:r,...a},o)=>S.jsx(jc,{ref:o,className:rt("text-lg font-semibold text-foreground",r),...a}));Hx.displayName=jc.displayName;const sE=F.forwardRef(({className:r,...a},o)=>S.jsx(Hc,{ref:o,className:rt("text-sm text-muted-foreground",r),...a}));sE.displayName=Hc.displayName;function aE(){const r=window.location.hash.slice(1);if(!r)return null;if(r==="raw")return{type:"raw",name:"raw"};if(r==="map")return{type:"map",name:"map"};const a=r.indexOf("/");if(a===-1)return null;const o=r.slice(0,a),l=decodeURIComponent(r.slice(a+1));return(o==="channel"||o==="contact")&&l?{type:o,name:l}:null}function lE(r){if(!r)return"";if(r.type==="raw")return"#raw";if(r.type==="map")return"#map";const a=r.type==="channel"&&r.name.startsWith("#")?r.name.slice(1):r.name;return`#${r.type}/${encodeURIComponent(a)}`}function uE(r){const a=lE(r);a!==window.location.hash&&window.history.replaceState(null,"",a||window.location.pathname)}const bA=500;function cE(){const r=F.useRef(null),a=F.useRef(null),o=F.useRef(new Set),[l,f]=F.useState(null),[d,m]=F.useState(null),[h,x]=F.useState(null),[p,y]=F.useState([]),[v,w]=F.useState([]),[P,R]=F.useState([]),[C,E]=F.useState(null),[T,B]=F.useState(!1),[k,N]=F.useState(!1),[I,z]=F.useState(!1),[j,H]=F.useState(0),[te,Z]=F.useState(!1),[V,ne]=F.useState(!1),[X,ie]=F.useState(Fc),de=F.useRef(null),ae=F.useRef(null);F.useEffect(()=>{ae.current=(d==null?void 0:d.name)??null},[d==null?void 0:d.name]);const pe=F.useCallback(se=>{const me=ae.current;if(!me)return!1;const Be=me.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`@\\[${Be}\\]`,"i").test(se)},[]),{messages:G,messagesLoading:J,loadingOlder:q,hasOlderMessages:D,setMessages:U,fetchMessages:Q,fetchOlderMessages:$,addMessageIfNew:he,updateMessageAck:fe}=gy(C),{unreadCounts:ke,mentions:ge,lastMessageTimes:Ze,incrementUnread:$e,markAllRead:wt,trackNewMessage:ft}=Vv(v,p,C,d==null?void 0:d.name),{repeaterLoggedIn:Se,activeContactIsRepeater:Ue,handleTelemetryRequest:at,handleRepeaterCommand:Dt}=zv(C,p,U),xt=F.useMemo(()=>({onHealth:se=>{const me=de.current;de.current=se,f(se),me!==null&&me.radio_connected!==se.radio_connected&&(se.radio_connected?kt.success("Radio connected",{description:se.serial_port?`Connected to ${se.serial_port}`:void 0}):kt.error("Radio disconnected",{description:"Check radio connection and power"}))},onError:se=>{kt.error(se.message,{description:se.details})},onContacts:se=>y(se),onChannels:se=>w(se),onMessage:se=>{const me=a.current,Be=me?se.type==="CHAN"&&me.type==="channel"?se.conversation_key===me.id:se.type==="PRIV"&&me.type==="contact"?se.conversation_key&&kA(me.id,se.conversation_key):!1:!1;if(Be&&he(se),ft(se),!se.outgoing&&!Be){const je=Iu(se);if(o.current.has(je))return;if(o.current.add(je),o.current.size>1e3){const Kt=Array.from(o.current);o.current=new Set(Kt.slice(-500))}let We=null;if(se.type==="CHAN"&&se.conversation_key?We=Dr("channel",se.conversation_key):se.type==="PRIV"&&se.conversation_key&&(We=Dr("contact",se.conversation_key)),We){const Kt=pe(se.text);$e(We,Kt)}}},onContact:se=>{y(me=>{const Be=me.findIndex(je=>je.public_key===se.public_key);if(Be>=0){const je=[...me],We=me[Be];return je[Be]={...We,...se,name:se.name??We.name,last_path:se.last_path??We.last_path,lat:se.lat??We.lat,lon:se.lon??We.lon},je}return[...me,se]})},onRawPacket:se=>{R(me=>{if(me.some(je=>je.id===se.id))return me;const Be=[...me,se];return Be.length>bA?Be.slice(-bA):Be})},onMessageAcked:(se,me)=>{fe(se,me)}}),[he,ft,$e,fe,pe]);Lv(xt);const ot=F.useCallback(async()=>{try{const se=await ct.getRadioConfig();m(se)}catch(se){console.error("Failed to fetch config:",se)}},[]),Ke=F.useCallback(async()=>{try{const se=await ct.getSettings();x(se)}catch(se){console.error("Failed to fetch app settings:",se)}},[]),Xe=F.useCallback(async()=>{try{const se=await ct.getUndecryptedPacketCount();H(se.count)}catch(se){console.error("Failed to fetch undecrypted count:",se)}},[]);F.useEffect(()=>{ot(),Ke(),Xe()},[ot,Ke,Xe]);const xe=F.useCallback(()=>{const se=aE();if(!se)return null;if(se.type==="raw")return{type:"raw",id:"raw",name:"Raw Packet Feed"};if(se.type==="channel"){const me=v.find(Be=>Be.name===se.name||Be.name===`#${se.name}`);if(me)return{type:"channel",id:me.key,name:me.name}}if(se.type==="contact"){const me=p.find(Be=>bi(Be.name,Be.public_key)===se.name);if(me)return{type:"contact",id:me.public_key,name:bi(me.name,me.public_key)}}return null},[v,p]),Te=F.useRef(!1);F.useEffect(()=>{if(Te.current||C||v.length===0&&p.length===0)return;const se=xe();if(se){E(se),Te.current=!0;return}const me=v.find(Be=>Be.name==="Public");me&&(E({type:"channel",id:me.key,name:me.name}),Te.current=!0)},[v,p,C,xe]),F.useEffect(()=>{a.current=C,C&&uE(C)},[C]);const pt=F.useCallback(async se=>{C&&(C.type==="channel"?await ct.sendChannelMessage(C.id,se):await ct.sendDirectMessage(C.id,se),await Q())},[C,Q]),Ut=F.useCallback(async se=>{await ct.updateRadioConfig(se),await ot()},[ot]),en=F.useCallback(async se=>{await ct.updateSettings(se),await Ke()},[Ke]),Ot=F.useCallback(async se=>{await ct.setPrivateKey(se),await ot()},[ot]),tn=F.useCallback(async()=>{await ct.rebootRadio(),f(me=>me&&{...me,radio_connected:!1}),(async()=>{for(let me=0;me<30;me++){await new Promise(Be=>setTimeout(Be,1e3));try{const Be=await ct.getHealth();if(f(Be),Be.radio_connected){ot();return}}catch{}}})()},[ot]),pn=F.useCallback(async()=>{try{await ct.sendAdvertisement(!0),kt.success("Advertisement sent")}catch(se){console.error("Failed to send advertisement:",se),kt.error("Failed to send advertisement",{description:se instanceof Error?se.message:"Check radio connection"})}},[]),Bn=F.useCallback(se=>{var me;(me=r.current)==null||me.appendText(`@[${se}] `)},[]),Zt=F.useCallback(se=>{E(se),z(!1)},[]),Bt=F.useCallback((se,me)=>{ie(Iy(se,me))},[]),Wt=F.useCallback(async se=>{if(confirm("Delete this channel? Message history will be preserved."))try{await ct.deleteChannel(se),w(me=>me.filter(Be=>Be.key!==se)),E(null),kt.success("Channel deleted")}catch(me){console.error("Failed to delete channel:",me),kt.error("Failed to delete channel",{description:me instanceof Error?me.message:void 0})}},[]),Wn=F.useCallback(async se=>{if(confirm("Delete this contact? Message history will be preserved."))try{await ct.deleteContact(se),y(me=>me.filter(Be=>Be.public_key!==se)),E(null),kt.success("Contact deleted")}catch(me){console.error("Failed to delete contact:",me),kt.error("Failed to delete contact",{description:me instanceof Error?me.message:void 0})}},[]),vn=F.useCallback(async(se,me,Be)=>{const je={public_key:me,name:se,type:0,flags:0,last_path:null,last_path_len:-1,last_advert:null,lat:null,lon:null,last_seen:null,on_radio:!1,last_contacted:null,last_read_at:null};y(We=>[...We,je]),E({type:"contact",id:me,name:bi(se,me)}),Be&&console.log("Contact historical decryption not yet supported")},[]),Ae=F.useCallback(async(se,me,Be)=>{const je=await ct.createChannel(se,me),We=await ct.getChannels();w(We),E({type:"channel",id:je.key,name:se}),Be&&(await ct.decryptHistoricalPackets({key_type:"channel",channel_key:je.key}),Xe())},[Xe]),be=F.useCallback(async(se,me)=>{const Be=se.startsWith("#")?se:`#${se}`,je=await ct.createChannel(Be),We=await ct.getChannels();w(We),E({type:"channel",id:je.key,name:Be}),me&&(await ct.decryptHistoricalPackets({key_type:"channel",channel_name:Be}),Xe())},[Xe]),De=S.jsx(I_,{contacts:p,channels:v,activeConversation:C,onSelectConversation:Zt,onNewMessage:()=>{B(!0),z(!1)},lastMessageTimes:Ze,unreadCounts:ke,mentions:ge,showCracker:te,crackerRunning:V,onToggleCracker:()=>Z(se=>!se),onMarkAllRead:wt,favorites:X});return S.jsxs("div",{className:"flex flex-col h-dvh",children:[S.jsx(By,{health:l,config:d,onSettingsClick:()=>N(!0),onMenuClick:()=>z(!0)}),S.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[S.jsx("div",{className:"hidden md:block",children:De}),S.jsx(rE,{open:I,onOpenChange:z,children:S.jsxs(zx,{side:"left",className:"w-[280px] p-0 flex flex-col",hideCloseButton:!0,children:[S.jsx(jx,{className:"sr-only",children:S.jsx(Hx,{children:"Navigation"})}),S.jsx("div",{className:"flex-1 overflow-hidden",children:De})]})}),S.jsx("div",{className:"flex-1 flex flex-col bg-background min-w-0",children:C?C.type==="map"?S.jsxs(S.Fragment,{children:[S.jsx("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg",children:"Node Map"}),S.jsx("div",{className:"flex-1 overflow-hidden",children:S.jsx(W2,{contacts:p})})]}):C.type==="raw"?S.jsxs(S.Fragment,{children:[S.jsx("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg",children:"Raw Packet Feed"}),S.jsx("div",{className:"flex-1 overflow-hidden",children:S.jsx(v2,{packets:P})})]}):S.jsxs(S.Fragment,{children:[S.jsxs("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg gap-2",children:[S.jsxs("span",{className:"flex flex-wrap items-baseline gap-x-2 min-w-0 flex-1",children:[S.jsxs("span",{className:"flex-shrink-0",children:[C.type==="channel"&&!C.name.startsWith("#")?"#":"",C.name]}),S.jsx("span",{className:"font-normal text-sm text-muted-foreground font-mono truncate",children:C.id}),C.type==="contact"&&(()=>{const se=p.find(Be=>Be.public_key===C.id);if(!se)return null;const me=[];return se.last_seen&&me.push(`Last heard: ${il(se.last_seen)}`),se.last_path_len===-1?me.push("flood"):se.last_path_len===0?me.push("direct"):se.last_path_len>0&&me.push(`${se.last_path_len} hop${se.last_path_len>1?"s":""}`),me.length>0?S.jsxs("span",{className:"font-normal text-sm text-muted-foreground flex-shrink-0",children:["(",me.join(", "),")"]}):null})()]}),S.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[(C.type==="channel"||C.type==="contact")&&S.jsx("button",{className:"p-1.5 rounded hover:bg-accent text-xl leading-none",onClick:()=>Bt(C.type,C.id),title:js(X,C.type,C.id)?"Remove from favorites":"Add to favorites",children:js(X,C.type,C.id)?S.jsx("span",{className:"text-yellow-500",children:"★"}):S.jsx("span",{className:"text-muted-foreground",children:"☆"})}),!(C.type==="channel"&&C.name==="Public")&&S.jsx("button",{className:"p-1.5 rounded hover:bg-destructive/20 text-destructive text-xl leading-none",onClick:()=>{C.type==="channel"?Wt(C.id):Wn(C.id)},title:"Delete",children:"🗑"})]})]}),S.jsx(z_,{messages:G,contacts:p,loading:J,loadingOlder:q,hasOlderMessages:D,onSenderClick:C.type==="channel"?Bn:void 0,onLoadOlder:$,radioName:d==null?void 0:d.name}),S.jsx(Z_,{ref:r,onSend:Ue?Se?Dt:at:pt,disabled:!(l!=null&&l.radio_connected),isRepeaterMode:Ue&&!Se,conversationType:C.type,senderName:d==null?void 0:d.name,placeholder:l!=null&&l.radio_connected?Ue?Se?"Send CLI command (requires admin login)...":`Enter password for ${C.name} (or . for none)...`:`Message ${C.name}...`:"Radio not connected"})]}):S.jsx("div",{className:"flex-1 flex items-center justify-center text-muted-foreground",children:"Select a conversation or start a new one"})})]}),S.jsx("div",{className:rt("border-t border-border bg-background transition-all duration-200 overflow-hidden",te?"h-[275px]":"h-0"),children:S.jsx(nE,{packets:P,channels:v,visible:te,onChannelCreate:async(se,me)=>{const Be=await ct.createChannel(se,me),je=await ct.getChannels();w(je),await ct.decryptHistoricalPackets({key_type:"channel",channel_key:Be.key}),Xe()},onRunningChange:ne})}),S.jsx(a2,{open:T,contacts:p,undecryptedCount:j,onClose:()=>B(!1),onSelectConversation:se=>{E(se),B(!1)},onCreateContact:vn,onCreateChannel:Ae,onCreateHashtagChannel:be}),S.jsx(m2,{open:k,config:d,health:l,appSettings:h,onClose:()=>N(!1),onSave:Ut,onSaveAppSettings:en,onSetPrivateKey:Ot,onReboot:tn,onAdvertise:pn,onHealthRefresh:async()=>{const se=await ct.getHealth();f(se)}}),S.jsx(Ay,{position:"top-right"})]})}Fv.createRoot(document.getElementById("root")).render(S.jsx(F.StrictMode,{children:S.jsx(cE,{})})); +//# sourceMappingURL=index-CGSJJsxM.js.map diff --git a/frontend/dist/assets/index-CGSJJsxM.js.map b/frontend/dist/assets/index-CGSJJsxM.js.map new file mode 100644 index 0000000..a81242b --- /dev/null +++ b/frontend/dist/assets/index-CGSJJsxM.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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ACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UAAU,EAClD,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UAAU,EAClD,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,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","names":["l","n","p","q","r","t","u","v","w","x","z","A","a","B","C","D","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","X","react_production_min","reactModule","require$$0","reactJsxRuntime_production_min","jsxRuntimeModule","exports","y","E","schedulerModule","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","fd","gd","hd","id","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","sl","tl","ul","vl","reactDom_production_min","checkDCE","err","reactDomModule","client","API_BASE","UNREAD_FETCH_LIMIT","fetchJson","url","options","res","error","api","config","privateKey","flood","limit","offset","publicKey","password","command","key","name","params","searchParams","query","conversations","limitPerConversation","destination","text","channelKey","pruneUndecryptedDays","settings","useWebSocket","wsRef","useRef","reconnectTimeoutRef","connected","setConnected","useState","connect","useCallback","protocol","wsUrl","ws","event","msg","_a","_b","_c","_d","_e","_f","ackData","_g","_h","useEffect","pingInterval","CONTACT_TYPE_REPEATER","formatDuration","seconds","days","hours","mins","formatTelemetry","telemetry","formatNeighbors","neighbors","sorted","lines","snr","formatAcl","acl","entry","createLocalMessage","conversationKey","outgoing","idOffset","now","useRepeaterMode","activeConversation","contacts","setMessages","repeaterLoggedIn","setRepeaterLoggedIn","activeContactIsRepeater","useMemo","contact","handleTelemetryRequest","telemetryMessage","neighborsMessage","aclMessage","prev","errorMessage","handleRepeaterCommand","commandMessage","response","responseMessage","PUBKEY_PREFIX_LENGTH","getPubkeyPrefix","pubkeysMatch","getContactDisplayName","pubkey","LAST_MESSAGE_KEY","loadTimes","stored","saveTimes","times","getLastMessageTimes","setLastMessageTime","stateKey","timestamp","getStateKey","type","messageContainsMention","escaped","useUnreadCounts","channels","myName","unreadCounts","setUnreadCounts","mentions","setMentions","lastMessageTimes","setLastMessageTimes","myNameRef","fetchedChannels","fetchedContacts","newChannels","newContacts","bulkMessages","newUnreadCounts","newMentions","newLastMessageTimes","channel","msgs","lastRead","unreadMsgs","latestTime","next","incrementUnread","hasMention","markAllRead","markConversationRead","conv","trackNewMessage","updated","__insertCSS","code","head","style","getAsset","SuccessIcon","InfoIcon","WarningIcon","ErrorIcon","bars","Loader","visible","className","React","_","i","CloseIcon","useIsDocumentHidden","isDocumentHidden","setIsDocumentHidden","callback","toastsCounter","Observer","subscriber","index","data","_data_id","message","rest","alreadyExists","toast","dismissible","promise","shouldDismiss","result","originalPromise","isHttpResponse","promiseData","description","toastSettings","unwrap","resolve","reject","jsx","ToastState","toastFunction","basicToast","getHistory","getToasts","isAction","action","VISIBLE_TOASTS_AMOUNT","VIEWPORT_OFFSET","MOBILE_VIEWPORT_OFFSET","TOAST_LIFETIME","TOAST_WIDTH","GAP","SWIPE_THRESHOLD","TIME_BEFORE_UNMOUNT","cn","classes","getDefaultSwipeDirections","position","directions","Toast","props","_toast_classNames","_toast_classNames1","_toast_classNames2","_toast_classNames3","_toast_classNames4","_toast_classNames5","_toast_classNames6","_toast_classNames7","_toast_classNames8","ToasterInvert","unstyled","interacting","setHeights","visibleToasts","heights","toasts","expanded","removeToast","defaultRichColors","closeButtonFromToaster","cancelButtonStyle","actionButtonStyle","descriptionClassName","durationFromToaster","gap","expandByDefault","classNames","icons","closeButtonAriaLabel","swipeDirection","setSwipeDirection","swipeOutDirection","setSwipeOutDirection","mounted","setMounted","removed","setRemoved","swiping","setSwiping","swipeOut","setSwipeOut","isSwiped","setIsSwiped","offsetBeforeRemove","setOffsetBeforeRemove","initialHeight","setInitialHeight","remainingTime","dragStartTime","toastRef","isFront","isVisible","toastType","toastClassname","toastDescriptionClassname","heightIndex","height","closeButton","_toast_closeButton","duration","closeTimerStartTimeRef","lastCloseTimerStartTimeRef","pointerStartRef","toastsHeightBefore","curr","reducerIndex","invert","disabled","toastNode","originalHeight","newHeight","deleteToast","timeoutId","elapsedTime","getLoadingIcon","icon","_toast_richColors","_icons_close","_toastRef_current","_toastRef_current1","_dragStartTime_current","swipeAmountX","swipeAmountY","timeTaken","swipeAmount","velocity","_toastRef_current2","_toastRef_current3","_window_getSelection","yDelta","xDelta","_props_swipeDirections","swipeDirections","getDampening","delta","dampenedDelta","getDocumentDirection","dirAttribute","assignOffset","defaultOffset","mobileOffset","styles","isMobile","prefix","defaultValue","assignAll","Toaster","ref","hotkey","expand","theme","richColors","toastOptions","dir","containerAriaLabel","setToasts","filteredToasts","possiblePositions","setExpanded","setInteracting","actualTheme","setActualTheme","listRef","hotkeyLabel","lastFocusedElementRef","isFocusWithinRef","toastToRemove","_toasts_find","ReactDOM","indexOfExistingToast","darkMediaQuery","matches","handleKeyDown","_listRef_current","_listRef_current1","_heights_","_toastOptions_duration","_toastOptions_closeButton","Sonner","MESSAGE_PAGE_SIZE","getMessageContentKey","useConversationMessages","messages","messagesLoading","setMessagesLoading","loadingOlder","setLoadingOlder","hasOlderMessages","setHasOlderMessages","seenMessageContent","fetchMessages","showLoading","fetchOlderMessages","addMessageIfNew","contentKey","entries","updateMessageAck","messageId","ackCount","idx","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","Check","Menu","StatusBar","health","onSettingsClick","onMenuClick","reconnecting","setReconnecting","handleReconnect","jsxs","REPEATER_AVATAR","hashString","str","hash","char","emojiRegex","getAvatarText","emojiMatch","letters","spaceIndex","firstLetter","afterSpace","getAvatarColor","hue","saturation","lightness","background","textColor","getContactAvatar","contactType","colors","ContactAvatar","avatar","FAVORITES_KEY","loadFavorites","saveFavorites","favorites","addFavorite","removeFavorite","isFavorite","toggleFavorite","o","clsx","concatArrays","array1","array2","combinedArray","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","classRest","validatorsLength","validatorObj","content","colonIndex","property","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","value","path","current","parts","part","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","toValue","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","inputs","Input","React.forwardRef","setRef","composeRefs","refs","node","hasCleanup","cleanups","cleanup","useComposedRefs","React.useCallback","REACT_LAZY_TYPE","use","isPromiseLike","isLazyComponent","element","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","React.Children","slottable","isSlottable","newElement","newChildren","child","React.isValidElement","React.cloneElement","Slot","childrenRef","getElementRef","props2","mergeProps","React.Fragment","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","getter","mayWarn","falsyToString","cx","cva","base","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","asChild","Comp","formatUnreadCount","count","loadSortOrder","saveSortOrder","order","Sidebar","onSelectConversation","onNewMessage","showCracker","crackerRunning","onToggleCracker","onMarkAllRead","sortOrder","setSortOrder","searchQuery","setSearchQuery","handleSortToggle","newOrder","handleSelectConversation","conversation","isActive","getUnreadCount","getLastMessageTime","uniqueChannels","uniqueContacts","sortedChannels","timeA","timeB","sortedContacts","aIsRepeater","bIsRepeater","filteredChannels","filteredContacts","favoriteChannels","favoriteContacts","nonFavoriteChannels","nonFavoriteContacts","favoriteItems","nameA","nameB","Fragment","item","unreadCount","isMention","parseSenderFromText","potentialSender","formatTime","date","isToday","time","renderTextWithMentions","radioName","mentionPattern","lastIndex","keyIndex","mentionedName","isOwnMention","MessageList","loading","onSenderClick","onLoadOlder","prevMessagesLengthRef","isInitialLoadRef","showScrollToBottom","setShowScrollToBottom","scrollStateRef","useLayoutEffect","list","messagesAdded","scrollHeightDiff","handleScroll","scrollTop","scrollHeight","clientHeight","distanceFromBottom","scrollToBottom","getContact","getContactByName","sortedMessages","getSenderKey","sender","isRepeater","displaySender","canClickSender","currentSenderKey","prevMsg","prevSenderKey","showAvatar","isFirstMessage","avatarName","avatarKey","senderContact","line","arr","DM_HARD_LIMIT","DM_WARNING_THRESHOLD","CHANNEL_HARD_LIMIT","CHANNEL_WARNING_THRESHOLD","CHANNEL_DANGER_BUFFER","MessageInput","onSend","placeholder","isRepeaterMode","conversationType","senderName","setText","sending","setSending","inputRef","useImperativeHandle","appendedText","limits","nameLen","hardLimit","limitState","warningMessage","remaining","handleSubmit","trimmed","canSubmit","showCharCounter","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","createContext2","rootComponentName","defaultContext","Context","React.createContext","Provider","context","React.useMemo","useContext2","consumerName","React.useContext","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","scope","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","useLayoutEffect2","React.useLayoutEffect","useReactId","useId","deterministicId","setId","React.useState","reactId","useInsertionEffect","useControllableState","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","React.useRef","React.useEffect","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","NODES","Primitive","primitive","Node","primitiveProps","dispatchDiscreteCustomEvent","target","ReactDOM.flushSync","useCallbackRef","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","handler","detail","discrete","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","updatedArray","items","PORTAL_NAME","Portal","containerProp","portalProps","useStateMachine","initialState","machine","React.useReducer","state","Presence","present","presence","usePresence","React2.Children","React2.cloneElement","React2.useState","stylesRef","React2.useRef","prevPresentRef","prevAnimationNameRef","send","React2.useEffect","currentAnimationName","getAnimationName","wasPresent","prevAnimationName","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","React2.useCallback","useFocusGuards","edgeGuards","createFocusGuard","__assign","s","__rest","__spreadArray","to","from","pack","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useIsomorphicLayoutEffect","currentValues","useMergeRefs","newValue","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","defaults","middleware","buffer","assigned","medium","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","SideCar","sideCar","Target","React.createElement","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","enabled","shards","noRelative","noIsolation","inert","allowPinchZoom","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","nonce","injectStyles","css","insertStyleTag","stylesheetSingleton","counter","stylesheet","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","left","top","right","getGapWidth","offsets","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","axis","isScrollable","elementCouldBeScrolled","getScrollVariables","getVScrollVariables","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","direction","endTarget","sourceDelta","noOverscroll","directionFactor","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","scroll_1","capacity","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","parent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","selection","anchorNode","isTouchingSelection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","targets","correctedTarget","applyAttributeToOthers","parentNode","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","DIALOG_NAME","createDialogContext","DialogProvider","useDialogContext","Dialog","__scopeDialog","openProp","defaultOpen","onOpenChange","modal","triggerRef","contentRef","open","setOpen","prevOpen","TRIGGER_NAME","DialogTrigger","triggerProps","composedTriggerRef","getState","PortalProvider","usePortalContext","DialogPortal","forceMount","PortalPrimitive","OVERLAY_NAME","DialogOverlay","portalContext","overlayProps","DialogOverlayImpl","CONTENT_NAME","DialogContent","contentProps","DialogContentModal","DialogContentNonModal","DialogContentImpl","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","createContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Root","Overlay","Content","Title","Description","Close","DialogPrimitive.Root","DialogPrimitive.Portal","DialogPrimitive.Overlay","DialogPrimitive.Content","DialogPrimitive.Close","DialogHeader","DialogFooter","DialogPrimitive.Title","DialogPrimitive.Description","createCollection","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","itemMap","COLLECTION_SLOT_NAME","CollectionSlotImpl","CollectionSlot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","DirectionContext","useDirection","localDir","globalDir","ENTRY_FOCUS","GROUP_NAME","Collection","createRovingFocusGroupContext","createRovingFocusGroupScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","currentTabStopId","setCurrentTabStopId","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","tabStopId","prevCount","isKeyboardFocus","entryFocusEvent","activeItem","currentItem","candidateNodes","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","Item","TABS_NAME","createTabsContext","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","__scopeTabs","valueProp","onValueChange","activationMode","tabsProps","TAB_LIST_NAME","TabsList","listProps","rovingFocusGroupScope","RovingFocusGroup.Root","TabsTrigger","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","isAutomaticActivation","TabsContent","isMountAnimationPreventedRef","rAF","baseId","Root2","List","Trigger","TabsPrimitive.Root","TabsPrimitive.List","TabsPrimitive.Trigger","TabsPrimitive.Content","NAME","Label","labelVariants","LabelPrimitive.Root","usePrevious","useSize","setSize","resizeObserver","width","borderSizeEntry","borderSize","CHECKBOX_NAME","createCheckboxContext","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checkedProp","defaultChecked","form","onCheckedChange","required","internal_do_not_use_render","checked","setChecked","control","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","isIndeterminate","CheckboxTrigger","onKeyDown","onClick","checkboxProps","initialCheckedStateRef","reset","prevChecked","Checkbox","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","indicatorProps","BUBBLE_INPUT_NAME","controlSize","input","inputProto","bubbles","defaultCheckedRef","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","NewMessageModal","undecryptedCount","onClose","onCreateContact","onCreateChannel","onCreateHashtagChannel","tab","setTab","setName","contactKey","setContactKey","roomKey","setRoomKey","tryHistorical","setTryHistorical","setError","setLoading","hashtagInputRef","handleCreate","channelName","validationError","validateHashtagName","handleCreateAndAddAnother","showHistoricalOption","isOpen","bytes","hex","DEFAULT_ORIENTATION","ORIENTATIONS","Separator","decorative","orientationProp","domProps","isValidOrientation","semanticProps","SeparatorPrimitive.Root","alertVariants","Alert","AlertTitle","AlertDescription","RADIO_PRESETS","SettingsModal","appSettings","onSave","onSaveAppSettings","onSetPrivateKey","onReboot","onAdvertise","onHealthRefresh","activeTab","setActiveTab","lat","setLat","lon","setLon","txPower","setTxPower","freq","setFreq","bw","setBw","setSf","cr","setCr","setPrivateKey","maxRadioContacts","setMaxRadioContacts","rebooting","setRebooting","advertising","setAdvertising","gettingLocation","setGettingLocation","retentionDays","setRetentionDays","cleaning","setCleaning","currentPreset","freqNum","bwNum","sfNum","crNum","preset","handlePresetChange","presetName","handleGetLocation","handleSaveRadioConfig","handleSaveIdentity","handleSaveSerial","newMaxRadioContacts","handleSetPrivateKey","handleReboot","handleAdvertise","handleCleanup","formatPayloadType","word","getDecryptedLabel","packet","info","formatSignalInfo","RawPacketList","packets","sortedPackets","useAttribution","map","attribution","attributionRef","updateCircle","layer","prevProps","CONTEXT_VERSION","createLeafletContext","extendContext","source","extra","LeafletContext","LeafletProvider","useLeafletContext","useContext","createContainerComponent","useElement","ContainerComponent","instance","createDivOverlayComponent","OverlayComponent","contentNode","createPortal","createLeafComponent","LeafComponent","useEventHandlers","eventHandlers","eventHandlersRef","withPane","pane","createDivOverlayHook","useLifecycle","elementRef","global","factory","this","version","extend","dest","j","src","create$2","proto","bind","fn","obj","slice","lastId","stamp","throttle","lock","wrapperFn","later","wrapNum","range","includeMax","max","min","falseFn","formatNum","num","precision","pow","trim","splitWords","setOptions","getParamString","existingUrl","uppercase","templateRe","template","isArray","indexOf","emptyImageUrl","getPrefixed","lastTime","timeoutDefer","timeToCall","requestFn","cancelFn","requestAnimFrame","immediate","cancelAnimFrame","Util","Class","NewClass","parentProto","checkDeprecatedMixinEvents","parentOptions","init","includes","Events","types","removeAll","_once","newListener","listeners","listener","propagate","_fn","Evented","Point","round","trunc","point","toPoint","Bounds","points","min2","max2","toBounds","bounds","xIntersects","yIntersects","xOverlaps","yOverlaps","bufferRatio","heightBuffer","widthBuffer","LatLngBounds","corner1","corner2","latlngs","sw","sw2","ne2","LatLng","toLatLng","toLatLngBounds","latIntersects","lngIntersects","latOverlaps","lngOverlaps","maxMargin","lng","alt","margin","other","Earth","sizeInMeters","latAccuracy","lngAccuracy","CRS","latlng","zoom","projectedPoint","scale","untransformedPoint","center","newCenter","latShift","lngShift","newSw","newNe","latlng1","latlng2","rad","lat1","lat2","sinDLat","sinDLon","earthRadius","SphericalMercator","sin","Transformation","toTransformation","EPSG3857","EPSG900913","svgCreate","pointsToPath","rings","closed","len2","Browser","ielt9","edge","webkit","userAgentContains","android","android23","webkitVer","androidStock","opera","chrome","gecko","safari","phantom","opera12","win","ie3d","webkit3d","gecko3d","any3d","mobile","mobileWebkit","mobileWebkit3d","msPointer","pointer","touchNative","mobileOpera","mobileGecko","retina","passiveEvents","supportsPassiveOption","opts","canvas$1","svg$1","inlineSvg","div","vml","shape","mac","linux","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","pEvent","handle","_onPointerStart","_handlePointer","_pointers","_pointerDocListener","addPointerListener","_addPointerDocListener","removePointerListener","_globalPointerDown","_globalPointerMove","_globalPointerUp","preventDefault","makeDblclick","newEvent","delay","addDoubleTapListener","simDblclick","getPropagationPath","removeDoubleTapListener","handlers","TRANSFORM","testProp","TRANSITION","TRANSITION_END","get","getStyle","create$1","tagName","remove","empty","toFront","toBack","hasClass","getClass","addClass","setClass","removeClass","setOpacity","_setOpacityIE","filterName","setTransform","pos","setPosition","getPosition","disableTextSelection","enableTextSelection","_userSelect","on","off","userSelectProperty","disableImageDrag","enableImageDrag","_outlineElement","_outlineStyle","preventOutline","restoreOutline","getSizedParentNode","getScale","rect","DomUtil","addOne","eventsKey","batchRemove","removeOne","filterFn","mouseSubst","originalHandler","isExternalTarget","stopPropagation","disableScrollPropagation","disableClickPropagation","stop","ev","getMousePosition","wheelPxFactor","getWheelDelta","related","DomEvent","PosAnimation","newPos","easeLinearity","elapsed","progress","Map","moved","viewHalf","containerPoint","centerOffset","paddingTL","paddingBR","paddingOffset","swPoint","nePoint","targetCenter","targetZoom","startZoom","w0","w1","u1","rho","rho2","s1","s2","t1","b1","sq","log","sinh","cosh","tanh","r0","easeOut","start","frame","oldZoom","pixelCenter","pixelPoint","pixelBounds","paddedBounds","paddedSize","oldSize","newSize","oldCenter","onResponse","onError","HandlerClass","inside","padding","nw","boundsSize","snap","scalex","scaley","topLeftPoint","toZoom","fromZoom","crs","layerPoint","panes","noMoveStart","zoomChanged","supressEvent","onOff","isHover","dragging","canvasTargets","synth","filtered","isMarker","pixelOrigin","topLeft","latLngBounds","centerPoint","viewBounds","newBounds","pxBounds","maxBounds","projectedMaxBounds","minOffset","maxOffset","dx","dy","proxy","transform","startAnim","noUpdate","createMap","Control","corner","corners","createCorner","vSide","hSide","Layers","layerA","layerB","baseLayers","overlays","acceptableHeight","collapsed","section","link","overlay","baseLayersPresent","overlaysPresent","baseLayersCount","radioHtml","radioFragment","holder","addedLayers","removedLayers","that","Zoom","zoomName","html","title","Scale","maxMeters","meters","maxFeet","maxMiles","miles","feet","ratio","pow10","ukrainianFlag","Attribution","attribs","prefixAndAttribs","Handler","Mixin","START","Draggable","dragStartTarget","sizedParent","mouseevent","noInertia","fireDragend","clipPolygon","clippedPoints","edges","_getBitCode","_getEdgeIntersection","polygonCenter","area","isFlat","centroidLatLng","areaBounds","centroid","latlngCenter","coords","latSum","lngSum","PolyUtil","simplify","tolerance","sqTolerance","_reducePoints","_simplifyDP","pointToSegmentDistance","_sqClosestPointOnSegment","closestPointOnSegment","ArrayConstructor","markers","_simplifyDPStep","newPoints","maxSqDist","sqDist","reducedPoints","_sqDist","_lastCode","clipSegment","useLastCode","codeA","codeB","codeOut","newCode","dot","_flat","polylineCenter","halfDist","segDist","dist","LineUtil","LonLat","Mercator","tmp","con","ts","phi","dphi","EPSG3395","EPSG4326","Simple","Layer","targetEl","events","method","minZoom","maxZoom","oldZoomSpan","LayerGroup","layerId","methodName","zIndex","layerGroup","FeatureGroup","featureGroup","oldIcon","img","sizeOption","anchor","IconDefault","strip","MarkerDrag","marker","speed","iconPos","origin","panBounds","movement","shadow","Marker","oldLatLng","classToAdd","addIcon","newShadow","addShadow","opt","draggable","opacity","iconOpts","Path","CircleMarker","radius","r2","circleMarker","Circle","legacyOptions","half","latR","bottom","lngR","circle","Polyline","minDistance","minPoint","closest","jLen","flat","projectedBounds","ring","segment","polyline","Polygon","clipped","polygon","GeoJSON","geojson","features","feature","geometryToLayer","asFeature","geometry","pointToLayer","_coordsToLatLng","coordsToLatLng","_pointToLayer","coordsToLatLngs","geoLayer","featureLayer","pointToLayerFn","levelsDeep","latLngToCoords","latLngsToCoords","getFeature","newGeometry","PointToGeoJSON","multi","holes","isGeometryCollection","jsons","json","geoJSON","geoJson","ImageOverlay","styleOpts","wasElementSupplied","image","errorUrl","imageOverlay","VideoOverlay","vid","sourceElements","sources","videoOverlay","video","SVGOverlay","svgOverlay","DivOverlay","OverlayClass","old","Popup","wrapper","maxHeight","scrolledClass","marginBottom","containerHeight","containerWidth","layerPos","containerPos","popup","Tooltip","subX","subY","tooltipPoint","tooltipWidth","tooltipHeight","tooltip","DivIcon","bgPos","divIcon","GridLayer","tileZoom","compare","edgeZIndex","nextFrame","willPrune","tile","fade","level","x2","y2","z2","coords2","animating","noPrune","tileZoomChanged","translate","tileSize","mapZoom","halfSize","tileRange","tileCenter","queue","noPruneRange","fragment","tileBounds","nwPoint","sePoint","bp","tilePos","newCoords","gridLayer","TileLayer","noRedraw","done","invertedY","zoomReverse","zoomOffset","tilePoint","tileLayer","TileLayerWMS","wmsParams","realRetina","projectionKey","bbox","tileLayerWMS","Renderer","currentCenterPoint","topLeftOffset","Canvas","dashArray","dashValue","ctx","clickedLayer","candidateHoveredLayer","canvas","vmlCreate","vmlMixin","stroke","fill","create","SVG","arc","svg","renderer","Rectangle","rectangle","BoxZoom","DoubleClickZoom","Drag","pxCenter","pxWorldCenter","threshold","worldWidth","halfWidth","newX1","newX2","newX","ease","speedVector","limitedSpeed","limitedSpeedVector","decelerationDuration","Keyboard","body","docEl","panDelta","keys","codes","zoomDelta","newLatLng","ScrollWheelZoom","debounce","d2","d3","d4","tapHoldDelay","TapHold","cancelClickPrevent","simulatedEvent","TouchZoom","moveFn","oldL","createElementObject","createElementHook","updateElement","propsRef","useLayerLifecycle","createLayerHook","usePathOptions","optionsRef","createPathHook","createOverlayComponent","useOverlay","createPathComponent","usePath","createTileLayerComponent","useLayer","updateGridLayer","useMap","LeafletCircleMarker","_extends","MapContainerComponent","boundsOptions","whenReady","setContext","mapRef","LeafletMap","contents","MapContainer","LeafletPopup","onPopupOpen","onPopupClose","LeafletTileLayer","getMarkerColor","lastSeen","age","hour","day","MapBoundsHandler","hasInitialized","setHasInitialized","fitToContacts","MapView","mappableContacts","sevenDaysAgo","displayName","enums","RouteType","PayloadType","ControlSubType","PayloadVersion","DeviceRole","AdvertFlags","RequestType","byteToHex","bytesToHex","numberToHex","hexToBytes","byte","padLength","cleanHex","enumNames","getRouteTypeName","getPayloadTypeName","getPayloadVersionName","getDeviceRoleName","getRequestTypeName","getControlSubTypeName","enums_1","routeType","payloadType","role","requestType","subType","__viteBrowserExternal","root","module","CryptoJS","Math","undefined","crypto","require","cryptoSecureRandomInt","subtype","C_lib","Base","overrides","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","cfg","messageUpdate","hasher","C_algo","X32WordArray","C_x64","high","low","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","superInit","subInit","typedArray","typedArrayByteLength","utf16Chars","codePoint","utf16Str","utf16StrLength","swapEndian","base64Chars","byte1","byte2","byte3","triplet","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","bits1","bits2","bitsCombined","urlSafe","Hasher","MD5","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","SHA1","isPrime","sqrtN","factor","getFractionalBits","nPrime","SHA256","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","sigma1","t2","undef","SHA224","X64Word","X64WordArray","X64Word_create","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","Wil","Wih","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","t1l","t1h","t2l","t2h","require$$2","SHA384","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","nBlockSizeLanes","M2i","M2i1","lane","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","hr","zl","zr","sr","br","dr","er","f1","f2","f3","f4","f5","rotl","hasherBlockSize","hasherBlockSizeBytes","oKey","iKey","oKeyWords","iKeyWords","innerHash","hmac","HMAC","PBKDF2","salt","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","keySize","iterations","block","blockWords","blockWordsLength","intermediate","intermediateWords","EvpKDF","Base64","Cipher","xformMode","dataUpdate","finalProcessedData","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","finalProcessedBlocks","C_mode","BlockCipherMode","iv","CBC","xorBlock","thisBlock","C_pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","modeCreator","mode","CipherParams","cipherParams","formatter","C_format","OpenSSLFormatter","openSSLStr","ciphertextWords","encryptor","cipherCfg","plaintext","format","C_kdf","OpenSSLKdf","ivSize","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","Encryptor","CTRGladman","incWord","b2","b3","incCounter","OFB","ECB","lastBytePos","require$$3","require$$4","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","sx","x4","x8","RCON","AES","keyWords","nRounds","ksRows","keySchedule","ksRow","invKeySchedule","invKsRow","s0","s3","t0","t3","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","nSubKey","subKey","bitShift","invSubKeys","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","StreamCipher","RC4","keySigBytes","keyByteIndex","keyByte","generateKeystreamWord","keystreamWord","RC4Drop","C_","Rabbit","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","RabbitLegacy","ORIG_P","ORIG_S","BLOWFISH_CTX","BlowFish_Encrypt","Xl","Xr","temp","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","Data1","Data2","Blowfish","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","channelCrypto","crypto_js_1","hex_1","ChannelCrypto","cipherMac","channelKey16","macBytes","channelSecret","calculatedMac","calculatedMacFirst2","decrypted","decryptedBytes","flagsAndAttempt","messageBytes","messageText","nullIndex","secretKeyHex","keyManager","channel_crypto_1","MeshCoreKeyStore","initialKeys","pubKey","privKey","normalizedPubKey","channelHash","normalizedHash","secretKeys","secretKey","ed25519_CURVE","Gx","Gy","L2","isBig","isStr","isBytes","abytes","u8n","u8fr","buf","padh","pad","_ch","n1","n2","toU8","subtle","concatBytes","arrs","sum","randomBytes","big","arange","modN","callHash","etc","apoint","B256","_Point","ex","ey","ez","et","__publicField","zip215","normed","lastByte","bytesToNumLE","isValid","uvRatio","isXOdd","isLastByteOdd","X2","Y2","Z2","Z4","aX2","XY","ZT","X1","Y1","Z1","X1Z2","X2Z1","Y1Z2","Y2Z1","x1y1","X3","Y3","T3","Z3","T1","T2","safe","wNAF","iz","numTo32bLE","pow2","power","pow_2_252_3","b4","b5","b10","b20","b40","b80","b160","b240","b250","RM1","v3","v7","vx2","root1","root2","useRoot1","useRoot2","noRoot","modL_LE","sha512a","sha512s","hash2extK","hashed","scalar","pointBytes","getExtendedPublicKeyAsync","priv","getExtendedPublicKey","getPublicKeyAsync","getPublicKey","hashFinishA","hashFinishS","_sign","rBytes","signAsync","sign","veriOpts","_verify","sig","pub","SB","hashable","verifyAsync","verify","utils","scalarBits","pwindows","pwindowSize","precompute","Gpows","ctneg","cnd","comp","pow_2_w","maxNum","shiftBy","wbits","offF","offP","isEven","isNeg","OrlpEd25519","_scriptName","moduleArg","moduleRtn","Module","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","scriptDirectory","locateFile","readAsync","readBinary","fs","filename","isFileURI","ret","binary","xhr","wasmBinary","ABORT","readyPromiseResolve","readyPromiseReject","wasmMemory","HEAP8","HEAPU8","runtimeInitialized","updateMemoryViews","preRun","addOnPreRun","callRuntimeCallbacks","onPreRuns","initRuntime","wasmExports","postRun","addOnPostRun","onPostRuns","runDependencies","dependenciesFulfilled","addRunDependency","removeRunDependency","abort","what","wasmBinaryFile","findWasmBinary","getBinarySync","file","getWasmBinary","binaryFile","instantiateArrayBuffer","imports","reason","instantiateAsync","instantiationResult","getWasmImports","wasmImports","createWasm","receiveInstance","assignWasmExports","receiveInstantiationResult","stackRestore","val","__emscripten_stack_restore","stackSave","_emscripten_stack_get_current","getCFunc","ident","writeArrayToMemory","lengthBytesUTF8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","endIdx","stringToUTF8","outPtr","stackAlloc","sz","__emscripten_stack_alloc","stringToUTF8OnStack","UTF8Decoder","UTF8ArrayToString","heapOrArray","maxBytesToRead","endPtr","u0","u2","UTF8ToString","ptr","ccall","returnType","argTypes","toC","convertReturnValue","cArgs","converter","onDone","cwrap","numericArgs","numericRet","run","doRun","preInit","orlpEd25519Wasm","derivePublicKey","validateKeyPair","getWasmInstance","privateKeyHex","wasmModule","privateKeyBytes","privateKeyPtr","publicKeyPtr","publicKeyBytes","expectedPublicKeyHex","expectedPublicKeyBytes","messageHex","publicKeyHex","messagePtr","signaturePtr","signatureBytes","signatureHex","__createBinding","k2","desc","__setModuleDefault","__importStar","ownKeys","ed25519Verifier","ed25519","orlp_ed25519_wasm_1","sha512Hash","hashBuffer","createHash","sha512HashSync","hashBytes","Ed25519SignatureVerifier","appDataHex","signature","appData","timestampBytes","advert","enum_names_1","ed25519_verifier_1","AdvertPayloadDecoder","payload","segments","segmentOffset","currentOffset","timestampDate","flags","binaryStr","deviceRole","flagDesc","nameBytes","rawName","appDataBytes","signatureValid","trace","TracePayloadDecoder","pathData","traceTagRaw","traceTag","authCode","pathHashes","pathHashesStart","pathHashesDisplay","snrValues","hexByte","byteValue","groupText","GroupTextPayloadDecoder","channelKeys","decryptionResult","request","RequestPayloadDecoder","destinationHash","sourceHash","ResponsePayloadDecoder","anonRequest","AnonRequestPayloadDecoder","senderPublicKey","ack","AckPayloadDecoder","checksum","PathPayloadDecoder","pathLength","extraType","extraData","textMessage","TextMessagePayloadDecoder","ControlPayloadDecoder","rawFlags","prefixOnly","typeFilter","typeFilterNames","since","sinceDate","nodeType","nodeTypeName","snrRaw","snrSigned","publicKeyLength","keyType","packetDecoder","key_manager_1","advert_1","trace_1","group_text_1","request_1","response_1","anon_request_1","ack_1","path_1","text_message_1","control_1","MeshCorePacketDecoder","hexData","includeStructure","errorPacket","errorStructure","header","payloadVersion","transportCodes","code1","code2","transportCode","pathLengthDescription","pathBytes","snrDb","pathDescription","payloadBytes","payloadHex","decodedPayload","payloadSegments","messageHash","structure","advertPayload","verifiedAdvert","errors","pathLen","constantHeader","payloadData","hashInput","authToken","createAuthToken","verifyAuthToken","parseAuthToken","decodeAuthTokenPayload","base64urlEncode","base64","base64urlDecode","headerJson","payloadJson","headerBytes","headerEncoded","payloadEncoded","signingInput","signingInputBytes","signingInputHex","token","packet_decoder_1","packet_decoder_2","auth_token_1","EnumUtils","HexUtils","AuthTokenUtils","CHARS","CHARS_LEN","CHARS_WITH_DASH","PUBLIC_ROOM_NAME","PUBLIC_KEY","DEFAULT_VALID_SECONDS","roomNameToIndex","length","multiplier","charIdx","isFirst","isLast","charCount","indexToRoomName","prevWasDash","isDash","deriveKeyFromRoomName","roomName","getChannelHash","keyHex","verifyMac","paddedKey","HmacSHA256","countNamesForLength","endsNonDash","endsDash","newEndsNonDash","newEndsDash","middleCount","isTimestampValid","validSeconds","currentTime","isValidUtf8","GpuBruteForce","adapter","shaderModule","pipelineLayout","targetChannelHash","nameLength","batchOffset","batchSize","ciphertextHex","targetMacHex","readBufferIdx","matchCountReadBuffer","matchIndicesReadBuffer","ciphertextLenBits","targetMac","ciphertextBytes","paddedLen","padded","macByte0","macByte1","requiredCiphertextSize","paramsData","commandEncoder","passEncoder","matchCount","indices","isWebGpuSupported","CpuBruteForce","targetHashHex","verifyMacEnabled","nameIdx","VALID_CHARS","NO_DASH_AT_ENDS","NO_CONSECUTIVE_DASHES","isValidRoomName","GroupTextCracker","allWords","packetHex","onProgress","maxLength","startingLength","useDictionary","startFromType","normalizedPacketHex","decoded","targetHashByte","startTime","totalChecked","lastProgressUpdate","startFromLength","startFromOffset","dictionaryStartIndex","skipDictionary","normalizedStartFrom","wordIndex","totalCandidates","reportProgress","phase","currentLength","currentPosition","rate","eta","verifyMacAndFilters","publicChannelHash","wordChannelHash","INITIAL_BATCH_SIZE","TARGET_DISPATCH_MS","currentBatchSize","batchSizeTuned","totalForLength","dispatchStart","dispatchTime","scaleFactor","optimalBatchSize","rounded","matchIdx","currentPos","media","webm","mp4","oldIOS","nativeWakeLock","NoSleep","handleVisibilityChange","dataURI","wakeLock","extractPayload","CrackerPanel","onChannelCreate","onRunningChange","isRunning","setIsRunning","setMaxLength","retryFailedAtNextLength","setRetryFailedAtNextLength","decryptHistorical","setDecryptHistorical","turboMode","setTurboMode","setProgress","setQueue","crackedRooms","setCrackedRooms","wordlistLoaded","setWordlistLoaded","gpuAvailable","setGpuAvailable","undecryptedPacketCount","setUndecryptedPacketCount","skippedDuplicates","setSkippedDuplicates","crackerRef","noSleepRef","isRunningRef","abortedRef","isProcessingRef","queueRef","retryFailedRef","maxLengthRef","decryptHistoricalRef","turboModeRef","undecryptedIdsRef","seenPayloadsRef","cracker","noSleep","__vitePreload","ENGLISH_WORDLIST","fetchCount","interval","existingChannelKeys","undecryptedGroupText","newSkipped","newQueue","changed","pendingCount","crackedCount","failedCount","processNext","currentQueue","nextItem","nextId","failedItems","currentMaxLength","isRetry","targetLength","prog","newRoom","keyUpper","handleStart","handleStop","room","SheetPrimitive.Root","SheetPortal","SheetPrimitive.Portal","SheetOverlay","SheetPrimitive.Overlay","sheetVariants","SheetContent","side","hideCloseButton","SheetPrimitive.Content","SheetPrimitive.Close","SheetHeader","SheetTitle","SheetPrimitive.Title","SheetDescription","SheetPrimitive.Description","parseHashConversation","slashIndex","getConversationHash","updateUrlHash","newHash","MAX_RAW_PACKETS","App","messageInputRef","activeConversationRef","seenMessageContentRef","setHealth","setConfig","setAppSettings","setContacts","setChannels","rawPackets","setRawPackets","setActiveConversation","showNewMessage","setShowNewMessage","showSettings","setShowSettings","sidebarOpen","setSidebarOpen","setUndecryptedCount","setShowCracker","setCrackerRunning","setFavorites","prevHealthRef","checkMention","wsHandlers","activeConv","isForActiveConversation","existing","fetchConfig","fetchAppSettings","fetchUndecryptedCount","resolveHashToConversation","hashConv","hasSetDefaultConversation","publicChannel","handleSendMessage","handleSaveConfig","handleSaveAppSettings","handleSenderClick","handleToggleFavorite","handleDeleteChannel","handleDeleteContact","handleCreateContact","newContact","handleCreateChannel","created","handleCreateHashtagChannel","sidebarContent","createRoot","StrictMode"],"ignoreList":[0,1,2,3,4,5,6,7,8,16,19,20,21,22,23,24,25,30,31,34,35,36,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,80,81,82,83,84,86,87,89,90,91,94,95,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185],"sources":["../../node_modules/react/cjs/react.production.min.js","../../node_modules/react/index.js","../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/react/jsx-runtime.js","../../node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.min.js","../../node_modules/react-dom/index.js","../../node_modules/react-dom/client.js","../../src/api.ts","../../src/useWebSocket.ts","../../src/types.ts","../../src/hooks/useRepeaterMode.ts","../../src/utils/pubkey.ts","../../src/utils/conversationState.ts","../../src/hooks/useUnreadCounts.ts","../../node_modules/sonner/dist/index.mjs","../../src/components/ui/sonner.tsx","../../src/hooks/useConversationMessages.ts","../../node_modules/lucide-react/dist/esm/shared/src/utils.js","../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../node_modules/lucide-react/dist/esm/Icon.js","../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../node_modules/lucide-react/dist/esm/icons/check.js","../../node_modules/lucide-react/dist/esm/icons/menu.js","../../node_modules/lucide-react/dist/esm/icons/x.js","../../src/components/StatusBar.tsx","../../src/utils/contactAvatar.ts","../../src/components/ContactAvatar.tsx","../../src/utils/favorites.ts","../../node_modules/clsx/dist/clsx.mjs","../../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../../src/lib/utils.ts","../../src/components/ui/input.tsx","../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../node_modules/class-variance-authority/dist/index.mjs","../../src/components/ui/button.tsx","../../src/components/Sidebar.tsx","../../src/utils/messageParser.ts","../../src/components/MessageList.tsx","../../src/components/MessageInput.tsx","../../node_modules/@radix-ui/primitive/dist/index.mjs","../../node_modules/@radix-ui/react-context/dist/index.mjs","../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../node_modules/@radix-ui/react-id/dist/index.mjs","../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs","../../node_modules/@radix-ui/react-primitive/dist/index.mjs","../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../../node_modules/@radix-ui/react-portal/dist/index.mjs","../../node_modules/@radix-ui/react-presence/dist/index.mjs","../../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../../node_modules/tslib/tslib.es6.mjs","../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../../node_modules/use-callback-ref/dist/es2015/assignRef.js","../../node_modules/use-callback-ref/dist/es2015/useRef.js","../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../node_modules/use-sidecar/dist/es2015/medium.js","../../node_modules/use-sidecar/dist/es2015/exports.js","../../node_modules/react-remove-scroll/dist/es2015/medium.js","../../node_modules/react-remove-scroll/dist/es2015/UI.js","../../node_modules/get-nonce/dist/es2015/index.js","../../node_modules/react-style-singleton/dist/es2015/singleton.js","../../node_modules/react-style-singleton/dist/es2015/hook.js","../../node_modules/react-style-singleton/dist/es2015/component.js","../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../node_modules/react-remove-scroll/dist/es2015/Combination.js","../../node_modules/aria-hidden/dist/es2015/index.js","../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.mjs","../../node_modules/@radix-ui/react-dialog/dist/index.mjs","../../src/components/ui/dialog.tsx","../../node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs","../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../node_modules/@radix-ui/react-tabs/dist/index.mjs","../../src/components/ui/tabs.tsx","../../node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../node_modules/@radix-ui/react-label/dist/index.mjs","../../src/components/ui/label.tsx","../../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../node_modules/@radix-ui/react-use-size/dist/index.mjs","../../node_modules/@radix-ui/react-checkbox/dist/index.mjs","../../src/components/ui/checkbox.tsx","../../src/components/NewMessageModal.tsx","../../node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../node_modules/@radix-ui/react-separator/dist/index.mjs","../../src/components/ui/separator.tsx","../../src/components/ui/alert.tsx","../../src/components/SettingsModal.tsx","../../src/components/RawPacketList.tsx","../../node_modules/@react-leaflet/core/lib/attribution.js","../../node_modules/@react-leaflet/core/lib/circle.js","../../node_modules/@react-leaflet/core/lib/context.js","../../node_modules/@react-leaflet/core/lib/component.js","../../node_modules/@react-leaflet/core/lib/events.js","../../node_modules/@react-leaflet/core/lib/pane.js","../../node_modules/@react-leaflet/core/lib/div-overlay.js","../../node_modules/leaflet/dist/leaflet-src.js","../../node_modules/@react-leaflet/core/lib/element.js","../../node_modules/@react-leaflet/core/lib/layer.js","../../node_modules/@react-leaflet/core/lib/path.js","../../node_modules/@react-leaflet/core/lib/generic.js","../../node_modules/@react-leaflet/core/lib/grid-layer.js","../../node_modules/react-leaflet/lib/hooks.js","../../node_modules/react-leaflet/lib/CircleMarker.js","../../node_modules/react-leaflet/lib/MapContainer.js","../../node_modules/react-leaflet/lib/Popup.js","../../node_modules/react-leaflet/lib/TileLayer.js","../../src/components/MapView.tsx","../../node_modules/@michaelhart/meshcore-decoder/dist/types/enums.js","../../node_modules/@michaelhart/meshcore-decoder/dist/utils/hex.js","../../node_modules/@michaelhart/meshcore-decoder/dist/utils/enum-names.js","../../__vite-browser-external","../../node_modules/crypto-js/core.js","../../node_modules/crypto-js/x64-core.js","../../node_modules/crypto-js/lib-typedarrays.js","../../node_modules/crypto-js/enc-utf16.js","../../node_modules/crypto-js/enc-base64.js","../../node_modules/crypto-js/enc-base64url.js","../../node_modules/crypto-js/md5.js","../../node_modules/crypto-js/sha1.js","../../node_modules/crypto-js/sha256.js","../../node_modules/crypto-js/sha224.js","../../node_modules/crypto-js/sha512.js","../../node_modules/crypto-js/sha384.js","../../node_modules/crypto-js/sha3.js","../../node_modules/crypto-js/ripemd160.js","../../node_modules/crypto-js/hmac.js","../../node_modules/crypto-js/pbkdf2.js","../../node_modules/crypto-js/evpkdf.js","../../node_modules/crypto-js/cipher-core.js","../../node_modules/crypto-js/mode-cfb.js","../../node_modules/crypto-js/mode-ctr.js","../../node_modules/crypto-js/mode-ctr-gladman.js","../../node_modules/crypto-js/mode-ofb.js","../../node_modules/crypto-js/mode-ecb.js","../../node_modules/crypto-js/pad-ansix923.js","../../node_modules/crypto-js/pad-iso10126.js","../../node_modules/crypto-js/pad-iso97971.js","../../node_modules/crypto-js/pad-zeropadding.js","../../node_modules/crypto-js/pad-nopadding.js","../../node_modules/crypto-js/format-hex.js","../../node_modules/crypto-js/aes.js","../../node_modules/crypto-js/tripledes.js","../../node_modules/crypto-js/rc4.js","../../node_modules/crypto-js/rabbit.js","../../node_modules/crypto-js/rabbit-legacy.js","../../node_modules/crypto-js/blowfish.js","../../node_modules/crypto-js/index.js","../../node_modules/@michaelhart/meshcore-decoder/dist/crypto/channel-crypto.js","../../node_modules/@michaelhart/meshcore-decoder/dist/crypto/key-manager.js","../../node_modules/@noble/ed25519/index.js","../../node_modules/@michaelhart/meshcore-decoder/lib/orlp-ed25519.js","../../node_modules/@michaelhart/meshcore-decoder/dist/crypto/orlp-ed25519-wasm.js","../../node_modules/@michaelhart/meshcore-decoder/dist/crypto/ed25519-verifier.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/advert.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/trace.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/group-text.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/request.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/response.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/anon-request.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/ack.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/path.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/text-message.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/payload-decoders/control.js","../../node_modules/@michaelhart/meshcore-decoder/dist/decoder/packet-decoder.js","../../node_modules/@michaelhart/meshcore-decoder/dist/utils/auth-token.js","../../node_modules/@michaelhart/meshcore-decoder/dist/index.js","../../node_modules/crypto-js/hmac-sha256.js","../../node_modules/crypto-js/enc-hex.js","../../node_modules/meshcore-hashtag-cracker/dist/core.js","../../node_modules/meshcore-hashtag-cracker/dist/gpu-bruteforce.js","../../node_modules/meshcore-hashtag-cracker/dist/cpu-bruteforce.js","../../node_modules/meshcore-hashtag-cracker/dist/cracker.js","../../node_modules/nosleep.js/src/media.js","../../node_modules/nosleep.js/src/index.js","../../src/components/CrackerPanel.tsx","../../src/components/ui/sheet.tsx","../../src/utils/urlHash.ts","../../src/App.tsx","../../src/main.tsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3(url: string, options?: RequestInit): Promise {\n const res = await fetch(`${API_BASE}${url}`, {\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers,\n },\n });\n if (!res.ok) {\n const error = await res.text();\n throw new Error(error || res.statusText);\n }\n return res.json();\n}\n\ninterface DecryptResult {\n started: boolean;\n total_packets: number;\n message: string;\n}\n\nexport const api = {\n // Health\n getHealth: () => fetchJson('/health'),\n\n // Radio config\n getRadioConfig: () => fetchJson('/radio/config'),\n updateRadioConfig: (config: RadioConfigUpdate) =>\n fetchJson('/radio/config', {\n method: 'PATCH',\n body: JSON.stringify(config),\n }),\n setPrivateKey: (privateKey: string) =>\n fetchJson<{ status: string }>('/radio/private-key', {\n method: 'PUT',\n body: JSON.stringify({ private_key: privateKey }),\n }),\n sendAdvertisement: (flood = true) =>\n fetchJson<{ status: string; flood: boolean }>(`/radio/advertise?flood=${flood}`, {\n method: 'POST',\n }),\n rebootRadio: () =>\n fetchJson<{ status: string; message: string }>('/radio/reboot', {\n method: 'POST',\n }),\n reconnectRadio: () =>\n fetchJson<{ status: string; message: string; connected: boolean }>('/radio/reconnect', {\n method: 'POST',\n }),\n\n // Contacts\n getContacts: (limit = 100, offset = 0) =>\n fetchJson(`/contacts?limit=${limit}&offset=${offset}`),\n getContact: (publicKey: string) => fetchJson(`/contacts/${publicKey}`),\n syncContacts: () => fetchJson<{ synced: number }>('/contacts/sync', { method: 'POST' }),\n addContactToRadio: (publicKey: string) =>\n fetchJson<{ status: string }>(`/contacts/${publicKey}/add-to-radio`, {\n method: 'POST',\n }),\n removeContactFromRadio: (publicKey: string) =>\n fetchJson<{ status: string }>(`/contacts/${publicKey}/remove-from-radio`, {\n method: 'POST',\n }),\n deleteContact: (publicKey: string) =>\n fetchJson<{ status: string }>(`/contacts/${publicKey}`, {\n method: 'DELETE',\n }),\n markContactRead: (publicKey: string) =>\n fetchJson<{ status: string; public_key: string }>(`/contacts/${publicKey}/mark-read`, {\n method: 'POST',\n }),\n requestTelemetry: (publicKey: string, password: string) =>\n fetchJson(`/contacts/${publicKey}/telemetry`, {\n method: 'POST',\n body: JSON.stringify({ password }),\n }),\n sendRepeaterCommand: (publicKey: string, command: string) =>\n fetchJson(`/contacts/${publicKey}/command`, {\n method: 'POST',\n body: JSON.stringify({ command }),\n }),\n\n // Channels\n getChannels: () => fetchJson('/channels'),\n getChannel: (key: string) => fetchJson(`/channels/${key}`),\n createChannel: (name: string, key?: string) =>\n fetchJson('/channels', {\n method: 'POST',\n body: JSON.stringify({ name, key }),\n }),\n syncChannels: () => fetchJson<{ synced: number }>('/channels/sync', { method: 'POST' }),\n deleteChannel: (key: string) =>\n fetchJson<{ status: string }>(`/channels/${key}`, { method: 'DELETE' }),\n markChannelRead: (key: string) =>\n fetchJson<{ status: string; key: string }>(`/channels/${key}/mark-read`, {\n method: 'POST',\n }),\n\n // Messages\n getMessages: (params?: {\n limit?: number;\n offset?: number;\n type?: 'PRIV' | 'CHAN';\n conversation_key?: string;\n }) => {\n const searchParams = new URLSearchParams();\n if (params?.limit) searchParams.set('limit', params.limit.toString());\n if (params?.offset) searchParams.set('offset', params.offset.toString());\n if (params?.type) searchParams.set('type', params.type);\n if (params?.conversation_key) searchParams.set('conversation_key', params.conversation_key);\n const query = searchParams.toString();\n return fetchJson(`/messages${query ? `?${query}` : ''}`);\n },\n getMessagesBulk: (\n conversations: Array<{ type: 'PRIV' | 'CHAN'; conversation_key: string }>,\n limitPerConversation: number = UNREAD_FETCH_LIMIT\n ) =>\n fetchJson>(\n `/messages/bulk?limit_per_conversation=${limitPerConversation}`,\n {\n method: 'POST',\n body: JSON.stringify(conversations),\n }\n ),\n sendDirectMessage: (destination: string, text: string) =>\n fetchJson('/messages/direct', {\n method: 'POST',\n body: JSON.stringify({ destination, text }),\n }),\n sendChannelMessage: (channelKey: string, text: string) =>\n fetchJson('/messages/channel', {\n method: 'POST',\n body: JSON.stringify({ channel_key: channelKey, text }),\n }),\n\n // Packets\n getUndecryptedPacketCount: () => fetchJson<{ count: number }>('/packets/undecrypted/count'),\n decryptHistoricalPackets: (params: {\n key_type: 'channel' | 'contact';\n channel_key?: string;\n channel_name?: string;\n }) =>\n fetchJson('/packets/decrypt/historical', {\n method: 'POST',\n body: JSON.stringify(params),\n }),\n runMaintenance: (pruneUndecryptedDays: number) =>\n fetchJson('/packets/maintenance', {\n method: 'POST',\n body: JSON.stringify({ prune_undecrypted_days: pruneUndecryptedDays }),\n }),\n\n // Read State\n markAllRead: () =>\n fetchJson<{ status: string; timestamp: number }>('/read-state/mark-all-read', {\n method: 'POST',\n }),\n\n // App Settings\n getSettings: () => fetchJson('/settings'),\n updateSettings: (settings: AppSettingsUpdate) =>\n fetchJson('/settings', {\n method: 'PATCH',\n body: JSON.stringify(settings),\n }),\n};\n","import { useEffect, useRef, useCallback, useState } from 'react';\nimport type { HealthStatus, Contact, Channel, Message, RawPacket } from './types';\n\ninterface WebSocketMessage {\n type: string;\n data: unknown;\n}\n\ninterface ErrorEvent {\n message: string;\n details?: string;\n}\n\ninterface UseWebSocketOptions {\n onHealth?: (health: HealthStatus) => void;\n onContacts?: (contacts: Contact[]) => void;\n onChannels?: (channels: Channel[]) => void;\n onMessage?: (message: Message) => void;\n onContact?: (contact: Contact) => void;\n onRawPacket?: (packet: RawPacket) => void;\n onMessageAcked?: (messageId: number, ackCount: number) => void;\n onError?: (error: ErrorEvent) => void;\n}\n\nexport function useWebSocket(options: UseWebSocketOptions) {\n const wsRef = useRef(null);\n const reconnectTimeoutRef = useRef(null);\n const [connected, setConnected] = useState(false);\n\n const connect = useCallback(() => {\n // Determine WebSocket URL based on current location\n const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';\n // In development, connect directly to backend; in production, use same host\n const isDev = window.location.port === '5173';\n const wsUrl = isDev\n ? `ws://localhost:8000/api/ws`\n : `${protocol}//${window.location.host}/api/ws`;\n\n const ws = new WebSocket(wsUrl);\n\n ws.onopen = () => {\n console.log('WebSocket connected');\n setConnected(true);\n };\n\n ws.onclose = () => {\n console.log('WebSocket disconnected');\n setConnected(false);\n wsRef.current = null;\n\n // Reconnect after 3 seconds\n reconnectTimeoutRef.current = window.setTimeout(() => {\n console.log('Attempting WebSocket reconnect...');\n connect();\n }, 3000);\n };\n\n ws.onerror = (error) => {\n console.error('WebSocket error:', error);\n };\n\n ws.onmessage = (event) => {\n try {\n const msg: WebSocketMessage = JSON.parse(event.data);\n\n switch (msg.type) {\n case 'health':\n options.onHealth?.(msg.data as HealthStatus);\n break;\n case 'contacts':\n options.onContacts?.(msg.data as Contact[]);\n break;\n case 'channels':\n options.onChannels?.(msg.data as Channel[]);\n break;\n case 'message':\n options.onMessage?.(msg.data as Message);\n break;\n case 'contact':\n options.onContact?.(msg.data as Contact);\n break;\n case 'raw_packet':\n options.onRawPacket?.(msg.data as RawPacket);\n break;\n case 'message_acked': {\n const ackData = msg.data as { message_id: number; ack_count: number };\n options.onMessageAcked?.(ackData.message_id, ackData.ack_count);\n break;\n }\n case 'error':\n options.onError?.(msg.data as ErrorEvent);\n break;\n case 'pong':\n // Heartbeat response, ignore\n break;\n default:\n console.log('Unknown WebSocket message type:', msg.type);\n }\n } catch (e) {\n console.error('Failed to parse WebSocket message:', e);\n }\n };\n\n wsRef.current = ws;\n }, [options]);\n\n useEffect(() => {\n connect();\n\n // Ping every 30 seconds to keep connection alive\n const pingInterval = setInterval(() => {\n if (wsRef.current?.readyState === WebSocket.OPEN) {\n wsRef.current.send('ping');\n }\n }, 30000);\n\n return () => {\n clearInterval(pingInterval);\n if (reconnectTimeoutRef.current) {\n clearTimeout(reconnectTimeoutRef.current);\n }\n if (wsRef.current) {\n wsRef.current.close();\n }\n };\n }, [connect]);\n\n return { connected };\n}\n","/**\n * Type aliases for key types used throughout the application.\n * These are all hex strings but serve different purposes.\n */\n\n/** 64-character hex string identifying a contact/node */\nexport type PublicKey = string;\n\n/** 12-character hex prefix of a public key (used in message routing) */\nexport type PubkeyPrefix = string;\n\n/** 32-character hex string identifying a channel */\nexport type ChannelKey = string;\n\nexport interface RadioSettings {\n freq: number;\n bw: number;\n sf: number;\n cr: number;\n}\n\nexport interface RadioConfig {\n public_key: string;\n name: string;\n lat: number;\n lon: number;\n tx_power: number;\n max_tx_power: number;\n radio: RadioSettings;\n}\n\nexport interface RadioConfigUpdate {\n name?: string;\n lat?: number;\n lon?: number;\n tx_power?: number;\n radio?: RadioSettings;\n}\n\nexport interface HealthStatus {\n status: string;\n radio_connected: boolean;\n serial_port: string | null;\n database_size_mb: number;\n oldest_undecrypted_timestamp: number | null;\n}\n\nexport interface MaintenanceResult {\n packets_deleted: number;\n vacuumed: boolean;\n}\n\nexport interface Contact {\n public_key: PublicKey;\n name: string | null;\n type: number;\n flags: number;\n last_path: string | null;\n last_path_len: number;\n last_advert: number | null;\n lat: number | null;\n lon: number | null;\n last_seen: number | null;\n on_radio: boolean;\n last_contacted: number | null;\n last_read_at: number | null;\n}\n\nexport interface Channel {\n key: ChannelKey;\n name: string;\n is_hashtag: boolean;\n on_radio: boolean;\n last_read_at: number | null;\n}\n\nexport interface Message {\n id: number;\n type: 'PRIV' | 'CHAN';\n /** For PRIV: sender's PublicKey (or prefix). For CHAN: ChannelKey */\n conversation_key: string;\n text: string;\n sender_timestamp: number | null;\n received_at: number;\n path_len: number | null;\n txt_type: number;\n signature: string | null;\n outgoing: boolean;\n /** ACK count: 0 = not acked, 1+ = number of acks/flood echoes received */\n acked: number;\n}\n\nexport type ConversationType = 'contact' | 'channel' | 'raw' | 'map';\n\nexport interface Conversation {\n type: ConversationType;\n /** PublicKey for contacts, ChannelKey for channels, 'raw'/'map' for special views */\n id: string;\n name: string;\n}\n\nexport interface RawPacket {\n id: number;\n timestamp: number;\n data: string; // hex\n payload_type: string;\n snr: number | null; // Signal-to-noise ratio in dB\n rssi: number | null; // Received signal strength in dBm\n decrypted: boolean;\n decrypted_info: {\n channel_name: string | null;\n sender: string | null;\n } | null;\n}\n\nexport interface AppSettings {\n max_radio_contacts: number;\n}\n\nexport interface AppSettingsUpdate {\n max_radio_contacts?: number;\n}\n\n/** Contact type constants */\nexport const CONTACT_TYPE_CLIENT = 1;\nexport const CONTACT_TYPE_REPEATER = 2;\n\nexport interface NeighborInfo {\n pubkey_prefix: string;\n name: string | null;\n snr: number;\n last_heard_seconds: number;\n}\n\nexport interface AclEntry {\n pubkey_prefix: string;\n name: string | null;\n permission: number;\n permission_name: string;\n}\n\nexport interface TelemetryResponse {\n pubkey_prefix: string;\n battery_volts: number;\n tx_queue_len: number;\n noise_floor_dbm: number;\n last_rssi_dbm: number;\n last_snr_db: number;\n packets_received: number;\n packets_sent: number;\n airtime_seconds: number;\n rx_airtime_seconds: number;\n uptime_seconds: number;\n sent_flood: number;\n sent_direct: number;\n recv_flood: number;\n recv_direct: number;\n flood_dups: number;\n direct_dups: number;\n full_events: number;\n neighbors: NeighborInfo[];\n acl: AclEntry[];\n}\n\nexport interface CommandResponse {\n command: string;\n response: string;\n sender_timestamp: number | null;\n}\n","import { useState, useCallback, useMemo, useEffect } from 'react';\nimport { api } from '../api';\nimport type {\n Contact,\n Conversation,\n Message,\n TelemetryResponse,\n NeighborInfo,\n AclEntry,\n} from '../types';\nimport { CONTACT_TYPE_REPEATER } from '../types';\n\n// Format seconds into human-readable duration (e.g., 1d17h2m, 1h5m, 3m)\nexport function formatDuration(seconds: number): string {\n if (seconds < 60) return `${seconds}s`;\n\n const days = Math.floor(seconds / 86400);\n const hours = Math.floor((seconds % 86400) / 3600);\n const mins = Math.floor((seconds % 3600) / 60);\n\n if (days > 0) {\n if (hours > 0 && mins > 0) return `${days}d${hours}h${mins}m`;\n if (hours > 0) return `${days}d${hours}h`;\n if (mins > 0) return `${days}d${mins}m`;\n return `${days}d`;\n }\n if (hours > 0) {\n return mins > 0 ? `${hours}h${mins}m` : `${hours}h`;\n }\n return `${mins}m`;\n}\n\n// Format telemetry response as human-readable text\nexport function formatTelemetry(telemetry: TelemetryResponse): string {\n const lines = [\n `Telemetry`,\n `Battery Voltage: ${telemetry.battery_volts.toFixed(3)}V`,\n `Uptime: ${formatDuration(telemetry.uptime_seconds)}`,\n `TX Airtime: ${formatDuration(telemetry.airtime_seconds)}`,\n `RX Airtime: ${formatDuration(telemetry.rx_airtime_seconds)}`,\n '',\n `Noise Floor: ${telemetry.noise_floor_dbm} dBm`,\n `Last RSSI: ${telemetry.last_rssi_dbm} dBm`,\n `Last SNR: ${telemetry.last_snr_db.toFixed(1)} dB`,\n '',\n `Packets: ${telemetry.packets_received.toLocaleString()} rx / ${telemetry.packets_sent.toLocaleString()} tx`,\n `Flood: ${telemetry.recv_flood.toLocaleString()} rx / ${telemetry.sent_flood.toLocaleString()} tx`,\n `Direct: ${telemetry.recv_direct.toLocaleString()} rx / ${telemetry.sent_direct.toLocaleString()} tx`,\n `Duplicates: ${telemetry.flood_dups.toLocaleString()} flood / ${telemetry.direct_dups.toLocaleString()} direct`,\n '',\n `TX Queue: ${telemetry.tx_queue_len}`,\n `Debug Flags: ${telemetry.full_events}`,\n ];\n return lines.join('\\n');\n}\n\n// Format neighbors list as human-readable text\nexport function formatNeighbors(neighbors: NeighborInfo[]): string {\n if (neighbors.length === 0) {\n return 'Neighbors\\nNo neighbors reported';\n }\n // Sort by SNR descending (highest first)\n const sorted = [...neighbors].sort((a, b) => b.snr - a.snr);\n const lines = [`Neighbors (${sorted.length})`];\n for (const n of sorted) {\n const name = n.name || n.pubkey_prefix;\n const snr = n.snr >= 0 ? `+${n.snr.toFixed(1)}` : n.snr.toFixed(1);\n lines.push(`${name}, ${snr} dB [${formatDuration(n.last_heard_seconds)} ago]`);\n }\n return lines.join('\\n');\n}\n\n// Format ACL list as human-readable text\nexport function formatAcl(acl: AclEntry[]): string {\n if (acl.length === 0) {\n return 'ACL\\nNo ACL entries';\n }\n const lines = [`ACL (${acl.length})`];\n for (const entry of acl) {\n const name = entry.name || entry.pubkey_prefix;\n lines.push(`${name}: ${entry.permission_name}`);\n }\n return lines.join('\\n');\n}\n\n// Create a local message object (not persisted to database)\nfunction createLocalMessage(\n conversationKey: string,\n text: string,\n outgoing: boolean,\n idOffset = 0\n): Message {\n const now = Math.floor(Date.now() / 1000);\n return {\n id: -Date.now() - idOffset,\n type: 'PRIV',\n conversation_key: conversationKey,\n text,\n sender_timestamp: now,\n received_at: now,\n path_len: null,\n txt_type: 0,\n signature: null,\n outgoing,\n acked: 1,\n };\n}\n\nexport interface UseRepeaterModeResult {\n repeaterLoggedIn: boolean;\n activeContactIsRepeater: boolean;\n handleTelemetryRequest: (password: string) => Promise;\n handleRepeaterCommand: (command: string) => Promise;\n}\n\nexport function useRepeaterMode(\n activeConversation: Conversation | null,\n contacts: Contact[],\n setMessages: React.Dispatch>\n): UseRepeaterModeResult {\n const [repeaterLoggedIn, setRepeaterLoggedIn] = useState(false);\n\n // Reset login state when conversation changes\n useEffect(() => {\n setRepeaterLoggedIn(false);\n }, [activeConversation?.id]);\n\n // Check if active conversation is a repeater\n const activeContactIsRepeater = useMemo(() => {\n if (!activeConversation || activeConversation.type !== 'contact') return false;\n const contact = contacts.find((c) => c.public_key === activeConversation.id);\n return contact?.type === CONTACT_TYPE_REPEATER;\n }, [activeConversation, contacts]);\n\n // Request telemetry from a repeater\n const handleTelemetryRequest = useCallback(\n async (password: string) => {\n if (!activeConversation || activeConversation.type !== 'contact') return;\n if (!activeContactIsRepeater) return;\n\n try {\n const telemetry = await api.requestTelemetry(activeConversation.id, password);\n\n // Create local messages to display the telemetry (not persisted to database)\n const telemetryMessage = createLocalMessage(\n activeConversation.id,\n formatTelemetry(telemetry),\n false,\n 0\n );\n\n const neighborsMessage = createLocalMessage(\n activeConversation.id,\n formatNeighbors(telemetry.neighbors),\n false,\n 1\n );\n\n const aclMessage = createLocalMessage(\n activeConversation.id,\n formatAcl(telemetry.acl),\n false,\n 2\n );\n\n // Add all messages to the list\n setMessages((prev) => [...prev, telemetryMessage, neighborsMessage, aclMessage]);\n\n // Mark as logged in for CLI command mode\n setRepeaterLoggedIn(true);\n } catch (err) {\n const errorMessage = createLocalMessage(\n activeConversation.id,\n `Telemetry request failed: ${err instanceof Error ? err.message : 'Unknown error'}`,\n false,\n 0\n );\n setMessages((prev) => [...prev, errorMessage]);\n }\n },\n [activeConversation, activeContactIsRepeater, setMessages]\n );\n\n // Send CLI command to a repeater (after logged in)\n const handleRepeaterCommand = useCallback(\n async (command: string) => {\n if (!activeConversation || activeConversation.type !== 'contact') return;\n if (!activeContactIsRepeater || !repeaterLoggedIn) return;\n\n // Show the command as an outgoing message\n const commandMessage = createLocalMessage(activeConversation.id, `> ${command}`, true, 0);\n setMessages((prev) => [...prev, commandMessage]);\n\n try {\n const response = await api.sendRepeaterCommand(activeConversation.id, command);\n\n // Use the actual timestamp from the repeater if available\n const responseMessage = createLocalMessage(\n activeConversation.id,\n response.response,\n false,\n 1\n );\n if (response.sender_timestamp) {\n responseMessage.sender_timestamp = response.sender_timestamp;\n }\n\n setMessages((prev) => [...prev, responseMessage]);\n } catch (err) {\n const errorMessage = createLocalMessage(\n activeConversation.id,\n `Command failed: ${err instanceof Error ? err.message : 'Unknown error'}`,\n false,\n 1\n );\n setMessages((prev) => [...prev, errorMessage]);\n }\n },\n [activeConversation, activeContactIsRepeater, repeaterLoggedIn, setMessages]\n );\n\n return {\n repeaterLoggedIn,\n activeContactIsRepeater,\n handleTelemetryRequest,\n handleRepeaterCommand,\n };\n}\n","/**\n * Public key utilities for consistent handling of 64-char full keys\n * and 12-char prefixes throughout the application.\n *\n * MeshCore uses 64-character hex strings for public keys, but messages\n * and some radio operations only provide 12-character prefixes. This\n * module provides utilities for working with both formats consistently.\n */\n\n/** Length of a full public key in hex characters */\nexport const PUBKEY_FULL_LENGTH = 64;\n\n/** Length of a public key prefix in hex characters */\nexport const PUBKEY_PREFIX_LENGTH = 12;\n\n/**\n * Extract the 12-character prefix from a public key.\n * Works with both full keys and existing prefixes.\n */\nexport function getPubkeyPrefix(key: string): string {\n return key.slice(0, PUBKEY_PREFIX_LENGTH);\n}\n\n/**\n * Check if two public keys match by comparing their prefixes.\n * This handles the case where one key is full (64 chars) and\n * the other is a prefix (12 chars).\n */\nexport function pubkeysMatch(a: string, b: string): boolean {\n if (!a || !b) return false;\n return getPubkeyPrefix(a) === getPubkeyPrefix(b);\n}\n\n/**\n * Check if a public key starts with the given prefix.\n * More explicit than using .startsWith() directly.\n */\nexport function pubkeyMatchesPrefix(fullKey: string, prefix: string): boolean {\n if (!fullKey || !prefix) return false;\n return fullKey.startsWith(prefix);\n}\n\n/**\n * Get a display name for a contact, falling back to pubkey prefix.\n */\nexport function getContactDisplayName(name: string | null | undefined, pubkey: string): string {\n return name || getPubkeyPrefix(pubkey);\n}\n\n/**\n * Check if a key is a full 64-character public key.\n */\nexport function isFullPubkey(key: string): boolean {\n return key.length === PUBKEY_FULL_LENGTH;\n}\n\n/**\n * Check if a key is a 12-character prefix.\n */\nexport function isPubkeyPrefix(key: string): boolean {\n return key.length === PUBKEY_PREFIX_LENGTH;\n}\n","/**\n * localStorage utilities for tracking conversation message times.\n *\n * Stores when each conversation last received a message, used for\n * sorting conversations by recency in the sidebar.\n *\n * Read state (last_read_at) is tracked server-side for consistency\n * across devices - see useUnreadCounts hook.\n */\n\nimport { getPubkeyPrefix } from './pubkey';\n\nconst LAST_MESSAGE_KEY = 'remoteterm-lastMessageTime';\n\nexport type ConversationTimes = Record;\n\nfunction loadTimes(key: string): ConversationTimes {\n try {\n const stored = localStorage.getItem(key);\n return stored ? JSON.parse(stored) : {};\n } catch {\n return {};\n }\n}\n\nfunction saveTimes(key: string, times: ConversationTimes): void {\n try {\n localStorage.setItem(key, JSON.stringify(times));\n } catch {\n // localStorage might be full or disabled\n }\n}\n\nexport function getLastMessageTimes(): ConversationTimes {\n return loadTimes(LAST_MESSAGE_KEY);\n}\n\nexport function setLastMessageTime(stateKey: string, timestamp: number): ConversationTimes {\n const times = loadTimes(LAST_MESSAGE_KEY);\n // Only update if this is a newer message\n if (!times[stateKey] || timestamp > times[stateKey]) {\n times[stateKey] = timestamp;\n saveTimes(LAST_MESSAGE_KEY, times);\n }\n return times;\n}\n\n/**\n * Generate a state tracking key for message times.\n *\n * This is NOT the same as Message.conversation_key (the database field).\n * This creates prefixed keys for localStorage/state tracking:\n * - Channels: \"channel-{channelKey}\"\n * - Contacts: \"contact-{12-char-pubkey-prefix}\"\n *\n * The 12-char prefix for contacts ensures consistent matching regardless\n * of whether we have a full 64-char pubkey or just a prefix.\n */\nexport function getStateKey(type: 'channel' | 'contact', id: string): string {\n if (type === 'channel') {\n return `channel-${id}`;\n }\n // For contacts, use 12-char prefix for consistent matching\n return `contact-${getPubkeyPrefix(id)}`;\n}\n","import { useState, useCallback, useEffect, useRef } from 'react';\nimport { api, UNREAD_FETCH_LIMIT } from '../api';\nimport {\n getLastMessageTimes,\n setLastMessageTime,\n getStateKey,\n type ConversationTimes,\n} from '../utils/conversationState';\nimport type { Channel, Contact, Conversation, Message } from '../types';\n\nexport interface UseUnreadCountsResult {\n unreadCounts: Record;\n /** Tracks which conversations have unread messages that mention the user */\n mentions: Record;\n lastMessageTimes: ConversationTimes;\n incrementUnread: (stateKey: string, hasMention?: boolean) => void;\n markAllRead: () => void;\n markConversationRead: (conv: Conversation) => void;\n trackNewMessage: (msg: Message) => void;\n}\n\n/** Check if a message text contains a mention of the given name in @[name] format */\nfunction messageContainsMention(text: string, name: string | null): boolean {\n if (!name) return false;\n // Escape special regex characters in the name\n const escaped = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const mentionPattern = new RegExp(`@\\\\[${escaped}\\\\]`, 'i');\n return mentionPattern.test(text);\n}\n\nexport function useUnreadCounts(\n channels: Channel[],\n contacts: Contact[],\n activeConversation: Conversation | null,\n myName: string | null = null\n): UseUnreadCountsResult {\n const [unreadCounts, setUnreadCounts] = useState>({});\n const [mentions, setMentions] = useState>({});\n const [lastMessageTimes, setLastMessageTimes] = useState(getLastMessageTimes);\n\n // Keep myName in a ref so callbacks always have current value\n const myNameRef = useRef(myName);\n useEffect(() => {\n myNameRef.current = myName;\n }, [myName]);\n\n // Track which channels/contacts we've already fetched unreads for\n const fetchedChannels = useRef>(new Set());\n const fetchedContacts = useRef>(new Set());\n\n // Fetch messages and count unreads for new channels/contacts\n // Uses server-side last_read_at for consistent read state across devices\n useEffect(() => {\n const newChannels = channels.filter((c) => !fetchedChannels.current.has(c.key));\n const newContacts = contacts.filter(\n (c) => c.public_key && !fetchedContacts.current.has(c.public_key)\n );\n\n if (newChannels.length === 0 && newContacts.length === 0) return;\n\n // Mark as fetched before starting (to avoid duplicate fetches if effect re-runs)\n newChannels.forEach((c) => fetchedChannels.current.add(c.key));\n newContacts.forEach((c) => fetchedContacts.current.add(c.public_key));\n\n const fetchAndCountUnreads = async () => {\n const conversations: Array<{ type: 'PRIV' | 'CHAN'; conversation_key: string }> = [\n ...newChannels.map((c) => ({ type: 'CHAN' as const, conversation_key: c.key })),\n ...newContacts.map((c) => ({ type: 'PRIV' as const, conversation_key: c.public_key })),\n ];\n\n if (conversations.length === 0) return;\n\n try {\n const bulkMessages = await api.getMessagesBulk(conversations, UNREAD_FETCH_LIMIT);\n const newUnreadCounts: Record = {};\n const newMentions: Record = {};\n const newLastMessageTimes: Record = {};\n\n // Process channel messages - use server-side last_read_at\n for (const channel of newChannels) {\n const msgs = bulkMessages[`CHAN:${channel.key}`] || [];\n if (msgs.length > 0) {\n const key = getStateKey('channel', channel.key);\n // Use server-side last_read_at, fallback to 0 if never read\n const lastRead = channel.last_read_at || 0;\n\n const unreadMsgs = msgs.filter((m) => !m.outgoing && m.received_at > lastRead);\n if (unreadMsgs.length > 0) {\n newUnreadCounts[key] = unreadMsgs.length;\n // Check if any unread message mentions the user\n if (unreadMsgs.some((m) => messageContainsMention(m.text, myNameRef.current))) {\n newMentions[key] = true;\n }\n }\n\n const latestTime = Math.max(...msgs.map((m) => m.received_at));\n newLastMessageTimes[key] = latestTime;\n setLastMessageTime(key, latestTime);\n }\n }\n\n // Process contact messages - use server-side last_read_at\n for (const contact of newContacts) {\n const msgs = bulkMessages[`PRIV:${contact.public_key}`] || [];\n if (msgs.length > 0) {\n const key = getStateKey('contact', contact.public_key);\n // Use server-side last_read_at, fallback to 0 if never read\n const lastRead = contact.last_read_at || 0;\n\n const unreadMsgs = msgs.filter((m) => !m.outgoing && m.received_at > lastRead);\n if (unreadMsgs.length > 0) {\n newUnreadCounts[key] = unreadMsgs.length;\n // Check if any unread message mentions the user\n if (unreadMsgs.some((m) => messageContainsMention(m.text, myNameRef.current))) {\n newMentions[key] = true;\n }\n }\n\n const latestTime = Math.max(...msgs.map((m) => m.received_at));\n newLastMessageTimes[key] = latestTime;\n setLastMessageTime(key, latestTime);\n }\n }\n\n if (Object.keys(newUnreadCounts).length > 0) {\n setUnreadCounts((prev) => ({ ...prev, ...newUnreadCounts }));\n }\n if (Object.keys(newMentions).length > 0) {\n setMentions((prev) => ({ ...prev, ...newMentions }));\n }\n setLastMessageTimes(getLastMessageTimes());\n } catch (err) {\n console.error('Failed to fetch messages bulk:', err);\n }\n };\n\n fetchAndCountUnreads();\n }, [channels, contacts]);\n\n // Mark conversation as read when user views it\n // Calls server API to persist read state across devices\n useEffect(() => {\n if (\n activeConversation &&\n activeConversation.type !== 'raw' &&\n activeConversation.type !== 'map'\n ) {\n const key = getStateKey(\n activeConversation.type as 'channel' | 'contact',\n activeConversation.id\n );\n\n // Update local state immediately for responsive UI\n setUnreadCounts((prev) => {\n if (prev[key]) {\n const next = { ...prev };\n delete next[key];\n return next;\n }\n return prev;\n });\n\n // Also clear mentions for this conversation\n setMentions((prev) => {\n if (prev[key]) {\n const next = { ...prev };\n delete next[key];\n return next;\n }\n return prev;\n });\n\n // Persist to server (fire-and-forget, errors logged but not blocking)\n if (activeConversation.type === 'channel') {\n api.markChannelRead(activeConversation.id).catch((err) => {\n console.error('Failed to mark channel as read on server:', err);\n });\n } else if (activeConversation.type === 'contact') {\n api.markContactRead(activeConversation.id).catch((err) => {\n console.error('Failed to mark contact as read on server:', err);\n });\n }\n }\n }, [activeConversation]);\n\n // Increment unread count for a conversation\n const incrementUnread = useCallback((stateKey: string, hasMention?: boolean) => {\n setUnreadCounts((prev) => ({\n ...prev,\n [stateKey]: (prev[stateKey] || 0) + 1,\n }));\n if (hasMention) {\n setMentions((prev) => ({\n ...prev,\n [stateKey]: true,\n }));\n }\n }, []);\n\n // Mark all conversations as read\n // Calls single bulk API endpoint to persist read state\n const markAllRead = useCallback(() => {\n // Update local state immediately\n setUnreadCounts({});\n setMentions({});\n\n // Persist to server with single bulk request\n api.markAllRead().catch((err) => {\n console.error('Failed to mark all as read on server:', err);\n });\n }, []);\n\n // Mark a specific conversation as read\n // Calls server API to persist read state across devices\n const markConversationRead = useCallback((conv: Conversation) => {\n if (conv.type === 'raw' || conv.type === 'map') return;\n\n const key = getStateKey(conv.type as 'channel' | 'contact', conv.id);\n\n // Update local state immediately\n setUnreadCounts((prev) => {\n if (prev[key]) {\n const next = { ...prev };\n delete next[key];\n return next;\n }\n return prev;\n });\n\n // Also clear mentions for this conversation\n setMentions((prev) => {\n if (prev[key]) {\n const next = { ...prev };\n delete next[key];\n return next;\n }\n return prev;\n });\n\n // Persist to server (fire-and-forget)\n if (conv.type === 'channel') {\n api.markChannelRead(conv.id).catch((err) => {\n console.error('Failed to mark channel as read on server:', err);\n });\n } else if (conv.type === 'contact') {\n api.markContactRead(conv.id).catch((err) => {\n console.error('Failed to mark contact as read on server:', err);\n });\n }\n }, []);\n\n // Track a new incoming message for unread counts\n const trackNewMessage = useCallback((msg: Message) => {\n let conversationKey: string | null = null;\n if (msg.type === 'CHAN' && msg.conversation_key) {\n conversationKey = getStateKey('channel', msg.conversation_key);\n } else if (msg.type === 'PRIV' && msg.conversation_key) {\n conversationKey = getStateKey('contact', msg.conversation_key);\n }\n\n if (conversationKey) {\n const timestamp = msg.received_at || Math.floor(Date.now() / 1000);\n const updated = setLastMessageTime(conversationKey, timestamp);\n setLastMessageTimes(updated);\n }\n }, []);\n\n return {\n unreadCounts,\n mentions,\n lastMessageTimes,\n incrementUnread,\n markAllRead,\n markConversationRead,\n trackNewMessage,\n };\n}\n","'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nconst getAsset = (type)=>{\n switch(type){\n case 'success':\n return SuccessIcon;\n case 'info':\n return InfoIcon;\n case 'warning':\n return WarningIcon;\n case 'error':\n return ErrorIcon;\n default:\n return null;\n }\n};\nconst bars = Array(12).fill(0);\nconst Loader = ({ visible, className })=>{\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: [\n 'sonner-loading-wrapper',\n className\n ].filter(Boolean).join(' '),\n \"data-visible\": visible\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-spinner\"\n }, bars.map((_, i)=>/*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-loading-bar\",\n key: `spinner-bar-${i}`\n }))));\n};\nconst SuccessIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",\n clipRule: \"evenodd\"\n}));\nconst WarningIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",\n clipRule: \"evenodd\"\n}));\nconst InfoIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",\n clipRule: \"evenodd\"\n}));\nconst ErrorIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",\n clipRule: \"evenodd\"\n}));\nconst CloseIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}, /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n}), /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n}));\n\nconst useIsDocumentHidden = ()=>{\n const [isDocumentHidden, setIsDocumentHidden] = React.useState(document.hidden);\n React.useEffect(()=>{\n const callback = ()=>{\n setIsDocumentHidden(document.hidden);\n };\n document.addEventListener('visibilitychange', callback);\n return ()=>window.removeEventListener('visibilitychange', callback);\n }, []);\n return isDocumentHidden;\n};\n\nlet toastsCounter = 1;\nclass Observer {\n constructor(){\n // We use arrow functions to maintain the correct `this` reference\n this.subscribe = (subscriber)=>{\n this.subscribers.push(subscriber);\n return ()=>{\n const index = this.subscribers.indexOf(subscriber);\n this.subscribers.splice(index, 1);\n };\n };\n this.publish = (data)=>{\n this.subscribers.forEach((subscriber)=>subscriber(data));\n };\n this.addToast = (data)=>{\n this.publish(data);\n this.toasts = [\n ...this.toasts,\n data\n ];\n };\n this.create = (data)=>{\n var _data_id;\n const { message, ...rest } = data;\n const id = typeof (data == null ? void 0 : data.id) === 'number' || ((_data_id = data.id) == null ? void 0 : _data_id.length) > 0 ? data.id : toastsCounter++;\n const alreadyExists = this.toasts.find((toast)=>{\n return toast.id === id;\n });\n const dismissible = data.dismissible === undefined ? true : data.dismissible;\n if (this.dismissedToasts.has(id)) {\n this.dismissedToasts.delete(id);\n }\n if (alreadyExists) {\n this.toasts = this.toasts.map((toast)=>{\n if (toast.id === id) {\n this.publish({\n ...toast,\n ...data,\n id,\n title: message\n });\n return {\n ...toast,\n ...data,\n id,\n dismissible,\n title: message\n };\n }\n return toast;\n });\n } else {\n this.addToast({\n title: message,\n ...rest,\n dismissible,\n id\n });\n }\n return id;\n };\n this.dismiss = (id)=>{\n if (id) {\n this.dismissedToasts.add(id);\n requestAnimationFrame(()=>this.subscribers.forEach((subscriber)=>subscriber({\n id,\n dismiss: true\n })));\n } else {\n this.toasts.forEach((toast)=>{\n this.subscribers.forEach((subscriber)=>subscriber({\n id: toast.id,\n dismiss: true\n }));\n });\n }\n return id;\n };\n this.message = (message, data)=>{\n return this.create({\n ...data,\n message\n });\n };\n this.error = (message, data)=>{\n return this.create({\n ...data,\n message,\n type: 'error'\n });\n };\n this.success = (message, data)=>{\n return this.create({\n ...data,\n type: 'success',\n message\n });\n };\n this.info = (message, data)=>{\n return this.create({\n ...data,\n type: 'info',\n message\n });\n };\n this.warning = (message, data)=>{\n return this.create({\n ...data,\n type: 'warning',\n message\n });\n };\n this.loading = (message, data)=>{\n return this.create({\n ...data,\n type: 'loading',\n message\n });\n };\n this.promise = (promise, data)=>{\n if (!data) {\n // Nothing to show\n return;\n }\n let id = undefined;\n if (data.loading !== undefined) {\n id = this.create({\n ...data,\n promise,\n type: 'loading',\n message: data.loading,\n description: typeof data.description !== 'function' ? data.description : undefined\n });\n }\n const p = Promise.resolve(promise instanceof Function ? promise() : promise);\n let shouldDismiss = id !== undefined;\n let result;\n const originalPromise = p.then(async (response)=>{\n result = [\n 'resolve',\n response\n ];\n const isReactElementResponse = React.isValidElement(response);\n if (isReactElementResponse) {\n shouldDismiss = false;\n this.create({\n id,\n type: 'default',\n message: response\n });\n } else if (isHttpResponse(response) && !response.ok) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n const description = typeof data.description === 'function' ? await data.description(`HTTP error! status: ${response.status}`) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (response instanceof Error) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(response) : data.error;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (data.success !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.success === 'function' ? await data.success(response) : data.success;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'success',\n description,\n ...toastSettings\n });\n }\n }).catch(async (error)=>{\n result = [\n 'reject',\n error\n ];\n if (data.error !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(error) : data.error;\n const description = typeof data.description === 'function' ? await data.description(error) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n }\n }).finally(()=>{\n if (shouldDismiss) {\n // Toast is still in load state (and will be indefinitely — dismiss it)\n this.dismiss(id);\n id = undefined;\n }\n data.finally == null ? void 0 : data.finally.call(data);\n });\n const unwrap = ()=>new Promise((resolve, reject)=>originalPromise.then(()=>result[0] === 'reject' ? reject(result[1]) : resolve(result[1])).catch(reject));\n if (typeof id !== 'string' && typeof id !== 'number') {\n // cannot Object.assign on undefined\n return {\n unwrap\n };\n } else {\n return Object.assign(id, {\n unwrap\n });\n }\n };\n this.custom = (jsx, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n this.create({\n jsx: jsx(id),\n id,\n ...data\n });\n return id;\n };\n this.getActiveToasts = ()=>{\n return this.toasts.filter((toast)=>!this.dismissedToasts.has(toast.id));\n };\n this.subscribers = [];\n this.toasts = [];\n this.dismissedToasts = new Set();\n }\n}\nconst ToastState = new Observer();\n// bind this to the toast function\nconst toastFunction = (message, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n ToastState.addToast({\n title: message,\n ...data,\n id\n });\n return id;\n};\nconst isHttpResponse = (data)=>{\n return data && typeof data === 'object' && 'ok' in data && typeof data.ok === 'boolean' && 'status' in data && typeof data.status === 'number';\n};\nconst basicToast = toastFunction;\nconst getHistory = ()=>ToastState.toasts;\nconst getToasts = ()=>ToastState.getActiveToasts();\n// We use `Object.assign` to maintain the correct types as we would lose them otherwise\nconst toast = Object.assign(basicToast, {\n success: ToastState.success,\n info: ToastState.info,\n warning: ToastState.warning,\n error: ToastState.error,\n custom: ToastState.custom,\n message: ToastState.message,\n promise: ToastState.promise,\n dismiss: ToastState.dismiss,\n loading: ToastState.loading\n}, {\n getHistory,\n getToasts\n});\n\n__insertCSS(\"[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\");\n\nfunction isAction(action) {\n return action.label !== undefined;\n}\n\n// Visible toasts amount\nconst VISIBLE_TOASTS_AMOUNT = 3;\n// Viewport padding\nconst VIEWPORT_OFFSET = '24px';\n// Mobile viewport padding\nconst MOBILE_VIEWPORT_OFFSET = '16px';\n// Default lifetime of a toasts (in ms)\nconst TOAST_LIFETIME = 4000;\n// Default toast width\nconst TOAST_WIDTH = 356;\n// Default gap between toasts\nconst GAP = 14;\n// Threshold to dismiss a toast\nconst SWIPE_THRESHOLD = 45;\n// Equal to exit animation duration\nconst TIME_BEFORE_UNMOUNT = 200;\nfunction cn(...classes) {\n return classes.filter(Boolean).join(' ');\n}\nfunction getDefaultSwipeDirections(position) {\n const [y, x] = position.split('-');\n const directions = [];\n if (y) {\n directions.push(y);\n }\n if (x) {\n directions.push(x);\n }\n return directions;\n}\nconst Toast = (props)=>{\n var _toast_classNames, _toast_classNames1, _toast_classNames2, _toast_classNames3, _toast_classNames4, _toast_classNames5, _toast_classNames6, _toast_classNames7, _toast_classNames8;\n const { invert: ToasterInvert, toast, unstyled, interacting, setHeights, visibleToasts, heights, index, toasts, expanded, removeToast, defaultRichColors, closeButton: closeButtonFromToaster, style, cancelButtonStyle, actionButtonStyle, className = '', descriptionClassName = '', duration: durationFromToaster, position, gap, expandByDefault, classNames, icons, closeButtonAriaLabel = 'Close toast' } = props;\n const [swipeDirection, setSwipeDirection] = React.useState(null);\n const [swipeOutDirection, setSwipeOutDirection] = React.useState(null);\n const [mounted, setMounted] = React.useState(false);\n const [removed, setRemoved] = React.useState(false);\n const [swiping, setSwiping] = React.useState(false);\n const [swipeOut, setSwipeOut] = React.useState(false);\n const [isSwiped, setIsSwiped] = React.useState(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n const [initialHeight, setInitialHeight] = React.useState(0);\n const remainingTime = React.useRef(toast.duration || durationFromToaster || TOAST_LIFETIME);\n const dragStartTime = React.useRef(null);\n const toastRef = React.useRef(null);\n const isFront = index === 0;\n const isVisible = index + 1 <= visibleToasts;\n const toastType = toast.type;\n const dismissible = toast.dismissible !== false;\n const toastClassname = toast.className || '';\n const toastDescriptionClassname = toast.descriptionClassName || '';\n // Height index is used to calculate the offset as it gets updated before the toast array, which means we can calculate the new layout faster.\n const heightIndex = React.useMemo(()=>heights.findIndex((height)=>height.toastId === toast.id) || 0, [\n heights,\n toast.id\n ]);\n const closeButton = React.useMemo(()=>{\n var _toast_closeButton;\n return (_toast_closeButton = toast.closeButton) != null ? _toast_closeButton : closeButtonFromToaster;\n }, [\n toast.closeButton,\n closeButtonFromToaster\n ]);\n const duration = React.useMemo(()=>toast.duration || durationFromToaster || TOAST_LIFETIME, [\n toast.duration,\n durationFromToaster\n ]);\n const closeTimerStartTimeRef = React.useRef(0);\n const offset = React.useRef(0);\n const lastCloseTimerStartTimeRef = React.useRef(0);\n const pointerStartRef = React.useRef(null);\n const [y, x] = position.split('-');\n const toastsHeightBefore = React.useMemo(()=>{\n return heights.reduce((prev, curr, reducerIndex)=>{\n // Calculate offset up until current toast\n if (reducerIndex >= heightIndex) {\n return prev;\n }\n return prev + curr.height;\n }, 0);\n }, [\n heights,\n heightIndex\n ]);\n const isDocumentHidden = useIsDocumentHidden();\n const invert = toast.invert || ToasterInvert;\n const disabled = toastType === 'loading';\n offset.current = React.useMemo(()=>heightIndex * gap + toastsHeightBefore, [\n heightIndex,\n toastsHeightBefore\n ]);\n React.useEffect(()=>{\n remainingTime.current = duration;\n }, [\n duration\n ]);\n React.useEffect(()=>{\n // Trigger enter animation without using CSS animation\n setMounted(true);\n }, []);\n React.useEffect(()=>{\n const toastNode = toastRef.current;\n if (toastNode) {\n const height = toastNode.getBoundingClientRect().height;\n // Add toast height to heights array after the toast is mounted\n setInitialHeight(height);\n setHeights((h)=>[\n {\n toastId: toast.id,\n height,\n position: toast.position\n },\n ...h\n ]);\n return ()=>setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n }\n }, [\n setHeights,\n toast.id\n ]);\n React.useLayoutEffect(()=>{\n // Keep height up to date with the content in case it updates\n if (!mounted) return;\n const toastNode = toastRef.current;\n const originalHeight = toastNode.style.height;\n toastNode.style.height = 'auto';\n const newHeight = toastNode.getBoundingClientRect().height;\n toastNode.style.height = originalHeight;\n setInitialHeight(newHeight);\n setHeights((heights)=>{\n const alreadyExists = heights.find((height)=>height.toastId === toast.id);\n if (!alreadyExists) {\n return [\n {\n toastId: toast.id,\n height: newHeight,\n position: toast.position\n },\n ...heights\n ];\n } else {\n return heights.map((height)=>height.toastId === toast.id ? {\n ...height,\n height: newHeight\n } : height);\n }\n });\n }, [\n mounted,\n toast.title,\n toast.description,\n setHeights,\n toast.id,\n toast.jsx,\n toast.action,\n toast.cancel\n ]);\n const deleteToast = React.useCallback(()=>{\n // Save the offset for the exit swipe animation\n setRemoved(true);\n setOffsetBeforeRemove(offset.current);\n setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n setTimeout(()=>{\n removeToast(toast);\n }, TIME_BEFORE_UNMOUNT);\n }, [\n toast,\n removeToast,\n setHeights,\n offset\n ]);\n React.useEffect(()=>{\n if (toast.promise && toastType === 'loading' || toast.duration === Infinity || toast.type === 'loading') return;\n let timeoutId;\n // Pause the timer on each hover\n const pauseTimer = ()=>{\n if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {\n // Get the elapsed time since the timer started\n const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;\n remainingTime.current = remainingTime.current - elapsedTime;\n }\n lastCloseTimerStartTimeRef.current = new Date().getTime();\n };\n const startTimer = ()=>{\n // setTimeout(, Infinity) behaves as if the delay is 0.\n // As a result, the toast would be closed immediately, giving the appearance that it was never rendered.\n // See: https://github.com/denysdovhan/wtfjs?tab=readme-ov-file#an-infinite-timeout\n if (remainingTime.current === Infinity) return;\n closeTimerStartTimeRef.current = new Date().getTime();\n // Let the toast know it has started\n timeoutId = setTimeout(()=>{\n toast.onAutoClose == null ? void 0 : toast.onAutoClose.call(toast, toast);\n deleteToast();\n }, remainingTime.current);\n };\n if (expanded || interacting || isDocumentHidden) {\n pauseTimer();\n } else {\n startTimer();\n }\n return ()=>clearTimeout(timeoutId);\n }, [\n expanded,\n interacting,\n toast,\n toastType,\n isDocumentHidden,\n deleteToast\n ]);\n React.useEffect(()=>{\n if (toast.delete) {\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n }\n }, [\n deleteToast,\n toast.delete\n ]);\n function getLoadingIcon() {\n var _toast_classNames;\n if (icons == null ? void 0 : icons.loading) {\n var _toast_classNames1;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1.loader, 'sonner-loader'),\n \"data-visible\": toastType === 'loading'\n }, icons.loading);\n }\n return /*#__PURE__*/ React.createElement(Loader, {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.loader),\n visible: toastType === 'loading'\n });\n }\n const icon = toast.icon || (icons == null ? void 0 : icons[toastType]) || getAsset(toastType);\n var _toast_richColors, _icons_close;\n return /*#__PURE__*/ React.createElement(\"li\", {\n tabIndex: 0,\n ref: toastRef,\n className: cn(className, toastClassname, classNames == null ? void 0 : classNames.toast, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.toast, classNames == null ? void 0 : classNames.default, classNames == null ? void 0 : classNames[toastType], toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1[toastType]),\n \"data-sonner-toast\": \"\",\n \"data-rich-colors\": (_toast_richColors = toast.richColors) != null ? _toast_richColors : defaultRichColors,\n \"data-styled\": !Boolean(toast.jsx || toast.unstyled || unstyled),\n \"data-mounted\": mounted,\n \"data-promise\": Boolean(toast.promise),\n \"data-swiped\": isSwiped,\n \"data-removed\": removed,\n \"data-visible\": isVisible,\n \"data-y-position\": y,\n \"data-x-position\": x,\n \"data-index\": index,\n \"data-front\": isFront,\n \"data-swiping\": swiping,\n \"data-dismissible\": dismissible,\n \"data-type\": toastType,\n \"data-invert\": invert,\n \"data-swipe-out\": swipeOut,\n \"data-swipe-direction\": swipeOutDirection,\n \"data-expanded\": Boolean(expanded || expandByDefault && mounted),\n \"data-testid\": toast.testId,\n style: {\n '--index': index,\n '--toasts-before': index,\n '--z-index': toasts.length - index,\n '--offset': `${removed ? offsetBeforeRemove : offset.current}px`,\n '--initial-height': expandByDefault ? 'auto' : `${initialHeight}px`,\n ...style,\n ...toast.style\n },\n onDragEnd: ()=>{\n setSwiping(false);\n setSwipeDirection(null);\n pointerStartRef.current = null;\n },\n onPointerDown: (event)=>{\n if (event.button === 2) return; // Return early on right click\n if (disabled || !dismissible) return;\n dragStartTime.current = new Date();\n setOffsetBeforeRemove(offset.current);\n // Ensure we maintain correct pointer capture even when going outside of the toast (e.g. when swiping)\n event.target.setPointerCapture(event.pointerId);\n if (event.target.tagName === 'BUTTON') return;\n setSwiping(true);\n pointerStartRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n },\n onPointerUp: ()=>{\n var _toastRef_current, _toastRef_current1, _dragStartTime_current;\n if (swipeOut || !dismissible) return;\n pointerStartRef.current = null;\n const swipeAmountX = Number(((_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.getPropertyValue('--swipe-amount-x').replace('px', '')) || 0);\n const swipeAmountY = Number(((_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.getPropertyValue('--swipe-amount-y').replace('px', '')) || 0);\n const timeTaken = new Date().getTime() - ((_dragStartTime_current = dragStartTime.current) == null ? void 0 : _dragStartTime_current.getTime());\n const swipeAmount = swipeDirection === 'x' ? swipeAmountX : swipeAmountY;\n const velocity = Math.abs(swipeAmount) / timeTaken;\n if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11) {\n setOffsetBeforeRemove(offset.current);\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n if (swipeDirection === 'x') {\n setSwipeOutDirection(swipeAmountX > 0 ? 'right' : 'left');\n } else {\n setSwipeOutDirection(swipeAmountY > 0 ? 'down' : 'up');\n }\n deleteToast();\n setSwipeOut(true);\n return;\n } else {\n var _toastRef_current2, _toastRef_current3;\n (_toastRef_current2 = toastRef.current) == null ? void 0 : _toastRef_current2.style.setProperty('--swipe-amount-x', `0px`);\n (_toastRef_current3 = toastRef.current) == null ? void 0 : _toastRef_current3.style.setProperty('--swipe-amount-y', `0px`);\n }\n setIsSwiped(false);\n setSwiping(false);\n setSwipeDirection(null);\n },\n onPointerMove: (event)=>{\n var _window_getSelection, // Apply transform using both x and y values\n _toastRef_current, _toastRef_current1;\n if (!pointerStartRef.current || !dismissible) return;\n const isHighlighted = ((_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString().length) > 0;\n if (isHighlighted) return;\n const yDelta = event.clientY - pointerStartRef.current.y;\n const xDelta = event.clientX - pointerStartRef.current.x;\n var _props_swipeDirections;\n const swipeDirections = (_props_swipeDirections = props.swipeDirections) != null ? _props_swipeDirections : getDefaultSwipeDirections(position);\n // Determine swipe direction if not already locked\n if (!swipeDirection && (Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1)) {\n setSwipeDirection(Math.abs(xDelta) > Math.abs(yDelta) ? 'x' : 'y');\n }\n let swipeAmount = {\n x: 0,\n y: 0\n };\n const getDampening = (delta)=>{\n const factor = Math.abs(delta) / 20;\n return 1 / (1.5 + factor);\n };\n // Only apply swipe in the locked direction\n if (swipeDirection === 'y') {\n // Handle vertical swipes\n if (swipeDirections.includes('top') || swipeDirections.includes('bottom')) {\n if (swipeDirections.includes('top') && yDelta < 0 || swipeDirections.includes('bottom') && yDelta > 0) {\n swipeAmount.y = yDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = yDelta * getDampening(yDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.y = Math.abs(dampenedDelta) < Math.abs(yDelta) ? dampenedDelta : yDelta;\n }\n }\n } else if (swipeDirection === 'x') {\n // Handle horizontal swipes\n if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n if (swipeDirections.includes('left') && xDelta < 0 || swipeDirections.includes('right') && xDelta > 0) {\n swipeAmount.x = xDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = xDelta * getDampening(xDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.x = Math.abs(dampenedDelta) < Math.abs(xDelta) ? dampenedDelta : xDelta;\n }\n }\n }\n if (Math.abs(swipeAmount.x) > 0 || Math.abs(swipeAmount.y) > 0) {\n setIsSwiped(true);\n }\n (_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.setProperty('--swipe-amount-x', `${swipeAmount.x}px`);\n (_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.setProperty('--swipe-amount-y', `${swipeAmount.y}px`);\n }\n }, closeButton && !toast.jsx && toastType !== 'loading' ? /*#__PURE__*/ React.createElement(\"button\", {\n \"aria-label\": closeButtonAriaLabel,\n \"data-disabled\": disabled,\n \"data-close-button\": true,\n onClick: disabled || !dismissible ? ()=>{} : ()=>{\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n },\n className: cn(classNames == null ? void 0 : classNames.closeButton, toast == null ? void 0 : (_toast_classNames2 = toast.classNames) == null ? void 0 : _toast_classNames2.closeButton)\n }, (_icons_close = icons == null ? void 0 : icons.close) != null ? _icons_close : CloseIcon) : null, (toastType || toast.icon || toast.promise) && toast.icon !== null && ((icons == null ? void 0 : icons[toastType]) !== null || toast.icon) ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-icon\": \"\",\n className: cn(classNames == null ? void 0 : classNames.icon, toast == null ? void 0 : (_toast_classNames3 = toast.classNames) == null ? void 0 : _toast_classNames3.icon)\n }, toast.promise || toast.type === 'loading' && !toast.icon ? toast.icon || getLoadingIcon() : null, toast.type !== 'loading' ? icon : null) : null, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-content\": \"\",\n className: cn(classNames == null ? void 0 : classNames.content, toast == null ? void 0 : (_toast_classNames4 = toast.classNames) == null ? void 0 : _toast_classNames4.content)\n }, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-title\": \"\",\n className: cn(classNames == null ? void 0 : classNames.title, toast == null ? void 0 : (_toast_classNames5 = toast.classNames) == null ? void 0 : _toast_classNames5.title)\n }, toast.jsx ? toast.jsx : typeof toast.title === 'function' ? toast.title() : toast.title), toast.description ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-description\": \"\",\n className: cn(descriptionClassName, toastDescriptionClassname, classNames == null ? void 0 : classNames.description, toast == null ? void 0 : (_toast_classNames6 = toast.classNames) == null ? void 0 : _toast_classNames6.description)\n }, typeof toast.description === 'function' ? toast.description() : toast.description) : null), /*#__PURE__*/ React.isValidElement(toast.cancel) ? toast.cancel : toast.cancel && isAction(toast.cancel) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-cancel\": true,\n style: toast.cancelButtonStyle || cancelButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.cancel)) return;\n if (!dismissible) return;\n toast.cancel.onClick == null ? void 0 : toast.cancel.onClick.call(toast.cancel, event);\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.cancelButton, toast == null ? void 0 : (_toast_classNames7 = toast.classNames) == null ? void 0 : _toast_classNames7.cancelButton)\n }, toast.cancel.label) : null, /*#__PURE__*/ React.isValidElement(toast.action) ? toast.action : toast.action && isAction(toast.action) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-action\": true,\n style: toast.actionButtonStyle || actionButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.action)) return;\n toast.action.onClick == null ? void 0 : toast.action.onClick.call(toast.action, event);\n if (event.defaultPrevented) return;\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.actionButton, toast == null ? void 0 : (_toast_classNames8 = toast.classNames) == null ? void 0 : _toast_classNames8.actionButton)\n }, toast.action.label) : null);\n};\nfunction getDocumentDirection() {\n if (typeof window === 'undefined') return 'ltr';\n if (typeof document === 'undefined') return 'ltr'; // For Fresh purpose\n const dirAttribute = document.documentElement.getAttribute('dir');\n if (dirAttribute === 'auto' || !dirAttribute) {\n return window.getComputedStyle(document.documentElement).direction;\n }\n return dirAttribute;\n}\nfunction assignOffset(defaultOffset, mobileOffset) {\n const styles = {};\n [\n defaultOffset,\n mobileOffset\n ].forEach((offset, index)=>{\n const isMobile = index === 1;\n const prefix = isMobile ? '--mobile-offset' : '--offset';\n const defaultValue = isMobile ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;\n function assignAll(offset) {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n styles[`${prefix}-${key}`] = typeof offset === 'number' ? `${offset}px` : offset;\n });\n }\n if (typeof offset === 'number' || typeof offset === 'string') {\n assignAll(offset);\n } else if (typeof offset === 'object') {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n if (offset[key] === undefined) {\n styles[`${prefix}-${key}`] = defaultValue;\n } else {\n styles[`${prefix}-${key}`] = typeof offset[key] === 'number' ? `${offset[key]}px` : offset[key];\n }\n });\n } else {\n assignAll(defaultValue);\n }\n });\n return styles;\n}\nfunction useSonner() {\n const [activeToasts, setActiveToasts] = React.useState([]);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>toasts.filter((t)=>t.id !== toast.id));\n });\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, []);\n return {\n toasts: activeToasts\n };\n}\nconst Toaster = /*#__PURE__*/ React.forwardRef(function Toaster(props, ref) {\n const { id, invert, position = 'bottom-right', hotkey = [\n 'altKey',\n 'KeyT'\n ], expand, closeButton, className, offset, mobileOffset, theme = 'light', richColors, duration, style, visibleToasts = VISIBLE_TOASTS_AMOUNT, toastOptions, dir = getDocumentDirection(), gap = GAP, icons, containerAriaLabel = 'Notifications' } = props;\n const [toasts, setToasts] = React.useState([]);\n const filteredToasts = React.useMemo(()=>{\n if (id) {\n return toasts.filter((toast)=>toast.toasterId === id);\n }\n return toasts.filter((toast)=>!toast.toasterId);\n }, [\n toasts,\n id\n ]);\n const possiblePositions = React.useMemo(()=>{\n return Array.from(new Set([\n position\n ].concat(filteredToasts.filter((toast)=>toast.position).map((toast)=>toast.position))));\n }, [\n filteredToasts,\n position\n ]);\n const [heights, setHeights] = React.useState([]);\n const [expanded, setExpanded] = React.useState(false);\n const [interacting, setInteracting] = React.useState(false);\n const [actualTheme, setActualTheme] = React.useState(theme !== 'system' ? theme : typeof window !== 'undefined' ? window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : 'light');\n const listRef = React.useRef(null);\n const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n const lastFocusedElementRef = React.useRef(null);\n const isFocusWithinRef = React.useRef(false);\n const removeToast = React.useCallback((toastToRemove)=>{\n setToasts((toasts)=>{\n var _toasts_find;\n if (!((_toasts_find = toasts.find((toast)=>toast.id === toastToRemove.id)) == null ? void 0 : _toasts_find.delete)) {\n ToastState.dismiss(toastToRemove.id);\n }\n return toasts.filter(({ id })=>id !== toastToRemove.id);\n });\n }, []);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n // Prevent batching of other state updates\n requestAnimationFrame(()=>{\n setToasts((toasts)=>toasts.map((t)=>t.id === toast.id ? {\n ...t,\n delete: true\n } : t));\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n if (theme !== 'system') {\n setActualTheme(theme);\n return;\n }\n if (theme === 'system') {\n // check if current preference is dark\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n // it's currently dark\n setActualTheme('dark');\n } else {\n // it's not dark\n setActualTheme('light');\n }\n }\n if (typeof window === 'undefined') return;\n const darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n try {\n // Chrome & Firefox\n darkMediaQuery.addEventListener('change', ({ matches })=>{\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n });\n } catch (error) {\n // Safari < 14\n darkMediaQuery.addListener(({ matches })=>{\n try {\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n }, [\n theme\n ]);\n React.useEffect(()=>{\n // Ensure expanded is always false when no toasts are present / only one left\n if (toasts.length <= 1) {\n setExpanded(false);\n }\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n const handleKeyDown = (event)=>{\n var _listRef_current;\n const isHotkeyPressed = hotkey.every((key)=>event[key] || event.code === key);\n if (isHotkeyPressed) {\n var _listRef_current1;\n setExpanded(true);\n (_listRef_current1 = listRef.current) == null ? void 0 : _listRef_current1.focus();\n }\n if (event.code === 'Escape' && (document.activeElement === listRef.current || ((_listRef_current = listRef.current) == null ? void 0 : _listRef_current.contains(document.activeElement)))) {\n setExpanded(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return ()=>document.removeEventListener('keydown', handleKeyDown);\n }, [\n hotkey\n ]);\n React.useEffect(()=>{\n if (listRef.current) {\n return ()=>{\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n isFocusWithinRef.current = false;\n }\n };\n }\n }, [\n listRef.current\n ]);\n return(// Remove item from normal navigation flow, only available via hotkey\n /*#__PURE__*/ React.createElement(\"section\", {\n ref: ref,\n \"aria-label\": `${containerAriaLabel} ${hotkeyLabel}`,\n tabIndex: -1,\n \"aria-live\": \"polite\",\n \"aria-relevant\": \"additions text\",\n \"aria-atomic\": \"false\",\n suppressHydrationWarning: true\n }, possiblePositions.map((position, index)=>{\n var _heights_;\n const [y, x] = position.split('-');\n if (!filteredToasts.length) return null;\n return /*#__PURE__*/ React.createElement(\"ol\", {\n key: position,\n dir: dir === 'auto' ? getDocumentDirection() : dir,\n tabIndex: -1,\n ref: listRef,\n className: className,\n \"data-sonner-toaster\": true,\n \"data-sonner-theme\": actualTheme,\n \"data-y-position\": y,\n \"data-x-position\": x,\n style: {\n '--front-toast-height': `${((_heights_ = heights[0]) == null ? void 0 : _heights_.height) || 0}px`,\n '--width': `${TOAST_WIDTH}px`,\n '--gap': `${gap}px`,\n ...style,\n ...assignOffset(offset, mobileOffset)\n },\n onBlur: (event)=>{\n if (isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget)) {\n isFocusWithinRef.current = false;\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n }\n }\n },\n onFocus: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n if (!isFocusWithinRef.current) {\n isFocusWithinRef.current = true;\n lastFocusedElementRef.current = event.relatedTarget;\n }\n },\n onMouseEnter: ()=>setExpanded(true),\n onMouseMove: ()=>setExpanded(true),\n onMouseLeave: ()=>{\n // Avoid setting expanded to false when interacting with a toast, e.g. swiping\n if (!interacting) {\n setExpanded(false);\n }\n },\n onDragEnd: ()=>setExpanded(false),\n onPointerDown: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n setInteracting(true);\n },\n onPointerUp: ()=>setInteracting(false)\n }, filteredToasts.filter((toast)=>!toast.position && index === 0 || toast.position === position).map((toast, index)=>{\n var _toastOptions_duration, _toastOptions_closeButton;\n return /*#__PURE__*/ React.createElement(Toast, {\n key: toast.id,\n icons: icons,\n index: index,\n toast: toast,\n defaultRichColors: richColors,\n duration: (_toastOptions_duration = toastOptions == null ? void 0 : toastOptions.duration) != null ? _toastOptions_duration : duration,\n className: toastOptions == null ? void 0 : toastOptions.className,\n descriptionClassName: toastOptions == null ? void 0 : toastOptions.descriptionClassName,\n invert: invert,\n visibleToasts: visibleToasts,\n closeButton: (_toastOptions_closeButton = toastOptions == null ? void 0 : toastOptions.closeButton) != null ? _toastOptions_closeButton : closeButton,\n interacting: interacting,\n position: position,\n style: toastOptions == null ? void 0 : toastOptions.style,\n unstyled: toastOptions == null ? void 0 : toastOptions.unstyled,\n classNames: toastOptions == null ? void 0 : toastOptions.classNames,\n cancelButtonStyle: toastOptions == null ? void 0 : toastOptions.cancelButtonStyle,\n actionButtonStyle: toastOptions == null ? void 0 : toastOptions.actionButtonStyle,\n closeButtonAriaLabel: toastOptions == null ? void 0 : toastOptions.closeButtonAriaLabel,\n removeToast: removeToast,\n toasts: filteredToasts.filter((t)=>t.position == toast.position),\n heights: heights.filter((h)=>h.position == toast.position),\n setHeights: setHeights,\n expandByDefault: expand,\n gap: gap,\n expanded: expanded,\n swipeDirections: props.swipeDirections\n });\n }));\n })));\n});\n\nexport { Toaster, toast, useSonner };\n","import { Toaster as Sonner, toast } from 'sonner';\n\ntype ToasterProps = React.ComponentProps;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n return (\n \n );\n};\n\nexport { Toaster, toast };\n","import { useState, useCallback, useEffect, useRef } from 'react';\nimport { toast } from '../components/ui/sonner';\nimport { api } from '../api';\nimport type { Conversation, Message } from '../types';\n\nconst MESSAGE_PAGE_SIZE = 200;\n\n// Generate a key for deduplicating messages by content\nexport function getMessageContentKey(msg: Message): string {\n return `${msg.type}-${msg.conversation_key}-${msg.text}-${msg.sender_timestamp}`;\n}\n\nexport interface UseConversationMessagesResult {\n messages: Message[];\n messagesLoading: boolean;\n loadingOlder: boolean;\n hasOlderMessages: boolean;\n setMessages: React.Dispatch>;\n fetchMessages: (showLoading?: boolean) => Promise;\n fetchOlderMessages: () => Promise;\n addMessageIfNew: (msg: Message) => boolean;\n updateMessageAck: (messageId: number, ackCount: number) => void;\n}\n\nexport function useConversationMessages(\n activeConversation: Conversation | null\n): UseConversationMessagesResult {\n const [messages, setMessages] = useState([]);\n const [messagesLoading, setMessagesLoading] = useState(false);\n const [loadingOlder, setLoadingOlder] = useState(false);\n const [hasOlderMessages, setHasOlderMessages] = useState(false);\n\n // Track seen message content for deduplication\n const seenMessageContent = useRef>(new Set());\n\n // Fetch messages for active conversation\n const fetchMessages = useCallback(\n async (showLoading = false) => {\n if (!activeConversation || activeConversation.type === 'raw') {\n setMessages([]);\n setHasOlderMessages(false);\n return;\n }\n\n if (showLoading) {\n setMessagesLoading(true);\n // Clear messages first so MessageList resets scroll state for new conversation\n setMessages([]);\n }\n try {\n const data = await api.getMessages({\n type: activeConversation.type === 'channel' ? 'CHAN' : 'PRIV',\n conversation_key: activeConversation.id,\n limit: MESSAGE_PAGE_SIZE,\n });\n setMessages(data);\n // Track seen content for new messages\n seenMessageContent.current.clear();\n for (const msg of data) {\n seenMessageContent.current.add(getMessageContentKey(msg));\n }\n // If we got a full page, there might be more\n setHasOlderMessages(data.length >= MESSAGE_PAGE_SIZE);\n } catch (err) {\n console.error('Failed to fetch messages:', err);\n toast.error('Failed to load messages', {\n description: err instanceof Error ? err.message : 'Check your connection',\n });\n } finally {\n if (showLoading) {\n setMessagesLoading(false);\n }\n }\n },\n [activeConversation]\n );\n\n // Fetch older messages (pagination)\n const fetchOlderMessages = useCallback(async () => {\n if (\n !activeConversation ||\n activeConversation.type === 'raw' ||\n loadingOlder ||\n !hasOlderMessages\n )\n return;\n\n setLoadingOlder(true);\n try {\n const data = await api.getMessages({\n type: activeConversation.type === 'channel' ? 'CHAN' : 'PRIV',\n conversation_key: activeConversation.id,\n limit: MESSAGE_PAGE_SIZE,\n offset: messages.length,\n });\n\n if (data.length > 0) {\n // Prepend older messages (they come sorted DESC, so older are at the end)\n setMessages((prev) => [...prev, ...data]);\n // Track seen content\n for (const msg of data) {\n seenMessageContent.current.add(getMessageContentKey(msg));\n }\n }\n // If we got less than a full page, no more messages\n setHasOlderMessages(data.length >= MESSAGE_PAGE_SIZE);\n } catch (err) {\n console.error('Failed to fetch older messages:', err);\n toast.error('Failed to load older messages', {\n description: err instanceof Error ? err.message : 'Check your connection',\n });\n } finally {\n setLoadingOlder(false);\n }\n }, [activeConversation, loadingOlder, hasOlderMessages, messages.length]);\n\n // Fetch messages when conversation changes\n useEffect(() => {\n fetchMessages(true);\n }, [fetchMessages]);\n\n // Add a message if it's new (deduplication)\n // Returns true if the message was added, false if it was a duplicate\n const addMessageIfNew = useCallback((msg: Message): boolean => {\n const contentKey = getMessageContentKey(msg);\n if (seenMessageContent.current.has(contentKey)) {\n console.debug('Duplicate message content ignored:', contentKey.slice(0, 50));\n return false;\n }\n seenMessageContent.current.add(contentKey);\n\n // Limit set size to prevent memory issues (keep last 500)\n if (seenMessageContent.current.size > 1000) {\n const entries = Array.from(seenMessageContent.current);\n seenMessageContent.current = new Set(entries.slice(-500));\n }\n\n setMessages((prev) => {\n if (prev.some((m) => m.id === msg.id)) {\n return prev;\n }\n return [...prev, msg];\n });\n\n return true;\n }, []);\n\n // Update a message's ack count\n const updateMessageAck = useCallback((messageId: number, ackCount: number) => {\n setMessages((prev) => {\n const idx = prev.findIndex((m) => m.id === messageId);\n if (idx >= 0) {\n const updated = [...prev];\n updated[idx] = { ...prev[idx], acked: ackCount };\n return updated;\n }\n return prev;\n });\n }, []);\n\n return {\n messages,\n messagesLoading,\n loadingOlder,\n hasOlderMessages,\n setMessages,\n fetchMessages,\n fetchOlderMessages,\n addMessageIfNew,\n updateMessageAck,\n };\n}\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M4 5h16\", key: \"1tepv9\" }],\n [\"path\", { d: \"M4 12h16\", key: \"1lakjw\" }],\n [\"path\", { d: \"M4 19h16\", key: \"1djgab\" }]\n];\nconst Menu = createLucideIcon(\"menu\", __iconNode);\n\nexport { __iconNode, Menu as default };\n//# sourceMappingURL=menu.js.map\n","/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import { useState } from 'react';\nimport { Menu } from 'lucide-react';\nimport type { HealthStatus, RadioConfig } from '../types';\nimport { api } from '../api';\nimport { toast } from './ui/sonner';\n\ninterface StatusBarProps {\n health: HealthStatus | null;\n config: RadioConfig | null;\n onSettingsClick: () => void;\n onMenuClick?: () => void;\n}\n\nexport function StatusBar({ health, config, onSettingsClick, onMenuClick }: StatusBarProps) {\n const connected = health?.radio_connected ?? false;\n const [reconnecting, setReconnecting] = useState(false);\n\n const handleReconnect = async () => {\n setReconnecting(true);\n try {\n const result = await api.reconnectRadio();\n if (result.connected) {\n toast.success('Reconnected', { description: result.message });\n }\n } catch (err) {\n toast.error('Reconnection failed', {\n description: err instanceof Error ? err.message : 'Check radio connection and power',\n });\n } finally {\n setReconnecting(false);\n }\n };\n\n return (\n
\n {/* Mobile menu button - only visible on small screens */}\n {onMenuClick && (\n \n \n \n )}\n\n

RemoteTerm

\n\n
\n
\n \n {connected ? 'Connected' : 'Disconnected'}\n \n
\n\n {config && (\n
\n {config.name || 'Unnamed'}\n
\n )}\n\n {/* Spacer to push buttons right on mobile */}\n
\n\n {!connected && (\n \n {reconnecting ? 'Reconnecting...' : 'Reconnect'}\n \n )}\n \n \n 🔧\n {' '}\n Radio & Config\n \n
\n );\n}\n","/**\n * Generate consistent profile \"images\" for contacts.\n *\n * Uses the contact's public key to generate a consistent background color,\n * and extracts initials or emoji from the name for display.\n * Repeaters (type=2) always show 🛜 with a gray background.\n */\n\n// Contact type constants (matches backend)\nexport const CONTACT_TYPE_REPEATER = 2;\n\n// Repeater avatar styling\nconst REPEATER_AVATAR = {\n text: '🛜',\n background: '#444444',\n textColor: '#ffffff',\n};\n\n// Simple hash function for strings\nfunction hashString(str: string): number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return Math.abs(hash);\n}\n\n// Regex to match emoji (covers most common emoji ranges)\nconst emojiRegex =\n /[\\u{1F300}-\\u{1F9FF}]|[\\u{2600}-\\u{26FF}]|[\\u{2700}-\\u{27BF}]|[\\u{1F600}-\\u{1F64F}]|[\\u{1F680}-\\u{1F6FF}]|[\\u{1F1E0}-\\u{1F1FF}]/u;\n\n/**\n * Extract display characters from a contact name.\n * Priority:\n * 1. First emoji in the name\n * 2. First letter + first letter after first space (initials)\n * 3. First letter only\n */\nexport function getAvatarText(name: string | null, publicKey: string): string {\n if (!name) {\n // Use first 2 chars of public key as fallback\n return publicKey.slice(0, 2).toUpperCase();\n }\n\n // Check for emoji first\n const emojiMatch = name.match(emojiRegex);\n if (emojiMatch) {\n return emojiMatch[0];\n }\n\n // Find first letter\n const letters = name.match(/[a-zA-Z]/g);\n if (!letters || letters.length === 0) {\n // No letters, use first 2 chars of public key\n return publicKey.slice(0, 2).toUpperCase();\n }\n\n // Check for space - get initials\n const spaceIndex = name.indexOf(' ');\n if (spaceIndex !== -1) {\n const firstLetter = letters[0];\n // Find first letter after the space\n const afterSpace = name.slice(spaceIndex + 1).match(/[a-zA-Z]/);\n if (afterSpace) {\n return (firstLetter + afterSpace[0]).toUpperCase();\n }\n }\n\n // Single letter\n return letters[0].toUpperCase();\n}\n\n/**\n * Generate a consistent HSL color from a public key.\n * Uses saturation and lightness ranges that work well for backgrounds.\n */\nexport function getAvatarColor(publicKey: string): {\n background: string;\n text: string;\n} {\n const hash = hashString(publicKey);\n\n // Use hash to generate hue (0-360)\n const hue = hash % 360;\n\n // Use different bits of hash for saturation variation (50-80%)\n const saturation = 50 + ((hash >> 8) % 30);\n\n // Lightness in a range that allows readable text (35-55%)\n const lightness = 35 + ((hash >> 16) % 20);\n\n const background = `hsl(${hue}, ${saturation}%, ${lightness}%)`;\n\n // Calculate perceived luminance to determine text color\n // For HSL, we can approximate: if lightness < 50%, use white text\n // We'll use a slightly lower threshold since saturated colors appear darker\n const textColor = lightness < 45 ? '#ffffff' : '#000000';\n\n return { background, text: textColor };\n}\n\n/**\n * Get all avatar properties for a contact.\n * Repeaters (type=2) always get a special gray avatar with 🛜.\n */\nexport function getContactAvatar(\n name: string | null,\n publicKey: string,\n contactType?: number\n): {\n text: string;\n background: string;\n textColor: string;\n} {\n // Repeaters always get the repeater avatar\n if (contactType === CONTACT_TYPE_REPEATER) {\n return REPEATER_AVATAR;\n }\n\n const text = getAvatarText(name, publicKey);\n const colors = getAvatarColor(publicKey);\n\n return {\n text,\n background: colors.background,\n textColor: colors.text,\n };\n}\n","import { getContactAvatar } from '../utils/contactAvatar';\n\ninterface ContactAvatarProps {\n name: string | null;\n publicKey: string;\n size?: number;\n contactType?: number;\n}\n\nexport function ContactAvatar({ name, publicKey, size = 28, contactType }: ContactAvatarProps) {\n const avatar = getContactAvatar(name, publicKey, contactType);\n\n return (\n \n {avatar.text}\n
\n );\n}\n","/**\n * localStorage utilities for managing favorite conversations.\n *\n * Favorites are stored client-side and displayed in a dedicated section\n * above channels in the sidebar, always sorted by most recent message.\n */\n\nconst FAVORITES_KEY = 'remoteterm-favorites';\n\nexport interface Favorite {\n type: 'channel' | 'contact';\n id: string; // channel key or contact public key\n}\n\n/**\n * Load favorites from localStorage\n */\nexport function loadFavorites(): Favorite[] {\n try {\n const stored = localStorage.getItem(FAVORITES_KEY);\n return stored ? JSON.parse(stored) : [];\n } catch {\n return [];\n }\n}\n\n/**\n * Save favorites to localStorage\n */\nfunction saveFavorites(favorites: Favorite[]): void {\n try {\n localStorage.setItem(FAVORITES_KEY, JSON.stringify(favorites));\n } catch {\n // localStorage might be full or disabled\n }\n}\n\n/**\n * Add a conversation to favorites\n */\nexport function addFavorite(type: 'channel' | 'contact', id: string): Favorite[] {\n const favorites = loadFavorites();\n // Check if already favorited\n if (favorites.some((f) => f.type === type && f.id === id)) {\n return favorites;\n }\n const updated = [...favorites, { type, id }];\n saveFavorites(updated);\n return updated;\n}\n\n/**\n * Remove a conversation from favorites\n */\nexport function removeFavorite(type: 'channel' | 'contact', id: string): Favorite[] {\n const favorites = loadFavorites();\n const updated = favorites.filter((f) => !(f.type === type && f.id === id));\n saveFavorites(updated);\n return updated;\n}\n\n/**\n * Check if a conversation is favorited\n */\nexport function isFavorite(\n favorites: Favorite[],\n type: 'channel' | 'contact',\n id: string\n): boolean {\n return favorites.some((f) => f.type === type && f.id === id);\n}\n\n/**\n * Toggle a conversation's favorite status\n */\nexport function toggleFavorite(type: 'channel' | 'contact', id: string): Favorite[] {\n const favorites = loadFavorites();\n if (favorites.some((f) => f.type === type && f.id === id)) {\n return removeFavorite(type, id);\n }\n return addFavorite(type, id);\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Input = React.forwardRef>(\n ({ className, type, ...props }, ref) => {\n return (\n \n );\n }\n);\nInput.displayName = 'Input';\n\nexport { Input };\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-10 px-4 py-2',\n sm: 'h-9 rounded-md px-3',\n lg: 'h-11 rounded-md px-8',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes, VariantProps {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return (\n \n );\n }\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","import { useState } from 'react';\nimport type { Contact, Channel, Conversation } from '../types';\nimport { getStateKey, type ConversationTimes } from '../utils/conversationState';\nimport { getPubkeyPrefix, getContactDisplayName } from '../utils/pubkey';\nimport { ContactAvatar } from './ContactAvatar';\nimport { CONTACT_TYPE_REPEATER } from '../utils/contactAvatar';\nimport { isFavorite, type Favorite } from '../utils/favorites';\nimport { UNREAD_FETCH_LIMIT } from '../api';\nimport { Input } from './ui/input';\nimport { Button } from './ui/button';\nimport { cn } from '@/lib/utils';\n\ntype SortOrder = 'alpha' | 'recent';\n\ninterface SidebarProps {\n contacts: Contact[];\n channels: Channel[];\n activeConversation: Conversation | null;\n onSelectConversation: (conversation: Conversation) => void;\n onNewMessage: () => void;\n lastMessageTimes: ConversationTimes;\n unreadCounts: Record;\n /** Tracks which conversations have unread messages that mention the user */\n mentions: Record;\n showCracker: boolean;\n crackerRunning: boolean;\n onToggleCracker: () => void;\n onMarkAllRead: () => void;\n favorites: Favorite[];\n}\n\n/** Format unread count, showing \"X+\" if at the fetch limit (indicating there may be more) */\nfunction formatUnreadCount(count: number): string {\n return count >= UNREAD_FETCH_LIMIT ? `${count}+` : `${count}`;\n}\n\n// Load sort preference from localStorage (default to 'recent')\nfunction loadSortOrder(): SortOrder {\n try {\n const stored = localStorage.getItem('remoteterm-sortOrder');\n return stored === 'alpha' ? 'alpha' : 'recent';\n } catch {\n return 'recent';\n }\n}\n\n// Save sort preference to localStorage\nfunction saveSortOrder(order: SortOrder): void {\n try {\n localStorage.setItem('remoteterm-sortOrder', order);\n } catch {\n // localStorage might be full or disabled\n }\n}\n\nexport function Sidebar({\n contacts,\n channels,\n activeConversation,\n onSelectConversation,\n onNewMessage,\n lastMessageTimes,\n unreadCounts,\n mentions,\n showCracker,\n crackerRunning,\n onToggleCracker,\n onMarkAllRead,\n favorites,\n}: SidebarProps) {\n const [sortOrder, setSortOrder] = useState(loadSortOrder);\n const [searchQuery, setSearchQuery] = useState('');\n\n const handleSortToggle = () => {\n const newOrder = sortOrder === 'alpha' ? 'recent' : 'alpha';\n setSortOrder(newOrder);\n saveSortOrder(newOrder);\n };\n\n const handleSelectConversation = (conversation: Conversation) => {\n setSearchQuery('');\n onSelectConversation(conversation);\n };\n\n const isActive = (type: 'contact' | 'channel' | 'raw' | 'map', id: string) =>\n activeConversation?.type === type && activeConversation?.id === id;\n\n // Get unread count for a conversation\n const getUnreadCount = (type: 'channel' | 'contact', id: string): number => {\n const key = getStateKey(type, id);\n return unreadCounts[key] || 0;\n };\n\n // Check if a conversation has a mention\n const hasMention = (type: 'channel' | 'contact', id: string): boolean => {\n const key = getStateKey(type, id);\n return mentions[key] || false;\n };\n\n const getLastMessageTime = (type: 'channel' | 'contact', id: string) => {\n const key = getStateKey(type, id);\n return lastMessageTimes[key] || 0;\n };\n\n // Deduplicate channels by name, keeping the first (lowest index)\n const uniqueChannels = channels.reduce((acc, channel) => {\n if (!acc.some((c) => c.name === channel.name)) {\n acc.push(channel);\n }\n return acc;\n }, []);\n\n // Deduplicate contacts by 12-char prefix, preferring ones with names\n // Also filter out any contacts with empty public keys\n const uniqueContacts = contacts\n .filter((c) => c.public_key && c.public_key.length > 0)\n .sort((a, b) => {\n // Sort contacts with names first\n if (a.name && !b.name) return -1;\n if (!a.name && b.name) return 1;\n return (a.name || '').localeCompare(b.name || '');\n })\n .reduce((acc, contact) => {\n const prefix = getPubkeyPrefix(contact.public_key);\n if (!acc.some((c) => getPubkeyPrefix(c.public_key) === prefix)) {\n acc.push(contact);\n }\n return acc;\n }, []);\n\n // Sort channels based on sort order, with Public always first\n const sortedChannels = [...uniqueChannels].sort((a, b) => {\n // Public channel always sorts to the top\n if (a.name === 'Public') return -1;\n if (b.name === 'Public') return 1;\n\n if (sortOrder === 'recent') {\n const timeA = getLastMessageTime('channel', a.key);\n const timeB = getLastMessageTime('channel', b.key);\n // If both have messages, sort by most recent first\n if (timeA && timeB) return timeB - timeA;\n // Items with messages come before items without\n if (timeA && !timeB) return -1;\n if (!timeA && timeB) return 1;\n // Fall back to alpha for items without messages\n }\n return a.name.localeCompare(b.name);\n });\n\n // Sort contacts: non-repeaters first (by recent or alpha), then repeaters (always alpha)\n const sortedContacts = [...uniqueContacts].sort((a, b) => {\n const aIsRepeater = a.type === CONTACT_TYPE_REPEATER;\n const bIsRepeater = b.type === CONTACT_TYPE_REPEATER;\n\n // Repeaters always go to the bottom\n if (aIsRepeater && !bIsRepeater) return 1;\n if (!aIsRepeater && bIsRepeater) return -1;\n\n // Both repeaters: always sort alphabetically\n if (aIsRepeater && bIsRepeater) {\n return (a.name || a.public_key).localeCompare(b.name || b.public_key);\n }\n\n // Both non-repeaters: use selected sort order\n if (sortOrder === 'recent') {\n const timeA = getLastMessageTime('contact', a.public_key);\n const timeB = getLastMessageTime('contact', b.public_key);\n // If both have messages, sort by most recent first\n if (timeA && timeB) return timeB - timeA;\n // Items with messages come before items without\n if (timeA && !timeB) return -1;\n if (!timeA && timeB) return 1;\n // Fall back to alpha for items without messages\n }\n return (a.name || a.public_key).localeCompare(b.name || b.public_key);\n });\n\n // Filter by search query\n const query = searchQuery.toLowerCase().trim();\n const filteredChannels = query\n ? sortedChannels.filter((c) => c.name.toLowerCase().includes(query))\n : sortedChannels;\n const filteredContacts = query\n ? sortedContacts.filter(\n (c) => c.name?.toLowerCase().includes(query) || c.public_key.toLowerCase().includes(query)\n )\n : sortedContacts;\n\n // Separate favorites from regular items\n const favoriteChannels = filteredChannels.filter((c) => isFavorite(favorites, 'channel', c.key));\n const favoriteContacts = filteredContacts.filter((c) =>\n isFavorite(favorites, 'contact', c.public_key)\n );\n const nonFavoriteChannels = filteredChannels.filter(\n (c) => !isFavorite(favorites, 'channel', c.key)\n );\n const nonFavoriteContacts = filteredContacts.filter(\n (c) => !isFavorite(favorites, 'contact', c.public_key)\n );\n\n // Combine and sort favorites by most recent message (always recent order)\n type FavoriteItem = { type: 'channel'; channel: Channel } | { type: 'contact'; contact: Contact };\n\n const favoriteItems: FavoriteItem[] = [\n ...favoriteChannels.map((channel) => ({ type: 'channel' as const, channel })),\n ...favoriteContacts.map((contact) => ({ type: 'contact' as const, contact })),\n ].sort((a, b) => {\n const timeA =\n a.type === 'channel'\n ? getLastMessageTime('channel', a.channel.key)\n : getLastMessageTime('contact', a.contact.public_key);\n const timeB =\n b.type === 'channel'\n ? getLastMessageTime('channel', b.channel.key)\n : getLastMessageTime('contact', b.contact.public_key);\n // Sort by most recent first\n if (timeA && timeB) return timeB - timeA;\n if (timeA && !timeB) return -1;\n if (!timeA && timeB) return 1;\n // Fall back to name comparison\n const nameA = a.type === 'channel' ? a.channel.name : a.contact.name || a.contact.public_key;\n const nameB = b.type === 'channel' ? b.channel.name : b.contact.name || b.contact.public_key;\n return nameA.localeCompare(nameB);\n });\n\n return (\n
\n {/* Header */}\n
\n

Conversations

\n \n +\n \n
\n\n {/* Search */}\n
\n setSearchQuery(e.target.value)}\n className=\"h-8 text-sm pr-8\"\n />\n {searchQuery && (\n setSearchQuery('')}\n title=\"Clear search\"\n >\n ×\n \n )}\n
\n\n {/* List */}\n
\n {/* Raw Packet Feed */}\n {!query && (\n \n handleSelectConversation({\n type: 'raw',\n id: 'raw',\n name: 'Raw Packet Feed',\n })\n }\n >\n 📡\n Packet Feed\n
\n )}\n\n {/* Node Map */}\n {!query && (\n \n handleSelectConversation({\n type: 'map',\n id: 'map',\n name: 'Node Map',\n })\n }\n >\n 🗺️\n Node Map\n
\n )}\n\n {/* Cracker Toggle */}\n {!query && (\n \n 🔓\n \n {showCracker ? 'Hide' : 'Show'} Cracker\n \n ({crackerRunning ? 'running' : 'stopped'})\n \n \n
\n )}\n\n {/* Mark All Read */}\n {!query && Object.keys(unreadCounts).length > 0 && (\n \n \n Mark all as read\n \n )}\n\n {/* Favorites */}\n {favoriteItems.length > 0 && (\n <>\n
\n Favorites\n
\n {favoriteItems.map((item) => {\n if (item.type === 'channel') {\n const channel = item.channel;\n const unreadCount = getUnreadCount('channel', channel.key);\n const isMention = hasMention('channel', channel.key);\n return (\n 0 && '[&_.name]:font-bold [&_.name]:text-foreground'\n )}\n onClick={() =>\n handleSelectConversation({\n type: 'channel',\n id: channel.key,\n name: channel.name,\n })\n }\n >\n #\n {channel.name}\n {unreadCount > 0 && (\n \n {formatUnreadCount(unreadCount)}\n \n )}\n \n );\n } else {\n const contact = item.contact;\n const unreadCount = getUnreadCount('contact', contact.public_key);\n const isMention = hasMention('contact', contact.public_key);\n return (\n 0 && '[&_.name]:font-bold [&_.name]:text-foreground'\n )}\n onClick={() =>\n handleSelectConversation({\n type: 'contact',\n id: contact.public_key,\n name: getContactDisplayName(contact.name, contact.public_key),\n })\n }\n >\n \n \n {getContactDisplayName(contact.name, contact.public_key)}\n \n {unreadCount > 0 && (\n \n {formatUnreadCount(unreadCount)}\n \n )}\n \n );\n }\n })}\n \n )}\n\n {/* Channels */}\n {nonFavoriteChannels.length > 0 && (\n <>\n
\n Channels\n \n {sortOrder === 'alpha' ? 'A-Z' : '⏱'}\n \n
\n {nonFavoriteChannels.map((channel) => {\n const unreadCount = getUnreadCount('channel', channel.key);\n const isMention = hasMention('channel', channel.key);\n return (\n 0 && '[&_.name]:font-bold [&_.name]:text-foreground'\n )}\n onClick={() =>\n handleSelectConversation({\n type: 'channel',\n id: channel.key,\n name: channel.name,\n })\n }\n >\n #\n {channel.name}\n {unreadCount > 0 && (\n \n {formatUnreadCount(unreadCount)}\n \n )}\n \n );\n })}\n \n )}\n\n {/* Contacts */}\n {nonFavoriteContacts.length > 0 && (\n <>\n
\n Contacts\n {nonFavoriteChannels.length === 0 && (\n \n {sortOrder === 'alpha' ? 'A-Z' : '⏱'}\n \n )}\n
\n {nonFavoriteContacts.map((contact) => {\n const unreadCount = getUnreadCount('contact', contact.public_key);\n const isMention = hasMention('contact', contact.public_key);\n return (\n 0 && '[&_.name]:font-bold [&_.name]:text-foreground'\n )}\n onClick={() =>\n handleSelectConversation({\n type: 'contact',\n id: contact.public_key,\n name: getContactDisplayName(contact.name, contact.public_key),\n })\n }\n >\n \n \n {getContactDisplayName(contact.name, contact.public_key)}\n \n {unreadCount > 0 && (\n \n {formatUnreadCount(unreadCount)}\n \n )}\n \n );\n })}\n \n )}\n\n {/* Empty state */}\n {nonFavoriteContacts.length === 0 &&\n nonFavoriteChannels.length === 0 &&\n favoriteItems.length === 0 && (\n
\n {query ? 'No matches found' : 'No conversations yet'}\n
\n )}\n \n \n );\n}\n","/**\n * Parse sender from channel message text.\n * Channel messages have format \"sender: message\".\n */\nexport function parseSenderFromText(text: string): { sender: string | null; content: string } {\n const colonIndex = text.indexOf(': ');\n if (colonIndex > 0 && colonIndex < 50) {\n const potentialSender = text.substring(0, colonIndex);\n // Check for colon in potential sender (would indicate it's not a simple name)\n if (!potentialSender.includes(':')) {\n return {\n sender: potentialSender,\n content: text.substring(colonIndex + 2),\n };\n }\n }\n return { sender: null, content: text };\n}\n\n/**\n * Format a Unix timestamp to a time string.\n * Shows date for messages not from today.\n */\nexport function formatTime(timestamp: number): string {\n const date = new Date(timestamp * 1000);\n const now = new Date();\n const isToday = date.toDateString() === now.toDateString();\n\n const time = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n\n if (isToday) {\n return time;\n }\n\n // Show short date for older messages\n const dateStr = date.toLocaleDateString([], { month: 'short', day: 'numeric' });\n return `${dateStr} ${time}`;\n}\n","import { useEffect, useLayoutEffect, useRef, useCallback, useState, type ReactNode } from 'react';\nimport type { Contact, Message } from '../types';\nimport { CONTACT_TYPE_REPEATER } from '../types';\nimport { formatTime, parseSenderFromText } from '../utils/messageParser';\nimport { pubkeysMatch } from '../utils/pubkey';\nimport { ContactAvatar } from './ContactAvatar';\nimport { cn } from '@/lib/utils';\n\ninterface MessageListProps {\n messages: Message[];\n contacts: Contact[];\n loading: boolean;\n loadingOlder?: boolean;\n hasOlderMessages?: boolean;\n onSenderClick?: (sender: string) => void;\n onLoadOlder?: () => void;\n radioName?: string;\n}\n\n// Helper to render text with highlighted @[Name] mentions\nfunction renderTextWithMentions(text: string, radioName?: string): ReactNode {\n if (!radioName) return text;\n\n const mentionPattern = /@\\[([^\\]]+)\\]/g;\n const parts: ReactNode[] = [];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n let keyIndex = 0;\n\n while ((match = mentionPattern.exec(text)) !== null) {\n // Add text before the match\n if (match.index > lastIndex) {\n parts.push(text.slice(lastIndex, match.index));\n }\n\n const mentionedName = match[1];\n const isOwnMention = mentionedName === radioName;\n\n parts.push(\n \n @[{mentionedName}]\n \n );\n\n lastIndex = match.index + match[0].length;\n }\n\n // Add remaining text after last match\n if (lastIndex < text.length) {\n parts.push(text.slice(lastIndex));\n }\n\n return parts.length > 0 ? parts : text;\n}\n\nexport function MessageList({\n messages,\n contacts,\n loading,\n loadingOlder = false,\n hasOlderMessages = false,\n onSenderClick,\n onLoadOlder,\n radioName,\n}: MessageListProps) {\n const listRef = useRef(null);\n const prevMessagesLengthRef = useRef(0);\n const isInitialLoadRef = useRef(true);\n const [showScrollToBottom, setShowScrollToBottom] = useState(false);\n\n // Capture scroll state in the scroll handler BEFORE any state updates\n const scrollStateRef = useRef({\n scrollTop: 0,\n scrollHeight: 0,\n clientHeight: 0,\n wasNearTop: false,\n wasNearBottom: true, // Default to true so initial messages scroll to bottom\n });\n\n // Handle scroll position AFTER render\n useLayoutEffect(() => {\n if (!listRef.current) return;\n\n const list = listRef.current;\n const messagesAdded = messages.length - prevMessagesLengthRef.current;\n\n if (isInitialLoadRef.current && messages.length > 0) {\n // Initial load - scroll to bottom\n list.scrollTop = list.scrollHeight;\n isInitialLoadRef.current = false;\n } else if (messagesAdded > 0 && prevMessagesLengthRef.current > 0) {\n // Messages were added - use scroll state captured before the update\n const scrollHeightDiff = list.scrollHeight - scrollStateRef.current.scrollHeight;\n\n if (scrollStateRef.current.wasNearTop && scrollHeightDiff > 0) {\n // User was near top (loading older) - preserve position by adding the height diff\n list.scrollTop = scrollStateRef.current.scrollTop + scrollHeightDiff;\n } else if (scrollStateRef.current.wasNearBottom) {\n // User was near bottom - scroll to bottom for new messages (including sent)\n list.scrollTop = list.scrollHeight;\n }\n }\n\n prevMessagesLengthRef.current = messages.length;\n }, [messages]);\n\n // Reset initial load flag when conversation changes (messages becomes empty then filled)\n useEffect(() => {\n if (messages.length === 0) {\n isInitialLoadRef.current = true;\n prevMessagesLengthRef.current = 0;\n scrollStateRef.current = {\n scrollTop: 0,\n scrollHeight: 0,\n clientHeight: 0,\n wasNearTop: false,\n wasNearBottom: true,\n };\n }\n }, [messages.length]);\n\n // Handle scroll - capture state and detect when user is near top/bottom\n const handleScroll = useCallback(() => {\n if (!listRef.current) return;\n\n const { scrollTop, scrollHeight, clientHeight } = listRef.current;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n\n // Always capture current scroll state (needed for scroll preservation)\n scrollStateRef.current = {\n scrollTop,\n scrollHeight,\n clientHeight,\n wasNearTop: scrollTop < 150,\n wasNearBottom: distanceFromBottom < 100,\n };\n\n // Show scroll-to-bottom button when not near the bottom (more than 100px away)\n setShowScrollToBottom(distanceFromBottom > 100);\n\n if (!onLoadOlder || loadingOlder || !hasOlderMessages) return;\n\n // Trigger load when within 100px of top\n if (scrollTop < 100) {\n onLoadOlder();\n }\n }, [onLoadOlder, loadingOlder, hasOlderMessages]);\n\n // Scroll to bottom handler\n const scrollToBottom = useCallback(() => {\n if (listRef.current) {\n listRef.current.scrollTop = listRef.current.scrollHeight;\n }\n }, []);\n\n // Look up contact by public key or prefix\n const getContact = (conversationKey: string | null): Contact | null => {\n if (!conversationKey) return null;\n return contacts.find((c) => pubkeysMatch(c.public_key, conversationKey)) || null;\n };\n\n // Look up contact by name (for channel messages where we parse sender from text)\n const getContactByName = (name: string): Contact | null => {\n return contacts.find((c) => c.name === name) || null;\n };\n\n if (loading) {\n return (\n
\n Loading messages...\n
\n );\n }\n\n if (messages.length === 0) {\n return (\n
\n No messages yet\n
\n );\n }\n\n // Sort messages by received_at ascending (oldest first)\n // Note: Deduplication is handled by useConversationMessages.addMessageIfNew()\n // and the database UNIQUE constraint on (type, conversation_key, text, sender_timestamp)\n const sortedMessages = [...messages].sort((a, b) => a.received_at - b.received_at);\n\n // Helper to get a unique sender key for grouping messages\n const getSenderKey = (msg: Message, sender: string | null): string => {\n if (msg.outgoing) return '__outgoing__';\n if (msg.type === 'PRIV' && msg.conversation_key) return msg.conversation_key;\n return sender || '__unknown__';\n };\n\n return (\n
\n \n {loadingOlder && (\n
\n Loading older messages...\n
\n )}\n {!loadingOlder && hasOlderMessages && (\n
\n Scroll up for older messages\n
\n )}\n {sortedMessages.map((msg, index) => {\n // For DMs, look up contact; for channel messages, use parsed sender\n const contact = msg.type === 'PRIV' ? getContact(msg.conversation_key) : null;\n const isRepeater = contact?.type === CONTACT_TYPE_REPEATER;\n\n // Skip sender parsing for repeater messages (CLI responses often have colons)\n const { sender, content } = isRepeater\n ? { sender: null, content: msg.text }\n : parseSenderFromText(msg.text);\n const displaySender = msg.outgoing\n ? 'You'\n : contact?.name || sender || msg.conversation_key?.slice(0, 8) || 'Unknown';\n\n const canClickSender = !msg.outgoing && onSenderClick && displaySender !== 'Unknown';\n\n // Determine if we should show avatar (first message in a chunk from same sender)\n const currentSenderKey = getSenderKey(msg, sender);\n const prevMsg = sortedMessages[index - 1];\n const prevSenderKey = prevMsg\n ? getSenderKey(prevMsg, parseSenderFromText(prevMsg.text).sender)\n : null;\n const showAvatar = !msg.outgoing && currentSenderKey !== prevSenderKey;\n const isFirstMessage = index === 0;\n\n // Get avatar info for incoming messages\n let avatarName: string | null = null;\n let avatarKey: string = '';\n if (!msg.outgoing) {\n if (msg.type === 'PRIV' && msg.conversation_key) {\n // DM: use conversation_key (sender's public key)\n avatarName = contact?.name || null;\n avatarKey = msg.conversation_key;\n } else if (sender) {\n // Channel message: try to find contact by name, or use sender name as pseudo-key\n const senderContact = getContactByName(sender);\n avatarName = sender;\n avatarKey = senderContact?.public_key || `name:${sender}`;\n }\n }\n\n return (\n \n {!msg.outgoing && (\n
\n {showAvatar && avatarKey && (\n \n )}\n
\n )}\n \n {showAvatar && (\n
\n {canClickSender ? (\n onSenderClick(displaySender)}\n title={`Mention ${displaySender}`}\n >\n {displaySender}\n \n ) : (\n displaySender\n )}\n \n {formatTime(msg.sender_timestamp || msg.received_at)}\n \n
\n )}\n
\n {content.split('\\n').map((line, i, arr) => (\n \n {renderTextWithMentions(line, radioName)}\n {i < arr.length - 1 &&
}\n
\n ))}\n {!showAvatar && (\n \n {formatTime(msg.sender_timestamp || msg.received_at)}\n \n )}\n {msg.outgoing && (msg.acked > 0 ? ` ✓${msg.acked > 1 ? msg.acked : ''}` : ' ?')}\n
\n
\n \n );\n })}\n \n\n {/* Scroll to bottom button */}\n {showScrollToBottom && (\n \n \n \n \n \n )}\n \n );\n}\n","import {\n useState,\n useCallback,\n useImperativeHandle,\n forwardRef,\n useRef,\n useMemo,\n type FormEvent,\n type KeyboardEvent,\n} from 'react';\nimport { Input } from './ui/input';\nimport { Button } from './ui/button';\nimport { toast } from './ui/sonner';\nimport { cn } from '@/lib/utils';\n\n// MeshCore message size limits (empirically determined from LoRa packet constraints)\n// Direct delivery allows ~156 bytes; multi-hop requires buffer for path growth.\n// Channels include \"sender: \" prefix in the encrypted payload.\nconst DM_HARD_LIMIT = 156; // Max for direct delivery\nconst DM_WARNING_THRESHOLD = 140; // Conservative for multi-hop\nconst CHANNEL_HARD_LIMIT = 156; // Base limit before sender overhead\nconst CHANNEL_WARNING_THRESHOLD = 120; // Conservative for multi-hop\nconst CHANNEL_DANGER_BUFFER = 8; // Red zone starts this many chars before hard limit\n\ninterface MessageInputProps {\n onSend: (text: string) => Promise;\n disabled: boolean;\n placeholder?: string;\n /** When true, input becomes password field for repeater telemetry */\n isRepeaterMode?: boolean;\n /** Conversation type for character limit calculation */\n conversationType?: 'contact' | 'channel' | 'raw';\n /** Sender name (radio name) for channel message limit calculation */\n senderName?: string;\n}\n\ntype LimitState = 'normal' | 'warning' | 'danger' | 'error';\n\nexport interface MessageInputHandle {\n appendText: (text: string) => void;\n}\n\nexport const MessageInput = forwardRef(function MessageInput(\n { onSend, disabled, placeholder, isRepeaterMode, conversationType, senderName },\n ref\n) {\n const [text, setText] = useState('');\n const [sending, setSending] = useState(false);\n const inputRef = useRef(null);\n\n useImperativeHandle(ref, () => ({\n appendText: (appendedText: string) => {\n setText((prev) => prev + appendedText);\n // Focus the input after appending\n inputRef.current?.focus();\n },\n }));\n\n // Calculate character limits based on conversation type\n const limits = useMemo(() => {\n if (conversationType === 'contact') {\n return {\n warningAt: DM_WARNING_THRESHOLD,\n dangerAt: DM_HARD_LIMIT, // Same as hard limit for DMs (no intermediate red zone)\n hardLimit: DM_HARD_LIMIT,\n };\n } else if (conversationType === 'channel') {\n // Channel hard limit = 156 - senderName.length - 2 (for \": \" separator)\n const nameLen = senderName?.length ?? 10;\n const hardLimit = Math.max(1, CHANNEL_HARD_LIMIT - nameLen - 2);\n return {\n warningAt: CHANNEL_WARNING_THRESHOLD,\n dangerAt: Math.max(1, hardLimit - CHANNEL_DANGER_BUFFER),\n hardLimit,\n };\n }\n return null; // Raw/other - no limits\n }, [conversationType, senderName]);\n\n // Determine current limit state\n const { limitState, warningMessage } = useMemo((): {\n limitState: LimitState;\n warningMessage: string | null;\n } => {\n if (!limits) return { limitState: 'normal', warningMessage: null };\n\n const len = text.length;\n if (len >= limits.hardLimit) {\n return { limitState: 'error', warningMessage: 'likely truncated by radio' };\n }\n if (len >= limits.dangerAt) {\n return { limitState: 'danger', warningMessage: 'may impact multi-repeater hop delivery' };\n }\n if (len >= limits.warningAt) {\n return { limitState: 'warning', warningMessage: 'may impact multi-repeater hop delivery' };\n }\n return { limitState: 'normal', warningMessage: null };\n }, [text.length, limits]);\n\n const remaining = limits ? limits.hardLimit - text.length : 0;\n\n const handleSubmit = useCallback(\n async (e: FormEvent) => {\n e.preventDefault();\n const trimmed = text.trim();\n\n // For repeater mode, empty password means guest login\n if (isRepeaterMode) {\n if (sending || disabled) return;\n setSending(true);\n try {\n await onSend(trimmed);\n setText('');\n } catch (err) {\n console.error('Failed to request telemetry:', err);\n toast.error('Failed to request telemetry', {\n description: err instanceof Error ? err.message : 'Check radio connection',\n });\n return;\n } finally {\n setSending(false);\n }\n // Refocus after React re-enables the input (now in CLI command mode)\n setTimeout(() => inputRef.current?.focus(), 0);\n } else {\n if (!trimmed || sending || disabled) return;\n setSending(true);\n try {\n await onSend(trimmed);\n setText('');\n } catch (err) {\n console.error('Failed to send message:', err);\n toast.error('Failed to send message', {\n description: err instanceof Error ? err.message : 'Check radio connection',\n });\n return;\n } finally {\n setSending(false);\n }\n // Refocus after React re-enables the input\n setTimeout(() => inputRef.current?.focus(), 0);\n }\n },\n [text, sending, disabled, onSend, isRepeaterMode]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSubmit(e as unknown as FormEvent);\n }\n },\n [handleSubmit]\n );\n\n // For repeater mode, always allow submit (empty = guest login)\n const canSubmit = isRepeaterMode ? true : text.trim().length > 0;\n\n // Show character counter for messages (not repeater mode or raw)\n const showCharCounter = !isRepeaterMode && limits !== null;\n\n return (\n
\n
\n setText(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={\n placeholder ||\n (isRepeaterMode ? 'Enter password for admin login...' : 'Type a message...')\n }\n disabled={disabled || sending}\n className=\"flex-1 min-w-0\"\n />\n \n {sending\n ? isRepeaterMode\n ? 'Logging in...'\n : 'Sending...'\n : isRepeaterMode\n ? text.trim()\n ? 'Log in with password'\n : 'Log in as guest/use repeater ACLs'\n : 'Send'}\n \n
\n {showCharCounter && (\n
\n \n {text.length}/{limits!.hardLimit}\n {remaining < 0 && ` (${remaining})`}\n \n {warningMessage && (\n \n — {warningMessage}\n \n )}\n
\n )}\n
\n );\n});\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return
...
\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes) => (\n
\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes) => (\n \n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n);\n\nconst Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, ...props }, ref) => (\n \n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n disabled,\n setChecked,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(\n CheckboxProviderImpl,\n {\n scope: __scopeCheckbox,\n ...context,\n children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n }\n );\n}\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = React.forwardRef(\n ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener(\"reset\", reset);\n return () => form.removeEventListener(\"reset\", reset);\n }\n }, [control, setChecked]);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nCheckboxTrigger.displayName = TRIGGER_NAME;\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n return /* @__PURE__ */ jsx(\n CheckboxProvider,\n {\n __scopeCheckbox,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n CheckboxTrigger,\n {\n ...checkboxProps,\n ref: forwardedRef,\n __scopeCheckbox\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n CheckboxBubbleInput,\n {\n __scopeCheckbox\n }\n )\n ] })\n }\n );\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n )\n }\n );\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = React.forwardRef(\n ({ __scopeCheckbox, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Checkbox,\n CheckboxIndicator,\n CheckboxIndicator as Indicator,\n Checkbox as Root,\n createCheckboxScope,\n CheckboxBubbleInput as unstable_BubbleInput,\n CheckboxBubbleInput as unstable_CheckboxBubbleInput,\n CheckboxProvider as unstable_CheckboxProvider,\n CheckboxTrigger as unstable_CheckboxTrigger,\n CheckboxProvider as unstable_Provider,\n CheckboxTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst Checkbox = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import { useState, useRef } from 'react';\nimport type { Contact, Conversation } from '../types';\nimport { getContactDisplayName } from '../utils/pubkey';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n} from './ui/dialog';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from './ui/tabs';\nimport { Input } from './ui/input';\nimport { Label } from './ui/label';\nimport { Checkbox } from './ui/checkbox';\nimport { Button } from './ui/button';\n\ntype Tab = 'existing' | 'new-contact' | 'new-room' | 'hashtag';\n\ninterface NewMessageModalProps {\n open: boolean;\n contacts: Contact[];\n undecryptedCount: number;\n onClose: () => void;\n onSelectConversation: (conversation: Conversation) => void;\n onCreateContact: (name: string, publicKey: string, tryHistorical: boolean) => Promise;\n onCreateChannel: (name: string, key: string, tryHistorical: boolean) => Promise;\n onCreateHashtagChannel: (name: string, tryHistorical: boolean) => Promise;\n}\n\nexport function NewMessageModal({\n open,\n contacts,\n undecryptedCount,\n onClose,\n onSelectConversation,\n onCreateContact,\n onCreateChannel,\n onCreateHashtagChannel,\n}: NewMessageModalProps) {\n const [tab, setTab] = useState('existing');\n const [name, setName] = useState('');\n const [contactKey, setContactKey] = useState('');\n const [roomKey, setRoomKey] = useState('');\n const [tryHistorical, setTryHistorical] = useState(false);\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const hashtagInputRef = useRef(null);\n\n const handleCreate = async () => {\n setError('');\n setLoading(true);\n\n try {\n if (tab === 'new-contact') {\n if (!name.trim() || !contactKey.trim()) {\n setError('Name and public key are required');\n return;\n }\n await onCreateContact(name.trim(), contactKey.trim(), tryHistorical);\n onSelectConversation({\n type: 'contact',\n id: contactKey.trim(),\n name: name.trim(),\n });\n } else if (tab === 'new-room') {\n if (!name.trim() || !roomKey.trim()) {\n setError('Room name and key are required');\n return;\n }\n await onCreateChannel(name.trim(), roomKey.trim(), tryHistorical);\n } else if (tab === 'hashtag') {\n const channelName = name.trim();\n const validationError = validateHashtagName(channelName);\n if (validationError) {\n setError(validationError);\n return;\n }\n await onCreateHashtagChannel(`#${channelName}`, tryHistorical);\n }\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to create');\n } finally {\n setLoading(false);\n }\n };\n\n const validateHashtagName = (channelName: string): string | null => {\n if (!channelName) {\n return 'Channel name is required';\n }\n if (!/^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$/.test(channelName)) {\n return 'Use letters, numbers, and single dashes (no leading/trailing dashes)';\n }\n return null;\n };\n\n const handleCreateAndAddAnother = async () => {\n setError('');\n const channelName = name.trim();\n const validationError = validateHashtagName(channelName);\n if (validationError) {\n setError(validationError);\n return;\n }\n\n setLoading(true);\n try {\n await onCreateHashtagChannel(`#${channelName}`, tryHistorical);\n setName('');\n hashtagInputRef.current?.focus();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to create');\n } finally {\n setLoading(false);\n }\n };\n\n const showHistoricalOption = tab !== 'existing' && undecryptedCount > 0;\n\n return (\n !isOpen && onClose()}>\n \n \n New Conversation\n \n {tab === 'existing' && 'Select an existing contact to start a conversation'}\n {tab === 'new-contact' && 'Add a new contact by entering their name and public key'}\n {tab === 'new-room' && 'Create a private room with a shared encryption key'}\n {tab === 'hashtag' && 'Join a public hashtag channel'}\n \n \n\n setTab(v as Tab)} className=\"w-full\">\n \n Existing\n Contact\n Room\n Hashtag\n \n\n \n
\n {contacts.length === 0 ? (\n
No contacts available
\n ) : (\n contacts.map((contact) => (\n {\n onSelectConversation({\n type: 'contact',\n id: contact.public_key,\n name: getContactDisplayName(contact.name, contact.public_key),\n });\n onClose();\n }}\n >\n {getContactDisplayName(contact.name, contact.public_key)}\n
\n ))\n )}\n
\n \n\n \n
\n \n setName(e.target.value)}\n placeholder=\"Contact name\"\n />\n
\n
\n \n setContactKey(e.target.value)}\n placeholder=\"64-character hex public key\"\n />\n
\n
\n\n \n
\n \n setName(e.target.value)}\n placeholder=\"Room name\"\n />\n
\n
\n \n
\n setRoomKey(e.target.value)}\n placeholder=\"Pre-shared key (hex)\"\n className=\"flex-1\"\n />\n {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n const hex = Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n setRoomKey(hex);\n }}\n title=\"Generate random key\"\n >\n 🎲\n \n
\n
\n
\n\n \n
\n \n
\n #\n setName(e.target.value)}\n placeholder=\"channel-name\"\n className=\"flex-1\"\n />\n
\n
\n
\n \n\n {showHistoricalOption && (\n
\n
\n \n Try decrypting {undecryptedCount.toLocaleString()} stored packet\n {undecryptedCount !== 1 ? 's' : ''}\n \n setTryHistorical(checked === true)}\n />\n
\n {tryHistorical && (\n

\n Messages will stream in as they decrypt in the background\n

\n )}\n
\n )}\n\n {error &&
{error}
}\n\n \n \n {tab === 'hashtag' && (\n \n )}\n {tab !== 'existing' && (\n \n )}\n \n \n \n );\n}\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/lib/utils';\n\nconst Separator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n \n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground',\n {\n variants: {\n variant: {\n default: 'bg-background text-foreground',\n destructive:\n 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive',\n warning: 'border-yellow-500/50 bg-yellow-500/10 text-yellow-200 [&>svg]:text-yellow-500',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n
\n));\nAlert.displayName = 'Alert';\n\nconst AlertTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n )\n);\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n));\nAlertDescription.displayName = 'AlertDescription';\n\nexport { Alert, AlertTitle, AlertDescription };\n","import { useState, useEffect, useMemo } from 'react';\nimport type {\n AppSettings,\n AppSettingsUpdate,\n HealthStatus,\n RadioConfig,\n RadioConfigUpdate,\n} from '../types';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from './ui/dialog';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs';\nimport { Input } from './ui/input';\nimport { Label } from './ui/label';\nimport { Button } from './ui/button';\nimport { Separator } from './ui/separator';\nimport { Alert, AlertDescription } from './ui/alert';\nimport { toast } from './ui/sonner';\nimport { api } from '../api';\nimport { formatTime } from '../utils/messageParser';\n\n// Radio presets for common configurations\ninterface RadioPreset {\n name: string;\n freq: number;\n bw: number;\n sf: number;\n cr: number;\n}\n\nconst RADIO_PRESETS: RadioPreset[] = [\n { name: 'USA/Canada', freq: 910.525, bw: 62.5, sf: 7, cr: 5 },\n { name: 'Australia', freq: 915.8, bw: 250, sf: 10, cr: 5 },\n { name: 'Australia (narrow)', freq: 916.575, bw: 62.5, sf: 7, cr: 8 },\n { name: 'Australia SA, WA', freq: 923.125, bw: 62.5, sf: 8, cr: 8 },\n { name: 'Australia QLD', freq: 923.125, bw: 62.5, sf: 8, cr: 5 },\n { name: 'New Zealand', freq: 917.375, bw: 250, sf: 11, cr: 5 },\n { name: 'New Zealand (narrow)', freq: 917.375, bw: 62.5, sf: 7, cr: 5 },\n { name: 'EU/UK/Switzerland Long Range', freq: 869.525, bw: 250, sf: 11, cr: 5 },\n { name: 'EU/UK/Switzerland Medium Range', freq: 869.525, bw: 250, sf: 10, cr: 5 },\n { name: 'EU/UK/Switzerland Narrow', freq: 869.618, bw: 62.5, sf: 8, cr: 8 },\n { name: 'Czech Republic (Narrow)', freq: 869.432, bw: 62.5, sf: 7, cr: 5 },\n { name: 'EU 433MHz Long Range', freq: 433.65, bw: 250, sf: 11, cr: 5 },\n { name: 'Portugal 433MHz', freq: 433.375, bw: 62.5, sf: 9, cr: 6 },\n { name: 'Portugal 868MHz', freq: 869.618, bw: 62.5, sf: 7, cr: 6 },\n { name: 'Vietnam', freq: 920.25, bw: 250, sf: 11, cr: 5 },\n];\n\ninterface SettingsModalProps {\n open: boolean;\n config: RadioConfig | null;\n health: HealthStatus | null;\n appSettings: AppSettings | null;\n onClose: () => void;\n onSave: (update: RadioConfigUpdate) => Promise;\n onSaveAppSettings: (update: AppSettingsUpdate) => Promise;\n onSetPrivateKey: (key: string) => Promise;\n onReboot: () => Promise;\n onAdvertise: () => Promise;\n onHealthRefresh: () => Promise;\n}\n\nexport function SettingsModal({\n open,\n config,\n health,\n appSettings,\n onClose,\n onSave,\n onSaveAppSettings,\n onSetPrivateKey,\n onReboot,\n onAdvertise,\n onHealthRefresh,\n}: SettingsModalProps) {\n // Tab state\n type SettingsTab = 'radio' | 'identity' | 'serial' | 'database' | 'advertise';\n const [activeTab, setActiveTab] = useState('radio');\n\n // Radio config state\n const [name, setName] = useState('');\n const [lat, setLat] = useState('');\n const [lon, setLon] = useState('');\n const [txPower, setTxPower] = useState('');\n const [freq, setFreq] = useState('');\n const [bw, setBw] = useState('');\n const [sf, setSf] = useState('');\n const [cr, setCr] = useState('');\n const [privateKey, setPrivateKey] = useState('');\n const [maxRadioContacts, setMaxRadioContacts] = useState('');\n\n // Loading states\n const [loading, setLoading] = useState(false);\n const [rebooting, setRebooting] = useState(false);\n const [advertising, setAdvertising] = useState(false);\n const [gettingLocation, setGettingLocation] = useState(false);\n const [error, setError] = useState('');\n\n // Database maintenance state\n const [retentionDays, setRetentionDays] = useState('14');\n const [cleaning, setCleaning] = useState(false);\n\n useEffect(() => {\n if (config) {\n setName(config.name);\n setLat(String(config.lat));\n setLon(String(config.lon));\n setTxPower(String(config.tx_power));\n setFreq(String(config.radio.freq));\n setBw(String(config.radio.bw));\n setSf(String(config.radio.sf));\n setCr(String(config.radio.cr));\n }\n }, [config]);\n\n useEffect(() => {\n if (appSettings) {\n setMaxRadioContacts(String(appSettings.max_radio_contacts));\n }\n }, [appSettings]);\n\n // Detect current preset from form values\n const currentPreset = useMemo(() => {\n const freqNum = parseFloat(freq);\n const bwNum = parseFloat(bw);\n const sfNum = parseInt(sf, 10);\n const crNum = parseInt(cr, 10);\n\n for (const preset of RADIO_PRESETS) {\n if (\n preset.freq === freqNum &&\n preset.bw === bwNum &&\n preset.sf === sfNum &&\n preset.cr === crNum\n ) {\n return preset.name;\n }\n }\n return 'custom';\n }, [freq, bw, sf, cr]);\n\n const handlePresetChange = (presetName: string) => {\n if (presetName === 'custom') return;\n const preset = RADIO_PRESETS.find((p) => p.name === presetName);\n if (preset) {\n setFreq(String(preset.freq));\n setBw(String(preset.bw));\n setSf(String(preset.sf));\n setCr(String(preset.cr));\n }\n };\n\n const handleGetLocation = () => {\n if (!navigator.geolocation) {\n toast.error('Geolocation not supported', {\n description: 'Your browser does not support geolocation',\n });\n return;\n }\n\n setGettingLocation(true);\n navigator.geolocation.getCurrentPosition(\n (position) => {\n setLat(position.coords.latitude.toFixed(6));\n setLon(position.coords.longitude.toFixed(6));\n setGettingLocation(false);\n toast.success('Location updated');\n },\n (err) => {\n setGettingLocation(false);\n toast.error('Failed to get location', {\n description: err.message,\n });\n },\n { enableHighAccuracy: true, timeout: 10000 }\n );\n };\n\n const handleSaveRadioConfig = async () => {\n setError('');\n setLoading(true);\n\n try {\n const update: RadioConfigUpdate = {\n lat: parseFloat(lat),\n lon: parseFloat(lon),\n tx_power: parseInt(txPower, 10),\n radio: {\n freq: parseFloat(freq),\n bw: parseFloat(bw),\n sf: parseInt(sf, 10),\n cr: parseInt(cr, 10),\n },\n };\n await onSave(update);\n toast.success('Radio config saved');\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to save');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSaveIdentity = async () => {\n setError('');\n setLoading(true);\n\n try {\n const update: RadioConfigUpdate = { name };\n await onSave(update);\n toast.success('Identity saved');\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to save');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSaveSerial = async () => {\n setError('');\n setLoading(true);\n\n try {\n const newMaxRadioContacts = parseInt(maxRadioContacts, 10);\n if (!isNaN(newMaxRadioContacts) && newMaxRadioContacts !== appSettings?.max_radio_contacts) {\n await onSaveAppSettings({ max_radio_contacts: newMaxRadioContacts });\n }\n toast.success('Serial settings saved');\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to save');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSetPrivateKey = async () => {\n if (!privateKey.trim()) {\n setError('Private key is required');\n return;\n }\n setError('');\n setLoading(true);\n\n try {\n await onSetPrivateKey(privateKey.trim());\n setPrivateKey('');\n toast.success('Private key set');\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to set private key');\n } finally {\n setLoading(false);\n }\n };\n\n const handleReboot = async () => {\n if (\n !confirm('Are you sure you want to reboot the radio? The connection will drop temporarily.')\n ) {\n return;\n }\n setError('');\n setRebooting(true);\n\n try {\n await onReboot();\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to reboot radio');\n } finally {\n setRebooting(false);\n }\n };\n\n const handleAdvertise = async () => {\n setAdvertising(true);\n try {\n await onAdvertise();\n } finally {\n setAdvertising(false);\n }\n };\n\n const handleCleanup = async () => {\n const days = parseInt(retentionDays, 10);\n if (isNaN(days) || days < 1) {\n toast.error('Invalid retention days', {\n description: 'Retention days must be at least 1',\n });\n return;\n }\n\n setCleaning(true);\n\n try {\n const result = await api.runMaintenance(days);\n toast.success('Database cleanup complete', {\n description: `Deleted ${result.packets_deleted} old packet${result.packets_deleted === 1 ? '' : 's'}`,\n });\n await onHealthRefresh();\n } catch (err) {\n console.error('Failed to run maintenance:', err);\n toast.error('Database cleanup failed', {\n description: err instanceof Error ? err.message : 'Unknown error',\n });\n } finally {\n setCleaning(false);\n }\n };\n\n return (\n !isOpen && onClose()}>\n \n \n Radio & Settings\n \n {activeTab === 'radio' && 'Configure radio frequency, power, and location settings'}\n {activeTab === 'identity' && 'Manage radio name, public key, and private key'}\n {activeTab === 'serial' && 'View serial port connection and configure contact sync'}\n {activeTab === 'database' && 'View database statistics and clean up old packets'}\n {activeTab === 'advertise' && 'Send a flood advertisement to announce your presence'}\n \n \n\n {!config ? (\n
Loading configuration...
\n ) : (\n setActiveTab(v as SettingsTab)}\n className=\"w-full\"\n >\n \n Radio\n Identity\n Serial\n Database\n Advertise\n \n\n {/* Radio Config Tab */}\n \n
\n \n handlePresetChange(e.target.value)}\n className=\"w-full h-10 px-3 rounded-md border border-input bg-background text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n >\n \n {RADIO_PRESETS.map((preset) => (\n \n ))}\n \n
\n\n
\n
\n \n setFreq(e.target.value)}\n />\n
\n
\n \n setBw(e.target.value)}\n />\n
\n
\n\n
\n
\n \n setSf(e.target.value)}\n />\n
\n
\n \n setCr(e.target.value)}\n />\n
\n
\n\n
\n
\n \n setTxPower(e.target.value)}\n />\n
\n
\n \n \n
\n
\n\n \n\n
\n
\n \n \n {gettingLocation ? 'Getting...' : '📍 Use My Location'}\n \n
\n
\n
\n \n setLat(e.target.value)}\n />\n
\n
\n \n setLon(e.target.value)}\n />\n
\n
\n
\n\n {error &&
{error}
}\n\n \n
\n\n {/* Identity Tab */}\n \n
\n \n \n
\n\n
\n \n setName(e.target.value)} />\n
\n\n \n\n \n\n
\n \n setPrivateKey(e.target.value)}\n placeholder=\"64-character hex private key\"\n />\n \n Set Private Key\n \n
\n\n \n\n \n \n Changes to name or private key require a radio reboot to take effect.\n \n \n\n \n {rebooting ? 'Rebooting...' : 'Reboot Radio'}\n \n\n {error &&
{error}
}\n
\n\n {/* Serial Tab */}\n \n
\n \n {health?.serial_port ? (\n
\n
\n \n {health.serial_port}\n \n
\n ) : (\n
\n
\n Not connected\n
\n )}\n
\n\n \n\n
\n \n setMaxRadioContacts(e.target.value)}\n />\n

\n Recent non-repeater contacts loaded to radio for DM auto-ACK (1-1000)\n

\n
\n\n \n\n {error &&
{error}
}\n \n\n {/* Database Tab */}\n \n
\n
\n Database size\n {health?.database_size_mb ?? '?'} MB\n
\n\n {health?.oldest_undecrypted_timestamp ? (\n
\n Oldest undecrypted packet\n \n {formatTime(health.oldest_undecrypted_timestamp)}\n \n (\n {Math.floor(\n (Date.now() / 1000 - health.oldest_undecrypted_timestamp) / 86400\n )}{' '}\n days old)\n \n \n
\n ) : (\n
\n Oldest undecrypted packet\n None\n
\n )}\n
\n\n \n\n
\n \n

\n Delete undecrypted packets older than the specified days. This helps manage\n storage for packets that couldn't be decrypted (unknown channel keys).\n

\n
\n
\n \n setRetentionDays(e.target.value)}\n className=\"w-24\"\n />\n
\n \n
\n
\n
\n\n {/* Advertise Tab */}\n \n
\n

\n Send a flood advertisement to announce your presence on the mesh network.\n

\n \n {advertising ? 'Sending...' : 'Send Advertisement'}\n \n {!health?.radio_connected && (\n

Radio not connected

\n )}\n
\n
\n \n )}\n \n
\n );\n}\n","import { useEffect, useRef } from 'react';\nimport type { RawPacket } from '../types';\n\ninterface RawPacketListProps {\n packets: RawPacket[];\n}\n\nfunction formatTime(timestamp: number): string {\n const date = new Date(timestamp * 1000);\n return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' });\n}\n\nfunction formatPayloadType(type: string): string {\n // Convert SNAKE_CASE to Title Case\n return type\n .split('_')\n .map((word) => word.charAt(0) + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nfunction getDecryptedLabel(packet: RawPacket): string {\n if (!packet.decrypted || !packet.decrypted_info) {\n return formatPayloadType(packet.payload_type);\n }\n\n const info = packet.decrypted_info;\n if (packet.payload_type === 'GROUP_TEXT' && info.channel_name) {\n return `GroupText to ${info.channel_name}`;\n }\n if (packet.payload_type === 'TEXT_MESSAGE' && info.sender) {\n return `TextMessage from ${info.sender}`;\n }\n\n return formatPayloadType(packet.payload_type);\n}\n\nfunction formatSignalInfo(packet: RawPacket): string {\n const parts: string[] = [];\n if (packet.snr !== null && packet.snr !== undefined) {\n parts.push(`SNR: ${packet.snr.toFixed(1)} dB`);\n }\n if (packet.rssi !== null && packet.rssi !== undefined) {\n parts.push(`RSSI: ${packet.rssi} dBm`);\n }\n return parts.join(' | ');\n}\n\nexport function RawPacketList({ packets }: RawPacketListProps) {\n const listRef = useRef(null);\n\n useEffect(() => {\n if (listRef.current) {\n listRef.current.scrollTop = listRef.current.scrollHeight;\n }\n }, [packets]);\n\n if (packets.length === 0) {\n return (\n
\n No packets received yet. Packets will appear here in real-time.\n
\n );\n }\n\n // Sort packets by timestamp ascending (oldest first)\n const sortedPackets = [...packets].sort((a, b) => a.timestamp - b.timestamp);\n\n return (\n
\n {sortedPackets.map((packet) => (\n
\n
\n {!packet.decrypted && 🔒}\n {getDecryptedLabel(packet)}\n {' • '}\n {formatTime(packet.timestamp)}\n
\n {(packet.snr !== null || packet.rssi !== null) && (\n
\n {formatSignalInfo(packet)}\n
\n )}\n
\n {packet.data.toUpperCase()}\n
\n
\n ))}\n
\n );\n}\n","import { useEffect, useRef } from 'react';\nexport function useAttribution(map, attribution) {\n const attributionRef = useRef(attribution);\n useEffect(function updateAttribution() {\n if (attribution !== attributionRef.current && map.attributionControl != null) {\n if (attributionRef.current != null) {\n map.attributionControl.removeAttribution(attributionRef.current);\n }\n if (attribution != null) {\n map.attributionControl.addAttribution(attribution);\n }\n }\n attributionRef.current = attribution;\n }, [\n map,\n attribution\n ]);\n}\n","export function updateCircle(layer, props, prevProps) {\n if (props.center !== prevProps.center) {\n layer.setLatLng(props.center);\n }\n if (props.radius != null && props.radius !== prevProps.radius) {\n layer.setRadius(props.radius);\n }\n}\n","import { createContext, useContext } from 'react';\nexport const CONTEXT_VERSION = 1;\nexport function createLeafletContext(map) {\n return Object.freeze({\n __version: CONTEXT_VERSION,\n map\n });\n}\nexport function extendContext(source, extra) {\n return Object.freeze({\n ...source,\n ...extra\n });\n}\nexport const LeafletContext = createContext(null);\nexport const LeafletProvider = LeafletContext.Provider;\nexport function useLeafletContext() {\n const context = useContext(LeafletContext);\n if (context == null) {\n throw new Error('No context provided: useLeafletContext() can only be used in a descendant of ');\n }\n return context;\n}\n","import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { LeafletProvider } from './context.js';\nexport function createContainerComponent(useElement) {\n function ContainerComponent(props, forwardedRef) {\n const { instance , context } = useElement(props).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n return props.children == null ? null : /*#__PURE__*/ React.createElement(LeafletProvider, {\n value: context\n }, props.children);\n }\n return /*#__PURE__*/ forwardRef(ContainerComponent);\n}\nexport function createDivOverlayComponent(useElement) {\n function OverlayComponent(props, forwardedRef) {\n const [isOpen, setOpen] = useState(false);\n const { instance } = useElement(props, setOpen).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n useEffect(function updateOverlay() {\n if (isOpen) {\n instance.update();\n }\n }, [\n instance,\n isOpen,\n props.children\n ]);\n // @ts-ignore _contentNode missing in type definition\n const contentNode = instance._contentNode;\n return contentNode ? /*#__PURE__*/ createPortal(props.children, contentNode) : null;\n }\n return /*#__PURE__*/ forwardRef(OverlayComponent);\n}\nexport function createLeafComponent(useElement) {\n function LeafComponent(props, forwardedRef) {\n const { instance } = useElement(props).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n return null;\n }\n return /*#__PURE__*/ forwardRef(LeafComponent);\n}\n","import { useEffect, useRef } from 'react';\nexport function useEventHandlers(element, eventHandlers) {\n const eventHandlersRef = useRef();\n useEffect(function addEventHandlers() {\n if (eventHandlers != null) {\n element.instance.on(eventHandlers);\n }\n eventHandlersRef.current = eventHandlers;\n return function removeEventHandlers() {\n if (eventHandlersRef.current != null) {\n element.instance.off(eventHandlersRef.current);\n }\n eventHandlersRef.current = null;\n };\n }, [\n element,\n eventHandlers\n ]);\n}\n","export function withPane(props, context) {\n const pane = props.pane ?? context.pane;\n return pane ? {\n ...props,\n pane\n } : props;\n}\n","import { useAttribution } from './attribution.js';\nimport { useLeafletContext } from './context.js';\nimport { useEventHandlers } from './events.js';\nimport { withPane } from './pane.js';\nexport function createDivOverlayHook(useElement, useLifecycle) {\n return function useDivOverlay(props, setOpen) {\n const context = useLeafletContext();\n const elementRef = useElement(withPane(props, context), context);\n useAttribution(context.map, props.attribution);\n useEventHandlers(elementRef.current, props.eventHandlers);\n useLifecycle(elementRef.current, context, props, setOpen);\n return elementRef;\n };\n}\n","/* @preserve\n * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com\n * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.leaflet = {}));\n})(this, (function (exports) { 'use strict';\n\n var version = \"1.9.4\";\n\n /*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n // @function extend(dest: Object, src?: Object): Object\r\n // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\n function extend(dest) {\r\n \tvar i, j, len, src;\r\n\r\n \tfor (j = 1, len = arguments.length; j < len; j++) {\r\n \t\tsrc = arguments[j];\r\n \t\tfor (i in src) {\r\n \t\t\tdest[i] = src[i];\r\n \t\t}\r\n \t}\r\n \treturn dest;\r\n }\r\n\r\n // @function create(proto: Object, properties?: Object): Object\r\n // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\n var create$2 = Object.create || (function () {\r\n \tfunction F() {}\r\n \treturn function (proto) {\r\n \t\tF.prototype = proto;\r\n \t\treturn new F();\r\n \t};\r\n })();\r\n\r\n // @function bind(fn: Function, …): Function\r\n // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n // Has a `L.bind()` shortcut.\r\n function bind(fn, obj) {\r\n \tvar slice = Array.prototype.slice;\r\n\r\n \tif (fn.bind) {\r\n \t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n \t}\r\n\r\n \tvar args = slice.call(arguments, 2);\r\n\r\n \treturn function () {\r\n \t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n \t};\r\n }\r\n\r\n // @property lastId: Number\r\n // Last unique ID used by [`stamp()`](#util-stamp)\r\n var lastId = 0;\r\n\r\n // @function stamp(obj: Object): Number\r\n // Returns the unique ID of an object, assigning it one if it doesn't have it.\r\n function stamp(obj) {\r\n \tif (!('_leaflet_id' in obj)) {\r\n \t\tobj['_leaflet_id'] = ++lastId;\r\n \t}\r\n \treturn obj._leaflet_id;\r\n }\r\n\r\n // @function throttle(fn: Function, time: Number, context: Object): Function\r\n // Returns a function which executes function `fn` with the given scope `context`\r\n // (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n // `fn` will be called no more than one time per given amount of `time`. The arguments\r\n // received by the bound function will be any arguments passed when binding the\r\n // function, followed by any arguments passed when invoking the bound function.\r\n // Has an `L.throttle` shortcut.\r\n function throttle(fn, time, context) {\r\n \tvar lock, args, wrapperFn, later;\r\n\r\n \tlater = function () {\r\n \t\t// reset lock and call if queued\r\n \t\tlock = false;\r\n \t\tif (args) {\r\n \t\t\twrapperFn.apply(context, args);\r\n \t\t\targs = false;\r\n \t\t}\r\n \t};\r\n\r\n \twrapperFn = function () {\r\n \t\tif (lock) {\r\n \t\t\t// called too soon, queue to call later\r\n \t\t\targs = arguments;\r\n\r\n \t\t} else {\r\n \t\t\t// call and lock until later\r\n \t\t\tfn.apply(context, arguments);\r\n \t\t\tsetTimeout(later, time);\r\n \t\t\tlock = true;\r\n \t\t}\r\n \t};\r\n\r\n \treturn wrapperFn;\r\n }\r\n\r\n // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n // Returns the number `num` modulo `range` in such a way so it lies within\r\n // `range[0]` and `range[1]`. The returned value will be always smaller than\r\n // `range[1]` unless `includeMax` is set to `true`.\r\n function wrapNum(x, range, includeMax) {\r\n \tvar max = range[1],\r\n \t min = range[0],\r\n \t d = max - min;\r\n \treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n }\r\n\r\n // @function falseFn(): Function\r\n // Returns a function which always returns `false`.\r\n function falseFn() { return false; }\r\n\r\n // @function formatNum(num: Number, precision?: Number|false): Number\r\n // Returns the number `num` rounded with specified `precision`.\r\n // The default `precision` value is 6 decimal places.\r\n // `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\n function formatNum(num, precision) {\r\n \tif (precision === false) { return num; }\r\n \tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n \treturn Math.round(num * pow) / pow;\r\n }\r\n\r\n // @function trim(str: String): String\r\n // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\n function trim(str) {\r\n \treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n }\r\n\r\n // @function splitWords(str: String): String[]\r\n // Trims and splits the string on whitespace and returns the array of parts.\r\n function splitWords(str) {\r\n \treturn trim(str).split(/\\s+/);\r\n }\r\n\r\n // @function setOptions(obj: Object, options: Object): Object\r\n // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\n function setOptions(obj, options) {\r\n \tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n \t\tobj.options = obj.options ? create$2(obj.options) : {};\r\n \t}\r\n \tfor (var i in options) {\r\n \t\tobj.options[i] = options[i];\r\n \t}\r\n \treturn obj.options;\r\n }\r\n\r\n // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n // Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n // be appended at the end. If `uppercase` is `true`, the parameter names will\r\n // be uppercased (e.g. `'?A=foo&B=bar'`)\r\n function getParamString(obj, existingUrl, uppercase) {\r\n \tvar params = [];\r\n \tfor (var i in obj) {\r\n \t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n \t}\r\n \treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n }\r\n\r\n var templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n // @function template(str: String, data: Object): String\r\n // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n // `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n // data values — they will be evaluated passing `data` as an argument.\r\n function template(str, data) {\r\n \treturn str.replace(templateRe, function (str, key) {\r\n \t\tvar value = data[key];\r\n\r\n \t\tif (value === undefined) {\r\n \t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n \t\t} else if (typeof value === 'function') {\r\n \t\t\tvalue = value(data);\r\n \t\t}\r\n \t\treturn value;\r\n \t});\r\n }\r\n\r\n // @function isArray(obj): Boolean\r\n // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\n var isArray = Array.isArray || function (obj) {\r\n \treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n };\r\n\r\n // @function indexOf(array: Array, el: Object): Number\r\n // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\n function indexOf(array, el) {\r\n \tfor (var i = 0; i < array.length; i++) {\r\n \t\tif (array[i] === el) { return i; }\r\n \t}\r\n \treturn -1;\r\n }\r\n\r\n // @property emptyImageUrl: String\r\n // Data URI string containing a base64-encoded empty GIF image.\r\n // Used as a hack to free memory from unused images on WebKit-powered\r\n // mobile devices (by setting image `src` to this string).\r\n var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\n function getPrefixed(name) {\r\n \treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n }\r\n\r\n var lastTime = 0;\r\n\r\n // fallback for IE 7-8\r\n function timeoutDefer(fn) {\r\n \tvar time = +new Date(),\r\n \t timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n \tlastTime = time + timeToCall;\r\n \treturn window.setTimeout(fn, timeToCall);\r\n }\r\n\r\n var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\n var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n \t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n // Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n // `context` if given. When `immediate` is set, `fn` is called immediately if\r\n // the browser doesn't have native support for\r\n // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n // otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\n function requestAnimFrame(fn, context, immediate) {\r\n \tif (immediate && requestFn === timeoutDefer) {\r\n \t\tfn.call(context);\r\n \t} else {\r\n \t\treturn requestFn.call(window, bind(fn, context));\r\n \t}\r\n }\r\n\r\n // @function cancelAnimFrame(id: Number): undefined\r\n // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\n function cancelAnimFrame(id) {\r\n \tif (id) {\r\n \t\tcancelFn.call(window, id);\r\n \t}\r\n }\n\n var Util = {\n __proto__: null,\n extend: extend,\n create: create$2,\n bind: bind,\n get lastId () { return lastId; },\n stamp: stamp,\n throttle: throttle,\n wrapNum: wrapNum,\n falseFn: falseFn,\n formatNum: formatNum,\n trim: trim,\n splitWords: splitWords,\n setOptions: setOptions,\n getParamString: getParamString,\n template: template,\n isArray: isArray,\n indexOf: indexOf,\n emptyImageUrl: emptyImageUrl,\n requestFn: requestFn,\n cancelFn: cancelFn,\n requestAnimFrame: requestAnimFrame,\n cancelAnimFrame: cancelAnimFrame\n };\n\n // @class Class\r\n // @aka L.Class\r\n\r\n // @section\r\n // @uninheritable\r\n\r\n // Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\n function Class() {}\r\n\r\n Class.extend = function (props) {\r\n\r\n \t// @function extend(props: Object): Function\r\n \t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n \t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n \tvar NewClass = function () {\r\n\r\n \t\tsetOptions(this);\r\n\r\n \t\t// call the constructor\r\n \t\tif (this.initialize) {\r\n \t\t\tthis.initialize.apply(this, arguments);\r\n \t\t}\r\n\r\n \t\t// call all constructor hooks\r\n \t\tthis.callInitHooks();\r\n \t};\r\n\r\n \tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n \tvar proto = create$2(parentProto);\r\n \tproto.constructor = NewClass;\r\n\r\n \tNewClass.prototype = proto;\r\n\r\n \t// inherit parent's statics\r\n \tfor (var i in this) {\r\n \t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n \t\t\tNewClass[i] = this[i];\r\n \t\t}\r\n \t}\r\n\r\n \t// mix static properties into the class\r\n \tif (props.statics) {\r\n \t\textend(NewClass, props.statics);\r\n \t}\r\n\r\n \t// mix includes into the prototype\r\n \tif (props.includes) {\r\n \t\tcheckDeprecatedMixinEvents(props.includes);\r\n \t\textend.apply(null, [proto].concat(props.includes));\r\n \t}\r\n\r\n \t// mix given properties into the prototype\r\n \textend(proto, props);\r\n \tdelete proto.statics;\r\n \tdelete proto.includes;\r\n\r\n \t// merge options\r\n \tif (proto.options) {\r\n \t\tproto.options = parentProto.options ? create$2(parentProto.options) : {};\r\n \t\textend(proto.options, props.options);\r\n \t}\r\n\r\n \tproto._initHooks = [];\r\n\r\n \t// add method for calling all hooks\r\n \tproto.callInitHooks = function () {\r\n\r\n \t\tif (this._initHooksCalled) { return; }\r\n\r\n \t\tif (parentProto.callInitHooks) {\r\n \t\t\tparentProto.callInitHooks.call(this);\r\n \t\t}\r\n\r\n \t\tthis._initHooksCalled = true;\r\n\r\n \t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n \t\t\tproto._initHooks[i].call(this);\r\n \t\t}\r\n \t};\r\n\r\n \treturn NewClass;\r\n };\r\n\r\n\r\n // @function include(properties: Object): this\r\n // [Includes a mixin](#class-includes) into the current class.\r\n Class.include = function (props) {\r\n \tvar parentOptions = this.prototype.options;\r\n \textend(this.prototype, props);\r\n \tif (props.options) {\r\n \t\tthis.prototype.options = parentOptions;\r\n \t\tthis.mergeOptions(props.options);\r\n \t}\r\n \treturn this;\r\n };\r\n\r\n // @function mergeOptions(options: Object): this\r\n // [Merges `options`](#class-options) into the defaults of the class.\r\n Class.mergeOptions = function (options) {\r\n \textend(this.prototype.options, options);\r\n \treturn this;\r\n };\r\n\r\n // @function addInitHook(fn: Function): this\r\n // Adds a [constructor hook](#class-constructor-hooks) to the class.\r\n Class.addInitHook = function (fn) { // (Function) || (String, args...)\r\n \tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n \tvar init = typeof fn === 'function' ? fn : function () {\r\n \t\tthis[fn].apply(this, args);\r\n \t};\r\n\r\n \tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n \tthis.prototype._initHooks.push(init);\r\n \treturn this;\r\n };\r\n\r\n function checkDeprecatedMixinEvents(includes) {\r\n \t/* global L: true */\r\n \tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n \tincludes = isArray(includes) ? includes : [includes];\r\n\r\n \tfor (var i = 0; i < includes.length; i++) {\r\n \t\tif (includes[i] === L.Mixin.Events) {\r\n \t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n \t\t\t\t'this property will be removed in future releases, ' +\r\n \t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n \t\t}\r\n \t}\r\n }\n\n /*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\n var Events = {\r\n \t/* @method on(type: String, fn: Function, context?: Object): this\r\n \t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n \t *\r\n \t * @alternative\r\n \t * @method on(eventMap: Object): this\r\n \t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n \t */\r\n \ton: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t/* @method off(type: String, fn?: Function, context?: Object): this\r\n \t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n \t *\r\n \t * @alternative\r\n \t * @method off(eventMap: Object): this\r\n \t * Removes a set of type/listener pairs.\r\n \t *\r\n \t * @alternative\r\n \t * @method off: this\r\n \t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n \t */\r\n \toff: function (types, fn, context) {\r\n\r\n \t\tif (!arguments.length) {\r\n \t\t\t// clear all listeners if called without arguments\r\n \t\t\tdelete this._events;\r\n\r\n \t\t} else if (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\tthis._off(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tvar removeAll = arguments.length === 1;\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tif (removeAll) {\r\n \t\t\t\t\tthis._off(types[i]);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tthis._off(types[i], fn, context);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// attach listener (without syntactic sugar now)\r\n \t_on: function (type, fn, context, _once) {\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// check if fn already there\r\n \t\tif (this._listens(type, fn, context) !== false) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar newListener = {fn: fn, ctx: context};\r\n \t\tif (_once) {\r\n \t\t\tnewListener.once = true;\r\n \t\t}\r\n\r\n \t\tthis._events = this._events || {};\r\n \t\tthis._events[type] = this._events[type] || [];\r\n \t\tthis._events[type].push(newListener);\r\n \t},\r\n\r\n \t_off: function (type, fn, context) {\r\n \t\tvar listeners,\r\n \t\t i,\r\n \t\t len;\r\n\r\n \t\tif (!this._events) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tlisteners = this._events[type];\r\n \t\tif (!listeners) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (arguments.length === 1) { // remove all\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// Set all removed listeners to noop\r\n \t\t\t\t// so they are not called if remove happens in fire\r\n \t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tlisteners[i].fn = falseFn;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\t// clear all listeners for a type if function isn't specified\r\n \t\t\tdelete this._events[type];\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// find fn and remove it\r\n \t\tvar index = this._listens(type, fn, context);\r\n \t\tif (index !== false) {\r\n \t\t\tvar listener = listeners[index];\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n \t\t\t\tlistener.fn = falseFn;\r\n\r\n \t\t\t\t/* copy array in case events are being fired */\r\n \t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n \t\t\t}\r\n \t\t\tlisteners.splice(index, 1);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n \t// Fires an event of the specified type. You can optionally provide a data\r\n \t// object — the first argument of the listener function will contain its\r\n \t// properties. The event can optionally be propagated to event parents.\r\n \tfire: function (type, data, propagate) {\r\n \t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n \t\tvar event = extend({}, data, {\r\n \t\t\ttype: type,\r\n \t\t\ttarget: this,\r\n \t\t\tsourceTarget: data && data.sourceTarget || this\r\n \t\t});\r\n\r\n \t\tif (this._events) {\r\n \t\t\tvar listeners = this._events[type];\r\n \t\t\tif (listeners) {\r\n \t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n \t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tvar l = listeners[i];\r\n \t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n \t\t\t\t\tvar fn = l.fn;\r\n \t\t\t\t\tif (l.once) {\r\n \t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tfn.call(l.ctx || this, event);\r\n \t\t\t\t}\r\n\r\n \t\t\t\tthis._firingCount--;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// propagate the event to parents (set with addEventParent)\r\n \t\t\tthis._propagateEvent(event);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method listens(type: String, propagate?: Boolean): Boolean\r\n \t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n \t// Returns `true` if a particular event type has any listeners attached to it.\r\n \t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n \tlistens: function (type, fn, context, propagate) {\r\n \t\tif (typeof type !== 'string') {\r\n \t\t\tconsole.warn('\"string\" type argument expected');\r\n \t\t}\r\n\r\n \t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n \t\tvar _fn = fn;\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tpropagate = !!fn;\r\n \t\t\t_fn = undefined;\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events && this._events[type];\r\n \t\tif (listeners && listeners.length) {\r\n \t\t\tif (this._listens(type, _fn, context) !== false) {\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// also check parents for listeners if event propagates\r\n \t\t\tfor (var id in this._eventParents) {\r\n \t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n \t},\r\n\r\n \t// returns the index (number) or false\r\n \t_listens: function (type, fn, context) {\r\n \t\tif (!this._events) {\r\n \t\t\treturn false;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events[type] || [];\r\n \t\tif (!fn) {\r\n \t\t\treturn !!listeners.length;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n \t\t\t\treturn i;\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n\r\n \t},\r\n\r\n \t// @method once(…): this\r\n \t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n \tonce: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn, true);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context, true);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method addEventParent(obj: Evented): this\r\n \t// Adds an event parent - an `Evented` that will receive propagated events\r\n \taddEventParent: function (obj) {\r\n \t\tthis._eventParents = this._eventParents || {};\r\n \t\tthis._eventParents[stamp(obj)] = obj;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method removeEventParent(obj: Evented): this\r\n \t// Removes an event parent, so it will stop receiving propagated events\r\n \tremoveEventParent: function (obj) {\r\n \t\tif (this._eventParents) {\r\n \t\t\tdelete this._eventParents[stamp(obj)];\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_propagateEvent: function (e) {\r\n \t\tfor (var id in this._eventParents) {\r\n \t\t\tthis._eventParents[id].fire(e.type, extend({\r\n \t\t\t\tlayer: e.target,\r\n \t\t\t\tpropagatedFrom: e.target\r\n \t\t\t}, e), true);\r\n \t\t}\r\n \t}\r\n };\r\n\r\n // aliases; we should ditch those eventually\r\n\r\n // @method addEventListener(…): this\r\n // Alias to [`on(…)`](#evented-on)\r\n Events.addEventListener = Events.on;\r\n\r\n // @method removeEventListener(…): this\r\n // Alias to [`off(…)`](#evented-off)\r\n\r\n // @method clearAllEventListeners(…): this\r\n // Alias to [`off()`](#evented-off)\r\n Events.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n // @method addOneTimeEventListener(…): this\r\n // Alias to [`once(…)`](#evented-once)\r\n Events.addOneTimeEventListener = Events.once;\r\n\r\n // @method fireEvent(…): this\r\n // Alias to [`fire(…)`](#evented-fire)\r\n Events.fireEvent = Events.fire;\r\n\r\n // @method hasEventListeners(…): Boolean\r\n // Alias to [`listens(…)`](#evented-listens)\r\n Events.hasEventListeners = Events.listens;\r\n\r\n var Evented = Class.extend(Events);\n\n /*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Point(x, y, round) {\r\n \t// @property x: Number; The `x` coordinate of the point\r\n \tthis.x = (round ? Math.round(x) : x);\r\n \t// @property y: Number; The `y` coordinate of the point\r\n \tthis.y = (round ? Math.round(y) : y);\r\n }\r\n\r\n var trunc = Math.trunc || function (v) {\r\n \treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n };\r\n\r\n Point.prototype = {\r\n\r\n \t// @method clone(): Point\r\n \t// Returns a copy of the current point.\r\n \tclone: function () {\r\n \t\treturn new Point(this.x, this.y);\r\n \t},\r\n\r\n \t// @method add(otherPoint: Point): Point\r\n \t// Returns the result of addition of the current and the given points.\r\n \tadd: function (point) {\r\n \t\t// non-destructive, returns a new point\r\n \t\treturn this.clone()._add(toPoint(point));\r\n \t},\r\n\r\n \t_add: function (point) {\r\n \t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n \t\tthis.x += point.x;\r\n \t\tthis.y += point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method subtract(otherPoint: Point): Point\r\n \t// Returns the result of subtraction of the given point from the current.\r\n \tsubtract: function (point) {\r\n \t\treturn this.clone()._subtract(toPoint(point));\r\n \t},\r\n\r\n \t_subtract: function (point) {\r\n \t\tthis.x -= point.x;\r\n \t\tthis.y -= point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method divideBy(num: Number): Point\r\n \t// Returns the result of division of the current point by the given number.\r\n \tdivideBy: function (num) {\r\n \t\treturn this.clone()._divideBy(num);\r\n \t},\r\n\r\n \t_divideBy: function (num) {\r\n \t\tthis.x /= num;\r\n \t\tthis.y /= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method multiplyBy(num: Number): Point\r\n \t// Returns the result of multiplication of the current point by the given number.\r\n \tmultiplyBy: function (num) {\r\n \t\treturn this.clone()._multiplyBy(num);\r\n \t},\r\n\r\n \t_multiplyBy: function (num) {\r\n \t\tthis.x *= num;\r\n \t\tthis.y *= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method scaleBy(scale: Point): Point\r\n \t// Multiply each coordinate of the current point by each coordinate of\r\n \t// `scale`. In linear algebra terms, multiply the point by the\r\n \t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n \t// defined by `scale`.\r\n \tscaleBy: function (point) {\r\n \t\treturn new Point(this.x * point.x, this.y * point.y);\r\n \t},\r\n\r\n \t// @method unscaleBy(scale: Point): Point\r\n \t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n \t// each coordinate of `scale`.\r\n \tunscaleBy: function (point) {\r\n \t\treturn new Point(this.x / point.x, this.y / point.y);\r\n \t},\r\n\r\n \t// @method round(): Point\r\n \t// Returns a copy of the current point with rounded coordinates.\r\n \tround: function () {\r\n \t\treturn this.clone()._round();\r\n \t},\r\n\r\n \t_round: function () {\r\n \t\tthis.x = Math.round(this.x);\r\n \t\tthis.y = Math.round(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method floor(): Point\r\n \t// Returns a copy of the current point with floored coordinates (rounded down).\r\n \tfloor: function () {\r\n \t\treturn this.clone()._floor();\r\n \t},\r\n\r\n \t_floor: function () {\r\n \t\tthis.x = Math.floor(this.x);\r\n \t\tthis.y = Math.floor(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method ceil(): Point\r\n \t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n \tceil: function () {\r\n \t\treturn this.clone()._ceil();\r\n \t},\r\n\r\n \t_ceil: function () {\r\n \t\tthis.x = Math.ceil(this.x);\r\n \t\tthis.y = Math.ceil(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method trunc(): Point\r\n \t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n \ttrunc: function () {\r\n \t\treturn this.clone()._trunc();\r\n \t},\r\n\r\n \t_trunc: function () {\r\n \t\tthis.x = trunc(this.x);\r\n \t\tthis.y = trunc(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method distanceTo(otherPoint: Point): Number\r\n \t// Returns the cartesian distance between the current and the given points.\r\n \tdistanceTo: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\tvar x = point.x - this.x,\r\n \t\t y = point.y - this.y;\r\n\r\n \t\treturn Math.sqrt(x * x + y * y);\r\n \t},\r\n\r\n \t// @method equals(otherPoint: Point): Boolean\r\n \t// Returns `true` if the given point has the same coordinates.\r\n \tequals: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn point.x === this.x &&\r\n \t\t point.y === this.y;\r\n \t},\r\n\r\n \t// @method contains(otherPoint: Point): Boolean\r\n \t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n \tcontains: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n \t\t Math.abs(point.y) <= Math.abs(this.y);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point for debugging purposes.\r\n \ttoString: function () {\r\n \t\treturn 'Point(' +\r\n \t\t formatNum(this.x) + ', ' +\r\n \t\t formatNum(this.y) + ')';\r\n \t}\r\n };\r\n\r\n // @factory L.point(x: Number, y: Number, round?: Boolean)\r\n // Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Number[])\r\n // Expects an array of the form `[x, y]` instead.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Object)\r\n // Expects a plain object of the form `{x: Number, y: Number}` instead.\r\n function toPoint(x, y, round) {\r\n \tif (x instanceof Point) {\r\n \t\treturn x;\r\n \t}\r\n \tif (isArray(x)) {\r\n \t\treturn new Point(x[0], x[1]);\r\n \t}\r\n \tif (x === undefined || x === null) {\r\n \t\treturn x;\r\n \t}\r\n \tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n \t\treturn new Point(x.x, x.y);\r\n \t}\r\n \treturn new Point(x, y, round);\r\n }\n\n /*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Bounds(a, b) {\r\n \tif (!a) { return; }\r\n\r\n \tvar points = b ? [a, b] : a;\r\n\r\n \tfor (var i = 0, len = points.length; i < len; i++) {\r\n \t\tthis.extend(points[i]);\r\n \t}\r\n }\r\n\r\n Bounds.prototype = {\r\n \t// @method extend(point: Point): this\r\n \t// Extends the bounds to contain the given point.\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: Bounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar min2, max2;\r\n \t\tif (!obj) { return this; }\r\n\r\n \t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n \t\t\tmin2 = max2 = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t\tmin2 = obj.min;\r\n \t\t\tmax2 = obj.max;\r\n\r\n \t\t\tif (!min2 || !max2) { return this; }\r\n \t\t}\r\n\r\n \t\t// @property min: Point\r\n \t\t// The top left corner of the rectangle.\r\n \t\t// @property max: Point\r\n \t\t// The bottom right corner of the rectangle.\r\n \t\tif (!this.min && !this.max) {\r\n \t\t\tthis.min = min2.clone();\r\n \t\t\tthis.max = max2.clone();\r\n \t\t} else {\r\n \t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n \t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n \t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n \t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getCenter(round?: Boolean): Point\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function (round) {\r\n \t\treturn toPoint(\r\n \t\t (this.min.x + this.max.x) / 2,\r\n \t\t (this.min.y + this.max.y) / 2, round);\r\n \t},\r\n\r\n \t// @method getBottomLeft(): Point\r\n \t// Returns the bottom-left point of the bounds.\r\n \tgetBottomLeft: function () {\r\n \t\treturn toPoint(this.min.x, this.max.y);\r\n \t},\r\n\r\n \t// @method getTopRight(): Point\r\n \t// Returns the top-right point of the bounds.\r\n \tgetTopRight: function () { // -> Point\r\n \t\treturn toPoint(this.max.x, this.min.y);\r\n \t},\r\n\r\n \t// @method getTopLeft(): Point\r\n \t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n \tgetTopLeft: function () {\r\n \t\treturn this.min; // left, top\r\n \t},\r\n\r\n \t// @method getBottomRight(): Point\r\n \t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n \tgetBottomRight: function () {\r\n \t\treturn this.max; // right, bottom\r\n \t},\r\n\r\n \t// @method getSize(): Point\r\n \t// Returns the size of the given bounds\r\n \tgetSize: function () {\r\n \t\treturn this.max.subtract(this.min);\r\n \t},\r\n\r\n \t// @method contains(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n \t// @alternative\r\n \t// @method contains(point: Point): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) {\r\n \t\tvar min, max;\r\n\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n \t\t\tobj = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t}\r\n\r\n \t\tif (obj instanceof Bounds) {\r\n \t\t\tmin = obj.min;\r\n \t\t\tmax = obj.max;\r\n \t\t} else {\r\n \t\t\tmin = max = obj;\r\n \t\t}\r\n\r\n \t\treturn (min.x >= this.min.x) &&\r\n \t\t (max.x <= this.max.x) &&\r\n \t\t (min.y >= this.min.y) &&\r\n \t\t (max.y <= this.max.y);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n \t// intersect if they have at least one point in common.\r\n \tintersects: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n \t\t yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n \t\treturn xIntersects && yIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n \t// overlap if their intersection is an area.\r\n \toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n \t\t yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n \t\treturn xOverlaps && yOverlaps;\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this.min && this.max);\r\n \t},\r\n\r\n\r\n \t// @method pad(bufferRatio: Number): Bounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar min = this.min,\r\n \t\tmax = this.max,\r\n \t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n \t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n \t\treturn toBounds(\r\n \t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n \t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n \t},\r\n\r\n\r\n \t// @method equals(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n \tequals: function (bounds) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n \t\t\tthis.max.equals(bounds.getBottomRight());\r\n \t},\r\n };\r\n\r\n\r\n // @factory L.bounds(corner1: Point, corner2: Point)\r\n // Creates a Bounds object from two corners coordinate pairs.\r\n // @alternative\r\n // @factory L.bounds(points: Point[])\r\n // Creates a Bounds object from the given array of points.\r\n function toBounds(a, b) {\r\n \tif (!a || a instanceof Bounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new Bounds(a, b);\r\n }\n\n /*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n \tif (!corner1) { return; }\r\n\r\n \tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n \tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n \t\tthis.extend(latlngs[i]);\r\n \t}\r\n }\r\n\r\n LatLngBounds.prototype = {\r\n\r\n \t// @method extend(latlng: LatLng): this\r\n \t// Extend the bounds to contain the given point\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: LatLngBounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLng) {\r\n \t\t\tsw2 = obj;\r\n \t\t\tne2 = obj;\r\n\r\n \t\t} else if (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj._southWest;\r\n \t\t\tne2 = obj._northEast;\r\n\r\n \t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n \t\t} else {\r\n \t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n \t\t}\r\n\r\n \t\tif (!sw && !ne) {\r\n \t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n \t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n \t\t} else {\r\n \t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n \t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n \t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n \t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method pad(bufferRatio: Number): LatLngBounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n \t\t widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n \t\treturn new LatLngBounds(\r\n \t\t new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n \t\t new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n \t},\r\n\r\n \t// @method getCenter(): LatLng\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function () {\r\n \t\treturn new LatLng(\r\n \t\t (this._southWest.lat + this._northEast.lat) / 2,\r\n \t\t (this._southWest.lng + this._northEast.lng) / 2);\r\n \t},\r\n\r\n \t// @method getSouthWest(): LatLng\r\n \t// Returns the south-west point of the bounds.\r\n \tgetSouthWest: function () {\r\n \t\treturn this._southWest;\r\n \t},\r\n\r\n \t// @method getNorthEast(): LatLng\r\n \t// Returns the north-east point of the bounds.\r\n \tgetNorthEast: function () {\r\n \t\treturn this._northEast;\r\n \t},\r\n\r\n \t// @method getNorthWest(): LatLng\r\n \t// Returns the north-west point of the bounds.\r\n \tgetNorthWest: function () {\r\n \t\treturn new LatLng(this.getNorth(), this.getWest());\r\n \t},\r\n\r\n \t// @method getSouthEast(): LatLng\r\n \t// Returns the south-east point of the bounds.\r\n \tgetSouthEast: function () {\r\n \t\treturn new LatLng(this.getSouth(), this.getEast());\r\n \t},\r\n\r\n \t// @method getWest(): Number\r\n \t// Returns the west longitude of the bounds\r\n \tgetWest: function () {\r\n \t\treturn this._southWest.lng;\r\n \t},\r\n\r\n \t// @method getSouth(): Number\r\n \t// Returns the south latitude of the bounds\r\n \tgetSouth: function () {\r\n \t\treturn this._southWest.lat;\r\n \t},\r\n\r\n \t// @method getEast(): Number\r\n \t// Returns the east longitude of the bounds\r\n \tgetEast: function () {\r\n \t\treturn this._northEast.lng;\r\n \t},\r\n\r\n \t// @method getNorth(): Number\r\n \t// Returns the north latitude of the bounds\r\n \tgetNorth: function () {\r\n \t\treturn this._northEast.lat;\r\n \t},\r\n\r\n \t// @method contains(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n\r\n \t// @alternative\r\n \t// @method contains (latlng: LatLng): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n \t\t\tobj = toLatLng(obj);\r\n \t\t} else {\r\n \t\t\tobj = toLatLngBounds(obj);\r\n \t\t}\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj.getSouthWest();\r\n \t\t\tne2 = obj.getNorthEast();\r\n \t\t} else {\r\n \t\t\tsw2 = ne2 = obj;\r\n \t\t}\r\n\r\n \t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n \t\t (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n \tintersects: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n \t\t lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n \t\treturn latIntersects && lngIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n \toverlaps: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n \t\t lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n \t\treturn latOverlaps && lngOverlaps;\r\n \t},\r\n\r\n \t// @method toBBoxString(): String\r\n \t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n \ttoBBoxString: function () {\r\n \t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n \t},\r\n\r\n \t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (bounds, maxMargin) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n \t\t this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this._southWest && this._northEast);\r\n \t}\r\n };\r\n\r\n // TODO International date line?\r\n\r\n // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n // @alternative\r\n // @factory L.latLngBounds(latlngs: LatLng[])\r\n // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\n function toLatLngBounds(a, b) {\r\n \tif (a instanceof LatLngBounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new LatLngBounds(a, b);\r\n }\n\n /* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLng(lat, lng, alt) {\r\n \tif (isNaN(lat) || isNaN(lng)) {\r\n \t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n \t}\r\n\r\n \t// @property lat: Number\r\n \t// Latitude in degrees\r\n \tthis.lat = +lat;\r\n\r\n \t// @property lng: Number\r\n \t// Longitude in degrees\r\n \tthis.lng = +lng;\r\n\r\n \t// @property alt: Number\r\n \t// Altitude in meters (optional)\r\n \tif (alt !== undefined) {\r\n \t\tthis.alt = +alt;\r\n \t}\r\n }\r\n\r\n LatLng.prototype = {\r\n \t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (obj, maxMargin) {\r\n \t\tif (!obj) { return false; }\r\n\r\n \t\tobj = toLatLng(obj);\r\n\r\n \t\tvar margin = Math.max(\r\n \t\t Math.abs(this.lat - obj.lat),\r\n \t\t Math.abs(this.lng - obj.lng));\r\n\r\n \t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point (for debugging purposes).\r\n \ttoString: function (precision) {\r\n \t\treturn 'LatLng(' +\r\n \t\t formatNum(this.lat, precision) + ', ' +\r\n \t\t formatNum(this.lng, precision) + ')';\r\n \t},\r\n\r\n \t// @method distanceTo(otherLatLng: LatLng): Number\r\n \t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n \tdistanceTo: function (other) {\r\n \t\treturn Earth.distance(this, toLatLng(other));\r\n \t},\r\n\r\n \t// @method wrap(): LatLng\r\n \t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n \twrap: function () {\r\n \t\treturn Earth.wrapLatLng(this);\r\n \t},\r\n\r\n \t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n \t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n \ttoBounds: function (sizeInMeters) {\r\n \t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n \t\t lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n \t\treturn toLatLngBounds(\r\n \t\t [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n \t\t [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n \t},\r\n\r\n \tclone: function () {\r\n \t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n \t}\r\n };\r\n\r\n\r\n\r\n // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Array): LatLng\r\n // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Object): LatLng\r\n // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\n function toLatLng(a, b, c) {\r\n \tif (a instanceof LatLng) {\r\n \t\treturn a;\r\n \t}\r\n \tif (isArray(a) && typeof a[0] !== 'object') {\r\n \t\tif (a.length === 3) {\r\n \t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n \t\t}\r\n \t\tif (a.length === 2) {\r\n \t\t\treturn new LatLng(a[0], a[1]);\r\n \t\t}\r\n \t\treturn null;\r\n \t}\r\n \tif (a === undefined || a === null) {\r\n \t\treturn a;\r\n \t}\r\n \tif (typeof a === 'object' && 'lat' in a) {\r\n \t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n \t}\r\n \tif (b === undefined) {\r\n \t\treturn null;\r\n \t}\r\n \treturn new LatLng(a, b, c);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\n var CRS = {\r\n \t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n \t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n \tlatLngToPoint: function (latlng, zoom) {\r\n \t\tvar projectedPoint = this.projection.project(latlng),\r\n \t\t scale = this.scale(zoom);\r\n\r\n \t\treturn this.transformation._transform(projectedPoint, scale);\r\n \t},\r\n\r\n \t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n \t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n \t// zoom into geographical coordinates.\r\n \tpointToLatLng: function (point, zoom) {\r\n \t\tvar scale = this.scale(zoom),\r\n \t\t untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n \t\treturn this.projection.unproject(untransformedPoint);\r\n \t},\r\n\r\n \t// @method project(latlng: LatLng): Point\r\n \t// Projects geographical coordinates into coordinates in units accepted for\r\n \t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n \tproject: function (latlng) {\r\n \t\treturn this.projection.project(latlng);\r\n \t},\r\n\r\n \t// @method unproject(point: Point): LatLng\r\n \t// Given a projected coordinate returns the corresponding LatLng.\r\n \t// The inverse of `project`.\r\n \tunproject: function (point) {\r\n \t\treturn this.projection.unproject(point);\r\n \t},\r\n\r\n \t// @method scale(zoom: Number): Number\r\n \t// Returns the scale used when transforming projected coordinates into\r\n \t// pixel coordinates for a particular zoom. For example, it returns\r\n \t// `256 * 2^zoom` for Mercator-based CRS.\r\n \tscale: function (zoom) {\r\n \t\treturn 256 * Math.pow(2, zoom);\r\n \t},\r\n\r\n \t// @method zoom(scale: Number): Number\r\n \t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n \t// factor of `scale`.\r\n \tzoom: function (scale) {\r\n \t\treturn Math.log(scale / 256) / Math.LN2;\r\n \t},\r\n\r\n \t// @method getProjectedBounds(zoom: Number): Bounds\r\n \t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n \tgetProjectedBounds: function (zoom) {\r\n \t\tif (this.infinite) { return null; }\r\n\r\n \t\tvar b = this.projection.bounds,\r\n \t\t s = this.scale(zoom),\r\n \t\t min = this.transformation.transform(b.min, s),\r\n \t\t max = this.transformation.transform(b.max, s);\r\n\r\n \t\treturn new Bounds(min, max);\r\n \t},\r\n\r\n \t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n \t// Returns the distance between two geographical coordinates.\r\n\r\n \t// @property code: String\r\n \t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n \t//\r\n \t// @property wrapLng: Number[]\r\n \t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n \t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n \t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n \t//\r\n \t// @property wrapLat: Number[]\r\n \t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n \t// wrapLng: [min, max],\r\n \t// wrapLat: [min, max],\r\n\r\n \t// @property infinite: Boolean\r\n \t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n \tinfinite: false,\r\n\r\n \t// @method wrapLatLng(latlng: LatLng): LatLng\r\n \t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n \t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n \twrapLatLng: function (latlng) {\r\n \t\tvar lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n \t\t lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n \t\t alt = latlng.alt;\r\n\r\n \t\treturn new LatLng(lat, lng, alt);\r\n \t},\r\n\r\n \t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n \t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n \t// that its center is within the CRS's bounds.\r\n \t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n \twrapLatLngBounds: function (bounds) {\r\n \t\tvar center = bounds.getCenter(),\r\n \t\t newCenter = this.wrapLatLng(center),\r\n \t\t latShift = center.lat - newCenter.lat,\r\n \t\t lngShift = center.lng - newCenter.lng;\r\n\r\n \t\tif (latShift === 0 && lngShift === 0) {\r\n \t\t\treturn bounds;\r\n \t\t}\r\n\r\n \t\tvar sw = bounds.getSouthWest(),\r\n \t\t ne = bounds.getNorthEast(),\r\n \t\t newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n \t\t newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n \t\treturn new LatLngBounds(newSw, newNe);\r\n \t}\r\n };\n\n /*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\n var Earth = extend({}, CRS, {\n \twrapLng: [-180, 180],\n\n \t// Mean Earth Radius, as recommended for use by\n \t// the International Union of Geodesy and Geophysics,\n \t// see https://rosettacode.org/wiki/Haversine_formula\n \tR: 6371000,\n\n \t// distance between two geographical points using spherical law of cosines approximation\n \tdistance: function (latlng1, latlng2) {\n \t\tvar rad = Math.PI / 180,\n \t\t lat1 = latlng1.lat * rad,\n \t\t lat2 = latlng2.lat * rad,\n \t\t sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n \t\t sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n \t\t a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n \t\t c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n \t\treturn this.R * c;\n \t}\n });\n\n /*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\n var earthRadius = 6378137;\r\n\r\n var SphericalMercator = {\r\n\r\n \tR: earthRadius,\r\n \tMAX_LATITUDE: 85.0511287798,\r\n\r\n \tproject: function (latlng) {\r\n \t\tvar d = Math.PI / 180,\r\n \t\t max = this.MAX_LATITUDE,\r\n \t\t lat = Math.max(Math.min(max, latlng.lat), -max),\r\n \t\t sin = Math.sin(lat * d);\r\n\r\n \t\treturn new Point(\r\n \t\t\tthis.R * latlng.lng * d,\r\n \t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n \t},\r\n\r\n \tunproject: function (point) {\r\n \t\tvar d = 180 / Math.PI;\r\n\r\n \t\treturn new LatLng(\r\n \t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n \t\t\tpoint.x * d / this.R);\r\n \t},\r\n\r\n \tbounds: (function () {\r\n \t\tvar d = earthRadius * Math.PI;\r\n \t\treturn new Bounds([-d, -d], [d, d]);\r\n \t})()\r\n };\n\n /*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), // L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); // L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Creates a `Transformation` object with the given coefficients.\r\n function Transformation(a, b, c, d) {\r\n \tif (isArray(a)) {\r\n \t\t// use array properties\r\n \t\tthis._a = a[0];\r\n \t\tthis._b = a[1];\r\n \t\tthis._c = a[2];\r\n \t\tthis._d = a[3];\r\n \t\treturn;\r\n \t}\r\n \tthis._a = a;\r\n \tthis._b = b;\r\n \tthis._c = c;\r\n \tthis._d = d;\r\n }\r\n\r\n Transformation.prototype = {\r\n \t// @method transform(point: Point, scale?: Number): Point\r\n \t// Returns a transformed point, optionally multiplied by the given scale.\r\n \t// Only accepts actual `L.Point` instances, not arrays.\r\n \ttransform: function (point, scale) { // (Point, Number) -> Point\r\n \t\treturn this._transform(point.clone(), scale);\r\n \t},\r\n\r\n \t// destructive transform (faster)\r\n \t_transform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\tpoint.x = scale * (this._a * point.x + this._b);\r\n \t\tpoint.y = scale * (this._c * point.y + this._d);\r\n \t\treturn point;\r\n \t},\r\n\r\n \t// @method untransform(point: Point, scale?: Number): Point\r\n \t// Returns the reverse transformation of the given point, optionally divided\r\n \t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n \tuntransform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\treturn new Point(\r\n \t\t (point.x / scale - this._b) / this._a,\r\n \t\t (point.y / scale - this._d) / this._c);\r\n \t}\r\n };\r\n\r\n // factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n // @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Instantiates a Transformation object with the given coefficients.\r\n\r\n // @alternative\r\n // @factory L.transformation(coefficients: Array): Transformation\r\n // Expects an coefficients array of the form\r\n // `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\n function toTransformation(a, b, c, d) {\r\n \treturn new Transformation(a, b, c, d);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\n var EPSG3857 = extend({}, Earth, {\r\n \tcode: 'EPSG:3857',\r\n \tprojection: SphericalMercator,\r\n\r\n \ttransformation: (function () {\r\n \t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n \t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n \t}())\r\n });\r\n\r\n var EPSG900913 = extend({}, EPSG3857, {\r\n \tcode: 'EPSG:900913'\r\n });\n\n // @namespace SVG; @section\n // There are several static functions which can be called without instantiating L.SVG:\n\n // @function create(name: String): SVGElement\n // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n // corresponding to the class name passed. For example, using 'line' will return\n // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\n function svgCreate(name) {\n \treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n }\n\n // @function pointsToPath(rings: Point[], closed: Boolean): String\n // Generates a SVG path string for multiple rings, with each ring turning\n // into \"M..L..L..\" instructions\n function pointsToPath(rings, closed) {\n \tvar str = '',\n \ti, j, len, len2, points, p;\n\n \tfor (i = 0, len = rings.length; i < len; i++) {\n \t\tpoints = rings[i];\n\n \t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n \t\t\tp = points[j];\n \t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n \t\t}\n\n \t\t// closes the ring for polygons; \"x\" is VML syntax\n \t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n \t}\n\n \t// SVG complains about empty path strings\n \treturn str || 'M0 0';\n }\n\n /*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n * alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\n var style = document.documentElement.style;\r\n\r\n // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\n var ie = 'ActiveXObject' in window;\r\n\r\n // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\n var ielt9 = ie && !document.addEventListener;\r\n\r\n // @property edge: Boolean; `true` for the Edge web browser.\r\n var edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n // @property webkit: Boolean;\r\n // `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\n var webkit = userAgentContains('webkit');\r\n\r\n // @property android: Boolean\r\n // **Deprecated.** `true` for any browser running on an Android platform.\r\n var android = userAgentContains('android');\r\n\r\n // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\n var android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\n var webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\n var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n // @property opera: Boolean; `true` for the Opera browser\r\n var opera = !!window.opera;\r\n\r\n // @property chrome: Boolean; `true` for the Chrome browser.\r\n var chrome = !edge && userAgentContains('chrome');\r\n\r\n // @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\n var gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n // @property safari: Boolean; `true` for the Safari browser.\r\n var safari = !chrome && userAgentContains('safari');\r\n\r\n var phantom = userAgentContains('phantom');\r\n\r\n // @property opera12: Boolean\r\n // `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\n var opera12 = 'OTransition' in style;\r\n\r\n // @property win: Boolean; `true` when the browser is running in a Windows platform\r\n var win = navigator.platform.indexOf('Win') === 0;\r\n\r\n // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\n var ie3d = ie && ('transition' in style);\r\n\r\n // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\n var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\n var gecko3d = 'MozPerspective' in style;\r\n\r\n // @property any3d: Boolean\r\n // `true` for all browsers supporting CSS transforms.\r\n var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n // @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\n var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\n var mobileWebkit = mobile && webkit;\r\n\r\n // @property mobileWebkit3d: Boolean\r\n // `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\n var mobileWebkit3d = mobile && webkit3d;\r\n\r\n // @property msPointer: Boolean\r\n // `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\n var msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n // @property pointer: Boolean\r\n // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\n var pointer = !!(window.PointerEvent || msPointer);\r\n\r\n // @property touchNative: Boolean\r\n // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n // **This does not necessarily mean** that the browser is running in a computer with\r\n // a touchscreen, it only means that the browser is capable of understanding\r\n // touch events.\r\n var touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n // @property touch: Boolean\r\n // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\n var touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\n var mobileOpera = mobile && opera;\r\n\r\n // @property mobileGecko: Boolean\r\n // `true` for gecko-based browsers running in a mobile device.\r\n var mobileGecko = mobile && gecko;\r\n\r\n // @property retina: Boolean\r\n // `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\n var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n // @property passiveEvents: Boolean\r\n // `true` for browsers that support passive events.\r\n var passiveEvents = (function () {\r\n \tvar supportsPassiveOption = false;\r\n \ttry {\r\n \t\tvar opts = Object.defineProperty({}, 'passive', {\r\n \t\t\tget: function () { // eslint-disable-line getter-return\r\n \t\t\t\tsupportsPassiveOption = true;\r\n \t\t\t}\r\n \t\t});\r\n \t\twindow.addEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t\twindow.removeEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t} catch (e) {\r\n \t\t// Errors can safely be ignored since this is only a browser support test.\r\n \t}\r\n \treturn supportsPassiveOption;\r\n }());\r\n\r\n // @property canvas: Boolean\r\n // `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\n var canvas$1 = (function () {\r\n \treturn !!document.createElement('canvas').getContext;\r\n }());\r\n\r\n // @property svg: Boolean\r\n // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\n var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\n var inlineSvg = !!svg$1 && (function () {\r\n \tvar div = document.createElement('div');\r\n \tdiv.innerHTML = '';\r\n \treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n })();\r\n\r\n // @property vml: Boolean\r\n // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\n var vml = !svg$1 && (function () {\r\n \ttry {\r\n \t\tvar div = document.createElement('div');\r\n \t\tdiv.innerHTML = '';\r\n\r\n \t\tvar shape = div.firstChild;\r\n \t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n \t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n \t} catch (e) {\r\n \t\treturn false;\r\n \t}\r\n }());\r\n\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Mac platform\r\n var mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Linux platform\r\n var linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\n function userAgentContains(str) {\r\n \treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n }\r\n\r\n\r\n var Browser = {\r\n \tie: ie,\r\n \tielt9: ielt9,\r\n \tedge: edge,\r\n \twebkit: webkit,\r\n \tandroid: android,\r\n \tandroid23: android23,\r\n \tandroidStock: androidStock,\r\n \topera: opera,\r\n \tchrome: chrome,\r\n \tgecko: gecko,\r\n \tsafari: safari,\r\n \tphantom: phantom,\r\n \topera12: opera12,\r\n \twin: win,\r\n \tie3d: ie3d,\r\n \twebkit3d: webkit3d,\r\n \tgecko3d: gecko3d,\r\n \tany3d: any3d,\r\n \tmobile: mobile,\r\n \tmobileWebkit: mobileWebkit,\r\n \tmobileWebkit3d: mobileWebkit3d,\r\n \tmsPointer: msPointer,\r\n \tpointer: pointer,\r\n \ttouch: touch,\r\n \ttouchNative: touchNative,\r\n \tmobileOpera: mobileOpera,\r\n \tmobileGecko: mobileGecko,\r\n \tretina: retina,\r\n \tpassiveEvents: passiveEvents,\r\n \tcanvas: canvas$1,\r\n \tsvg: svg$1,\r\n \tvml: vml,\r\n \tinlineSvg: inlineSvg,\r\n \tmac: mac,\r\n \tlinux: linux\r\n };\n\n /*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\n var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';\n var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';\n var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';\n var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\n var pEvent = {\n \ttouchstart : POINTER_DOWN,\n \ttouchmove : POINTER_MOVE,\n \ttouchend : POINTER_UP,\n \ttouchcancel : POINTER_CANCEL\n };\n var handle = {\n \ttouchstart : _onPointerStart,\n \ttouchmove : _handlePointer,\n \ttouchend : _handlePointer,\n \ttouchcancel : _handlePointer\n };\n var _pointers = {};\n var _pointerDocListener = false;\n\n // Provides a touch events wrapper for (ms)pointer events.\n // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\n function addPointerListener(obj, type, handler) {\n \tif (type === 'touchstart') {\n \t\t_addPointerDocListener();\n \t}\n \tif (!handle[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn falseFn;\n \t}\n \thandler = handle[type].bind(this, handler);\n \tobj.addEventListener(pEvent[type], handler, false);\n \treturn handler;\n }\n\n function removePointerListener(obj, type, handler) {\n \tif (!pEvent[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn;\n \t}\n \tobj.removeEventListener(pEvent[type], handler, false);\n }\n\n function _globalPointerDown(e) {\n \t_pointers[e.pointerId] = e;\n }\n\n function _globalPointerMove(e) {\n \tif (_pointers[e.pointerId]) {\n \t\t_pointers[e.pointerId] = e;\n \t}\n }\n\n function _globalPointerUp(e) {\n \tdelete _pointers[e.pointerId];\n }\n\n function _addPointerDocListener() {\n \t// need to keep track of what pointers and how many are active to provide e.touches emulation\n \tif (!_pointerDocListener) {\n \t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n \t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n \t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n \t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n \t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n \t\t_pointerDocListener = true;\n \t}\n }\n\n function _handlePointer(handler, e) {\n \tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n \te.touches = [];\n \tfor (var i in _pointers) {\n \t\te.touches.push(_pointers[i]);\n \t}\n \te.changedTouches = [e];\n\n \thandler(e);\n }\n\n function _onPointerStart(handler, e) {\n \t// IE10 specific: MsTouch needs preventDefault. See #2000\n \tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n \t\tpreventDefault(e);\n \t}\n \t_handlePointer(handler, e);\n }\n\n /*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\n function makeDblclick(event) {\r\n \t// in modern browsers `type` cannot be just overridden:\r\n \t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n \tvar newEvent = {},\r\n \t prop, i;\r\n \tfor (i in event) {\r\n \t\tprop = event[i];\r\n \t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n \t}\r\n \tevent = newEvent;\r\n \tnewEvent.type = 'dblclick';\r\n \tnewEvent.detail = 2;\r\n \tnewEvent.isTrusted = false;\r\n \tnewEvent._simulated = true; // for debug purposes\r\n \treturn newEvent;\r\n }\r\n\r\n var delay = 200;\r\n function addDoubleTapListener(obj, handler) {\r\n \t// Most browsers handle double tap natively\r\n \tobj.addEventListener('dblclick', handler);\r\n\r\n \t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n \t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n \t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n \tvar last = 0,\r\n \t detail;\r\n \tfunction simDblclick(e) {\r\n \t\tif (e.detail !== 1) {\r\n \t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (e.pointerType === 'mouse' ||\r\n \t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// When clicking on an , the browser generates a click on its\r\n \t\t//
\n );\n })}\n \n )}\n\n {/* Contacts */}\n {nonFavoriteContacts.length > 0 && (\n <>\n
\n Contacts\n {nonFavoriteChannels.length === 0 && (\n \n {sortOrder === 'alpha' ? 'A-Z' : '⏱'}\n \n )}\n
\n {nonFavoriteContacts.map((contact) => {\n const unreadCount = getUnreadCount('contact', contact.public_key);\n const isMention = hasMention('contact', contact.public_key);\n return (\n 0 && '[&_.name]:font-bold [&_.name]:text-foreground'\n )}\n onClick={() =>\n handleSelectConversation({\n type: 'contact',\n id: contact.public_key,\n name: getContactDisplayName(contact.name, contact.public_key),\n })\n }\n >\n \n \n {getContactDisplayName(contact.name, contact.public_key)}\n \n {unreadCount > 0 && (\n \n {formatUnreadCount(unreadCount)}\n \n )}\n
\n );\n })}\n \n )}\n\n {/* Empty state */}\n {nonFavoriteContacts.length === 0 &&\n nonFavoriteChannels.length === 0 &&\n favoriteItems.length === 0 && (\n
\n {query ? 'No matches found' : 'No conversations yet'}\n
\n )}\n \n \n );\n}\n","/**\n * Parse sender from channel message text.\n * Channel messages have format \"sender: message\".\n */\nexport function parseSenderFromText(text: string): { sender: string | null; content: string } {\n const colonIndex = text.indexOf(': ');\n if (colonIndex > 0 && colonIndex < 50) {\n const potentialSender = text.substring(0, colonIndex);\n // Check for colon in potential sender (would indicate it's not a simple name)\n if (!potentialSender.includes(':')) {\n return {\n sender: potentialSender,\n content: text.substring(colonIndex + 2),\n };\n }\n }\n return { sender: null, content: text };\n}\n\n/**\n * Format a Unix timestamp to a time string.\n * Shows date for messages not from today.\n */\nexport function formatTime(timestamp: number): string {\n const date = new Date(timestamp * 1000);\n const now = new Date();\n const isToday = date.toDateString() === now.toDateString();\n\n const time = date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n\n if (isToday) {\n return time;\n }\n\n // Show short date for older messages\n const dateStr = date.toLocaleDateString([], { month: 'short', day: 'numeric' });\n return `${dateStr} ${time}`;\n}\n","import { useEffect, useLayoutEffect, useRef, useCallback, useState, type ReactNode } from 'react';\nimport type { Contact, Message } from '../types';\nimport { CONTACT_TYPE_REPEATER } from '../types';\nimport { formatTime, parseSenderFromText } from '../utils/messageParser';\nimport { pubkeysMatch } from '../utils/pubkey';\nimport { ContactAvatar } from './ContactAvatar';\nimport { cn } from '@/lib/utils';\n\ninterface MessageListProps {\n messages: Message[];\n contacts: Contact[];\n loading: boolean;\n loadingOlder?: boolean;\n hasOlderMessages?: boolean;\n onSenderClick?: (sender: string) => void;\n onLoadOlder?: () => void;\n radioName?: string;\n}\n\n// Helper to render text with highlighted @[Name] mentions\nfunction renderTextWithMentions(text: string, radioName?: string): ReactNode {\n if (!radioName) return text;\n\n const mentionPattern = /@\\[([^\\]]+)\\]/g;\n const parts: ReactNode[] = [];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n let keyIndex = 0;\n\n while ((match = mentionPattern.exec(text)) !== null) {\n // Add text before the match\n if (match.index > lastIndex) {\n parts.push(text.slice(lastIndex, match.index));\n }\n\n const mentionedName = match[1];\n const isOwnMention = mentionedName === radioName;\n\n parts.push(\n \n @[{mentionedName}]\n \n );\n\n lastIndex = match.index + match[0].length;\n }\n\n // Add remaining text after last match\n if (lastIndex < text.length) {\n parts.push(text.slice(lastIndex));\n }\n\n return parts.length > 0 ? parts : text;\n}\n\nexport function MessageList({\n messages,\n contacts,\n loading,\n loadingOlder = false,\n hasOlderMessages = false,\n onSenderClick,\n onLoadOlder,\n radioName,\n}: MessageListProps) {\n const listRef = useRef(null);\n const prevMessagesLengthRef = useRef(0);\n const isInitialLoadRef = useRef(true);\n const [showScrollToBottom, setShowScrollToBottom] = useState(false);\n\n // Capture scroll state in the scroll handler BEFORE any state updates\n const scrollStateRef = useRef({\n scrollTop: 0,\n scrollHeight: 0,\n clientHeight: 0,\n wasNearTop: false,\n wasNearBottom: true, // Default to true so initial messages scroll to bottom\n });\n\n // Handle scroll position AFTER render\n useLayoutEffect(() => {\n if (!listRef.current) return;\n\n const list = listRef.current;\n const messagesAdded = messages.length - prevMessagesLengthRef.current;\n\n if (isInitialLoadRef.current && messages.length > 0) {\n // Initial load - scroll to bottom\n list.scrollTop = list.scrollHeight;\n isInitialLoadRef.current = false;\n } else if (messagesAdded > 0 && prevMessagesLengthRef.current > 0) {\n // Messages were added - use scroll state captured before the update\n const scrollHeightDiff = list.scrollHeight - scrollStateRef.current.scrollHeight;\n\n if (scrollStateRef.current.wasNearTop && scrollHeightDiff > 0) {\n // User was near top (loading older) - preserve position by adding the height diff\n list.scrollTop = scrollStateRef.current.scrollTop + scrollHeightDiff;\n } else if (scrollStateRef.current.wasNearBottom) {\n // User was near bottom - scroll to bottom for new messages (including sent)\n list.scrollTop = list.scrollHeight;\n }\n }\n\n prevMessagesLengthRef.current = messages.length;\n }, [messages]);\n\n // Reset initial load flag when conversation changes (messages becomes empty then filled)\n useEffect(() => {\n if (messages.length === 0) {\n isInitialLoadRef.current = true;\n prevMessagesLengthRef.current = 0;\n scrollStateRef.current = {\n scrollTop: 0,\n scrollHeight: 0,\n clientHeight: 0,\n wasNearTop: false,\n wasNearBottom: true,\n };\n }\n }, [messages.length]);\n\n // Handle scroll - capture state and detect when user is near top/bottom\n const handleScroll = useCallback(() => {\n if (!listRef.current) return;\n\n const { scrollTop, scrollHeight, clientHeight } = listRef.current;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n\n // Always capture current scroll state (needed for scroll preservation)\n scrollStateRef.current = {\n scrollTop,\n scrollHeight,\n clientHeight,\n wasNearTop: scrollTop < 150,\n wasNearBottom: distanceFromBottom < 100,\n };\n\n // Show scroll-to-bottom button when not near the bottom (more than 100px away)\n setShowScrollToBottom(distanceFromBottom > 100);\n\n if (!onLoadOlder || loadingOlder || !hasOlderMessages) return;\n\n // Trigger load when within 100px of top\n if (scrollTop < 100) {\n onLoadOlder();\n }\n }, [onLoadOlder, loadingOlder, hasOlderMessages]);\n\n // Scroll to bottom handler\n const scrollToBottom = useCallback(() => {\n if (listRef.current) {\n listRef.current.scrollTop = listRef.current.scrollHeight;\n }\n }, []);\n\n // Look up contact by public key or prefix\n const getContact = (conversationKey: string | null): Contact | null => {\n if (!conversationKey) return null;\n return contacts.find((c) => pubkeysMatch(c.public_key, conversationKey)) || null;\n };\n\n // Look up contact by name (for channel messages where we parse sender from text)\n const getContactByName = (name: string): Contact | null => {\n return contacts.find((c) => c.name === name) || null;\n };\n\n if (loading) {\n return (\n
\n Loading messages...\n
\n );\n }\n\n if (messages.length === 0) {\n return (\n
\n No messages yet\n
\n );\n }\n\n // Sort messages by received_at ascending (oldest first)\n // Note: Deduplication is handled by useConversationMessages.addMessageIfNew()\n // and the database UNIQUE constraint on (type, conversation_key, text, sender_timestamp)\n const sortedMessages = [...messages].sort((a, b) => a.received_at - b.received_at);\n\n // Helper to get a unique sender key for grouping messages\n const getSenderKey = (msg: Message, sender: string | null): string => {\n if (msg.outgoing) return '__outgoing__';\n if (msg.type === 'PRIV' && msg.conversation_key) return msg.conversation_key;\n return sender || '__unknown__';\n };\n\n return (\n
\n \n {loadingOlder && (\n
\n Loading older messages...\n
\n )}\n {!loadingOlder && hasOlderMessages && (\n
\n Scroll up for older messages\n
\n )}\n {sortedMessages.map((msg, index) => {\n // For DMs, look up contact; for channel messages, use parsed sender\n const contact = msg.type === 'PRIV' ? getContact(msg.conversation_key) : null;\n const isRepeater = contact?.type === CONTACT_TYPE_REPEATER;\n\n // Skip sender parsing for repeater messages (CLI responses often have colons)\n const { sender, content } = isRepeater\n ? { sender: null, content: msg.text }\n : parseSenderFromText(msg.text);\n const displaySender = msg.outgoing\n ? 'You'\n : contact?.name || sender || msg.conversation_key?.slice(0, 8) || 'Unknown';\n\n const canClickSender = !msg.outgoing && onSenderClick && displaySender !== 'Unknown';\n\n // Determine if we should show avatar (first message in a chunk from same sender)\n const currentSenderKey = getSenderKey(msg, sender);\n const prevMsg = sortedMessages[index - 1];\n const prevSenderKey = prevMsg\n ? getSenderKey(prevMsg, parseSenderFromText(prevMsg.text).sender)\n : null;\n const showAvatar = !msg.outgoing && currentSenderKey !== prevSenderKey;\n const isFirstMessage = index === 0;\n\n // Get avatar info for incoming messages\n let avatarName: string | null = null;\n let avatarKey: string = '';\n if (!msg.outgoing) {\n if (msg.type === 'PRIV' && msg.conversation_key) {\n // DM: use conversation_key (sender's public key)\n avatarName = contact?.name || null;\n avatarKey = msg.conversation_key;\n } else if (sender) {\n // Channel message: try to find contact by name, or use sender name as pseudo-key\n const senderContact = getContactByName(sender);\n avatarName = sender;\n avatarKey = senderContact?.public_key || `name:${sender}`;\n }\n }\n\n return (\n \n {!msg.outgoing && (\n
\n {showAvatar && avatarKey && (\n \n )}\n
\n )}\n \n {showAvatar && (\n
\n {canClickSender ? (\n onSenderClick(displaySender)}\n title={`Mention ${displaySender}`}\n >\n {displaySender}\n \n ) : (\n displaySender\n )}\n \n {formatTime(msg.sender_timestamp || msg.received_at)}\n \n
\n )}\n
\n {content.split('\\n').map((line, i, arr) => (\n \n {renderTextWithMentions(line, radioName)}\n {i < arr.length - 1 &&
}\n
\n ))}\n {!showAvatar && (\n \n {formatTime(msg.sender_timestamp || msg.received_at)}\n \n )}\n {msg.outgoing && (msg.acked > 0 ? ` ✓${msg.acked > 1 ? msg.acked : ''}` : ' ?')}\n
\n
\n \n );\n })}\n \n\n {/* Scroll to bottom button */}\n {showScrollToBottom && (\n \n \n \n \n \n )}\n \n );\n}\n","import {\n useState,\n useCallback,\n useImperativeHandle,\n forwardRef,\n useRef,\n useMemo,\n type FormEvent,\n type KeyboardEvent,\n} from 'react';\nimport { Input } from './ui/input';\nimport { Button } from './ui/button';\nimport { toast } from './ui/sonner';\nimport { cn } from '@/lib/utils';\n\n// MeshCore message size limits (empirically determined from LoRa packet constraints)\n// Direct delivery allows ~156 bytes; multi-hop requires buffer for path growth.\n// Channels include \"sender: \" prefix in the encrypted payload.\nconst DM_HARD_LIMIT = 156; // Max for direct delivery\nconst DM_WARNING_THRESHOLD = 140; // Conservative for multi-hop\nconst CHANNEL_HARD_LIMIT = 156; // Base limit before sender overhead\nconst CHANNEL_WARNING_THRESHOLD = 120; // Conservative for multi-hop\nconst CHANNEL_DANGER_BUFFER = 8; // Red zone starts this many chars before hard limit\n\ninterface MessageInputProps {\n onSend: (text: string) => Promise;\n disabled: boolean;\n placeholder?: string;\n /** When true, input becomes password field for repeater telemetry */\n isRepeaterMode?: boolean;\n /** Conversation type for character limit calculation */\n conversationType?: 'contact' | 'channel' | 'raw';\n /** Sender name (radio name) for channel message limit calculation */\n senderName?: string;\n}\n\ntype LimitState = 'normal' | 'warning' | 'danger' | 'error';\n\nexport interface MessageInputHandle {\n appendText: (text: string) => void;\n}\n\nexport const MessageInput = forwardRef(function MessageInput(\n { onSend, disabled, placeholder, isRepeaterMode, conversationType, senderName },\n ref\n) {\n const [text, setText] = useState('');\n const [sending, setSending] = useState(false);\n const inputRef = useRef(null);\n\n useImperativeHandle(ref, () => ({\n appendText: (appendedText: string) => {\n setText((prev) => prev + appendedText);\n // Focus the input after appending\n inputRef.current?.focus();\n },\n }));\n\n // Calculate character limits based on conversation type\n const limits = useMemo(() => {\n if (conversationType === 'contact') {\n return {\n warningAt: DM_WARNING_THRESHOLD,\n dangerAt: DM_HARD_LIMIT, // Same as hard limit for DMs (no intermediate red zone)\n hardLimit: DM_HARD_LIMIT,\n };\n } else if (conversationType === 'channel') {\n // Channel hard limit = 156 - senderName.length - 2 (for \": \" separator)\n const nameLen = senderName?.length ?? 10;\n const hardLimit = Math.max(1, CHANNEL_HARD_LIMIT - nameLen - 2);\n return {\n warningAt: CHANNEL_WARNING_THRESHOLD,\n dangerAt: Math.max(1, hardLimit - CHANNEL_DANGER_BUFFER),\n hardLimit,\n };\n }\n return null; // Raw/other - no limits\n }, [conversationType, senderName]);\n\n // Determine current limit state\n const { limitState, warningMessage } = useMemo((): {\n limitState: LimitState;\n warningMessage: string | null;\n } => {\n if (!limits) return { limitState: 'normal', warningMessage: null };\n\n const len = text.length;\n if (len >= limits.hardLimit) {\n return { limitState: 'error', warningMessage: 'likely truncated by radio' };\n }\n if (len >= limits.dangerAt) {\n return { limitState: 'danger', warningMessage: 'may impact multi-repeater hop delivery' };\n }\n if (len >= limits.warningAt) {\n return { limitState: 'warning', warningMessage: 'may impact multi-repeater hop delivery' };\n }\n return { limitState: 'normal', warningMessage: null };\n }, [text.length, limits]);\n\n const remaining = limits ? limits.hardLimit - text.length : 0;\n\n const handleSubmit = useCallback(\n async (e: FormEvent) => {\n e.preventDefault();\n const trimmed = text.trim();\n\n // For repeater mode, empty password means guest login\n if (isRepeaterMode) {\n if (sending || disabled) return;\n setSending(true);\n try {\n await onSend(trimmed);\n setText('');\n } catch (err) {\n console.error('Failed to request telemetry:', err);\n toast.error('Failed to request telemetry', {\n description: err instanceof Error ? err.message : 'Check radio connection',\n });\n return;\n } finally {\n setSending(false);\n }\n // Refocus after React re-enables the input (now in CLI command mode)\n setTimeout(() => inputRef.current?.focus(), 0);\n } else {\n if (!trimmed || sending || disabled) return;\n setSending(true);\n try {\n await onSend(trimmed);\n setText('');\n } catch (err) {\n console.error('Failed to send message:', err);\n toast.error('Failed to send message', {\n description: err instanceof Error ? err.message : 'Check radio connection',\n });\n return;\n } finally {\n setSending(false);\n }\n // Refocus after React re-enables the input\n setTimeout(() => inputRef.current?.focus(), 0);\n }\n },\n [text, sending, disabled, onSend, isRepeaterMode]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSubmit(e as unknown as FormEvent);\n }\n },\n [handleSubmit]\n );\n\n // For repeater mode, always allow submit (empty = guest login)\n const canSubmit = isRepeaterMode ? true : text.trim().length > 0;\n\n // Show character counter for messages (not repeater mode or raw)\n const showCharCounter = !isRepeaterMode && limits !== null;\n\n return (\n \n
\n setText(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={\n placeholder ||\n (isRepeaterMode ? 'Enter password for admin login...' : 'Type a message...')\n }\n disabled={disabled || sending}\n className=\"flex-1 min-w-0\"\n />\n \n {sending\n ? isRepeaterMode\n ? 'Logging in...'\n : 'Sending...'\n : isRepeaterMode\n ? text.trim()\n ? 'Log in with password'\n : 'Log in as guest/use repeater ACLs'\n : 'Send'}\n \n
\n {showCharCounter && (\n
\n \n {text.length}/{limits!.hardLimit}\n {remaining < 0 && ` (${remaining})`}\n \n {warningMessage && (\n \n — {warningMessage}\n \n )}\n
\n )}\n \n );\n});\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return
...
\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes) => (\n
\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes) => (\n \n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n);\n\nconst Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, ...props }, ref) => (\n \n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n disabled,\n setChecked,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(\n CheckboxProviderImpl,\n {\n scope: __scopeCheckbox,\n ...context,\n children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n }\n );\n}\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = React.forwardRef(\n ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener(\"reset\", reset);\n return () => form.removeEventListener(\"reset\", reset);\n }\n }, [control, setChecked]);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nCheckboxTrigger.displayName = TRIGGER_NAME;\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n return /* @__PURE__ */ jsx(\n CheckboxProvider,\n {\n __scopeCheckbox,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n CheckboxTrigger,\n {\n ...checkboxProps,\n ref: forwardedRef,\n __scopeCheckbox\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n CheckboxBubbleInput,\n {\n __scopeCheckbox\n }\n )\n ] })\n }\n );\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n )\n }\n );\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = React.forwardRef(\n ({ __scopeCheckbox, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Checkbox,\n CheckboxIndicator,\n CheckboxIndicator as Indicator,\n Checkbox as Root,\n createCheckboxScope,\n CheckboxBubbleInput as unstable_BubbleInput,\n CheckboxBubbleInput as unstable_CheckboxBubbleInput,\n CheckboxProvider as unstable_CheckboxProvider,\n CheckboxTrigger as unstable_CheckboxTrigger,\n CheckboxProvider as unstable_Provider,\n CheckboxTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst Checkbox = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import { useState, useRef } from 'react';\nimport type { Contact, Conversation } from '../types';\nimport { getContactDisplayName } from '../utils/pubkey';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './ui/dialog';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from './ui/tabs';\nimport { Input } from './ui/input';\nimport { Label } from './ui/label';\nimport { Checkbox } from './ui/checkbox';\nimport { Button } from './ui/button';\n\ntype Tab = 'existing' | 'new-contact' | 'new-room' | 'hashtag';\n\ninterface NewMessageModalProps {\n open: boolean;\n contacts: Contact[];\n undecryptedCount: number;\n onClose: () => void;\n onSelectConversation: (conversation: Conversation) => void;\n onCreateContact: (name: string, publicKey: string, tryHistorical: boolean) => Promise;\n onCreateChannel: (name: string, key: string, tryHistorical: boolean) => Promise;\n onCreateHashtagChannel: (name: string, tryHistorical: boolean) => Promise;\n}\n\nexport function NewMessageModal({\n open,\n contacts,\n undecryptedCount,\n onClose,\n onSelectConversation,\n onCreateContact,\n onCreateChannel,\n onCreateHashtagChannel,\n}: NewMessageModalProps) {\n const [tab, setTab] = useState('existing');\n const [name, setName] = useState('');\n const [key, setKey] = useState('');\n const [tryHistorical, setTryHistorical] = useState(false);\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const hashtagInputRef = useRef(null);\n\n const handleCreate = async () => {\n setError('');\n setLoading(true);\n\n try {\n if (tab === 'new-contact') {\n if (!name.trim() || !key.trim()) {\n setError('Name and public key are required');\n return;\n }\n await onCreateContact(name.trim(), key.trim(), tryHistorical);\n onSelectConversation({\n type: 'contact',\n id: key.trim(),\n name: name.trim(),\n });\n } else if (tab === 'new-room') {\n if (!name.trim() || !key.trim()) {\n setError('Room name and key are required');\n return;\n }\n await onCreateChannel(name.trim(), key.trim(), tryHistorical);\n } else if (tab === 'hashtag') {\n const channelName = name.trim();\n const validationError = validateHashtagName(channelName);\n if (validationError) {\n setError(validationError);\n return;\n }\n await onCreateHashtagChannel(`#${channelName}`, tryHistorical);\n }\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to create');\n } finally {\n setLoading(false);\n }\n };\n\n const validateHashtagName = (channelName: string): string | null => {\n if (!channelName) {\n return 'Channel name is required';\n }\n if (!/^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$/.test(channelName)) {\n return 'Use letters, numbers, and single dashes (no leading/trailing dashes)';\n }\n return null;\n };\n\n const handleCreateAndAddAnother = async () => {\n setError('');\n const channelName = name.trim();\n const validationError = validateHashtagName(channelName);\n if (validationError) {\n setError(validationError);\n return;\n }\n\n setLoading(true);\n try {\n await onCreateHashtagChannel(`#${channelName}`, tryHistorical);\n setName('');\n hashtagInputRef.current?.focus();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to create');\n } finally {\n setLoading(false);\n }\n };\n\n const showHistoricalOption = tab !== 'existing' && undecryptedCount > 0;\n\n return (\n !isOpen && onClose()}>\n \n \n New Conversation\n \n\n setTab(v as Tab)} className=\"w-full\">\n \n Existing\n Contact\n Room\n Hashtag\n \n\n \n
\n {contacts.length === 0 ? (\n
No contacts available
\n ) : (\n contacts.map((contact) => (\n {\n onSelectConversation({\n type: 'contact',\n id: contact.public_key,\n name: getContactDisplayName(contact.name, contact.public_key),\n });\n onClose();\n }}\n >\n {getContactDisplayName(contact.name, contact.public_key)}\n
\n ))\n )}\n
\n \n\n \n
\n \n setName(e.target.value)}\n placeholder=\"Contact name\"\n />\n
\n
\n \n setKey(e.target.value)}\n placeholder=\"64-character hex public key\"\n />\n
\n
\n\n \n
\n \n setName(e.target.value)}\n placeholder=\"Room name\"\n />\n
\n
\n \n setKey(e.target.value)}\n placeholder=\"Pre-shared key (hex)\"\n />\n
\n
\n\n \n
\n \n
\n #\n setName(e.target.value)}\n placeholder=\"channel-name\"\n className=\"flex-1\"\n />\n
\n
\n
\n \n\n {showHistoricalOption && (\n
\n
\n \n Try decrypting {undecryptedCount.toLocaleString()} stored packet\n {undecryptedCount !== 1 ? 's' : ''}\n \n setTryHistorical(checked === true)}\n />\n
\n {tryHistorical && (\n

\n Messages will stream in as they decrypt in the background\n

\n )}\n
\n )}\n\n {error &&
{error}
}\n\n \n \n {tab === 'hashtag' && (\n \n )}\n {tab !== 'existing' && (\n \n )}\n \n \n \n );\n}\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/lib/utils';\n\nconst Separator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n \n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground',\n {\n variants: {\n variant: {\n default: 'bg-background text-foreground',\n destructive:\n 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive',\n warning: 'border-yellow-500/50 bg-yellow-500/10 text-yellow-200 [&>svg]:text-yellow-500',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n
\n));\nAlert.displayName = 'Alert';\n\nconst AlertTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n )\n);\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n));\nAlertDescription.displayName = 'AlertDescription';\n\nexport { Alert, AlertTitle, AlertDescription };\n","import { useState, useEffect } from 'react';\nimport type { AppSettings, AppSettingsUpdate, RadioConfig, RadioConfigUpdate } from '../types';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './ui/dialog';\nimport { Input } from './ui/input';\nimport { Label } from './ui/label';\nimport { Button } from './ui/button';\nimport { Separator } from './ui/separator';\nimport { Alert, AlertDescription } from './ui/alert';\n\ninterface ConfigModalProps {\n open: boolean;\n config: RadioConfig | null;\n appSettings: AppSettings | null;\n onClose: () => void;\n onSave: (update: RadioConfigUpdate) => Promise;\n onSaveAppSettings: (update: AppSettingsUpdate) => Promise;\n onSetPrivateKey: (key: string) => Promise;\n onReboot: () => Promise;\n}\n\nexport function ConfigModal({\n open,\n config,\n appSettings,\n onClose,\n onSave,\n onSaveAppSettings,\n onSetPrivateKey,\n onReboot,\n}: ConfigModalProps) {\n const [name, setName] = useState('');\n const [lat, setLat] = useState('');\n const [lon, setLon] = useState('');\n const [txPower, setTxPower] = useState('');\n const [freq, setFreq] = useState('');\n const [bw, setBw] = useState('');\n const [sf, setSf] = useState('');\n const [cr, setCr] = useState('');\n const [privateKey, setPrivateKey] = useState('');\n const [maxRadioContacts, setMaxRadioContacts] = useState('');\n const [loading, setLoading] = useState(false);\n const [rebooting, setRebooting] = useState(false);\n const [error, setError] = useState('');\n\n useEffect(() => {\n if (config) {\n setName(config.name);\n setLat(String(config.lat));\n setLon(String(config.lon));\n setTxPower(String(config.tx_power));\n setFreq(String(config.radio.freq));\n setBw(String(config.radio.bw));\n setSf(String(config.radio.sf));\n setCr(String(config.radio.cr));\n }\n }, [config]);\n\n useEffect(() => {\n if (appSettings) {\n setMaxRadioContacts(String(appSettings.max_radio_contacts));\n }\n }, [appSettings]);\n\n const handleSave = async () => {\n setError('');\n setLoading(true);\n\n try {\n const update: RadioConfigUpdate = {\n name,\n lat: parseFloat(lat),\n lon: parseFloat(lon),\n tx_power: parseInt(txPower, 10),\n radio: {\n freq: parseFloat(freq),\n bw: parseFloat(bw),\n sf: parseInt(sf, 10),\n cr: parseInt(cr, 10),\n },\n };\n await onSave(update);\n\n const newMaxRadioContacts = parseInt(maxRadioContacts, 10);\n if (!isNaN(newMaxRadioContacts) && newMaxRadioContacts !== appSettings?.max_radio_contacts) {\n await onSaveAppSettings({ max_radio_contacts: newMaxRadioContacts });\n }\n\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to save');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSetPrivateKey = async () => {\n if (!privateKey.trim()) {\n setError('Private key is required');\n return;\n }\n setError('');\n setLoading(true);\n\n try {\n await onSetPrivateKey(privateKey.trim());\n setPrivateKey('');\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to set private key');\n } finally {\n setLoading(false);\n }\n };\n\n const handleReboot = async () => {\n if (\n !confirm('Are you sure you want to reboot the radio? The connection will drop temporarily.')\n ) {\n return;\n }\n setError('');\n setRebooting(true);\n\n try {\n await onReboot();\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to reboot radio');\n } finally {\n setRebooting(false);\n }\n };\n\n return (\n !isOpen && onClose()}>\n \n \n Radio Configuration\n \n\n {!config ? (\n
Loading configuration...
\n ) : (\n
\n
\n \n \n
\n\n
\n \n setName(e.target.value)} />\n
\n\n
\n
\n \n setLat(e.target.value)}\n />\n
\n
\n \n setLon(e.target.value)}\n />\n
\n
\n\n
\n
\n \n setFreq(e.target.value)}\n />\n
\n
\n \n setBw(e.target.value)}\n />\n
\n
\n\n
\n
\n \n setSf(e.target.value)}\n />\n
\n
\n \n setCr(e.target.value)}\n />\n
\n
\n\n
\n
\n \n setTxPower(e.target.value)}\n />\n
\n
\n \n \n
\n
\n\n \n\n
\n \n setMaxRadioContacts(e.target.value)}\n />\n

\n Recent non-repeater contacts loaded to radio for DM auto-ACK (1-1000)\n

\n
\n\n \n\n
\n \n
\n setPrivateKey(e.target.value)}\n placeholder=\"64-character hex private key\"\n className=\"flex-1\"\n />\n \n
\n
\n\n \n\n
\n \n \n \n Some configuration changes (like name) require a radio reboot to take effect. The\n connection will temporarily drop and automatically reconnect.\n \n \n \n {rebooting ? 'Rebooting...' : 'Reboot Radio'}\n \n
\n\n {error &&
{error}
}\n
\n )}\n\n \n \n \n \n
\n
\n );\n}\n","import { useState } from 'react';\nimport type { HealthStatus } from '../types';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from './ui/dialog';\nimport { Input } from './ui/input';\nimport { Label } from './ui/label';\nimport { Button } from './ui/button';\nimport { toast } from './ui/sonner';\nimport { api } from '../api';\n\ninterface MaintenanceModalProps {\n open: boolean;\n health: HealthStatus | null;\n onClose: () => void;\n onHealthRefresh: () => Promise;\n}\n\nexport function MaintenanceModal({\n open,\n health,\n onClose,\n onHealthRefresh,\n}: MaintenanceModalProps) {\n const [retentionDays, setRetentionDays] = useState('14');\n const [cleaning, setCleaning] = useState(false);\n\n const handleCleanup = async () => {\n const days = parseInt(retentionDays, 10);\n if (isNaN(days) || days < 1) {\n toast.error('Invalid retention days', {\n description: 'Retention days must be at least 1',\n });\n return;\n }\n\n setCleaning(true);\n\n try {\n const result = await api.runMaintenance(days);\n toast.success('Database cleanup complete', {\n description: `Deleted ${result.packets_deleted} old packet${result.packets_deleted === 1 ? '' : 's'}`,\n });\n // Refresh health to get updated database size\n await onHealthRefresh();\n } catch (err) {\n console.error('Failed to run maintenance:', err);\n toast.error('Database cleanup failed', {\n description: err instanceof Error ? err.message : 'Unknown error',\n });\n } finally {\n setCleaning(false);\n }\n };\n\n return (\n !isOpen && onClose()}>\n \n \n Database Maintenance\n \n\n
\n

\n Current database size:{' '}\n {health?.database_size_mb ?? '?'} MB\n

\n\n
\n \n

\n Delete undecrypted packets older than the specified days. This helps manage storage\n for packets that couldn't be decrypted (unknown channel keys).\n

\n
\n
\n \n setRetentionDays(e.target.value)}\n className=\"w-20\"\n />\n
\n \n
\n
\n
\n
\n
\n );\n}\n","import { useEffect, useRef } from 'react';\nimport type { RawPacket } from '../types';\n\ninterface RawPacketListProps {\n packets: RawPacket[];\n}\n\nfunction formatTime(timestamp: number): string {\n const date = new Date(timestamp * 1000);\n return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' });\n}\n\nfunction formatPayloadType(type: string): string {\n // Convert SNAKE_CASE to Title Case\n return type\n .split('_')\n .map((word) => word.charAt(0) + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nfunction getDecryptedLabel(packet: RawPacket): string {\n if (!packet.decrypted || !packet.decrypted_info) {\n return formatPayloadType(packet.payload_type);\n }\n\n const info = packet.decrypted_info;\n if (packet.payload_type === 'GROUP_TEXT' && info.channel_name) {\n return `GroupText to ${info.channel_name}`;\n }\n if (packet.payload_type === 'TEXT_MESSAGE' && info.sender) {\n return `TextMessage from ${info.sender}`;\n }\n\n return formatPayloadType(packet.payload_type);\n}\n\nfunction formatSignalInfo(packet: RawPacket): string {\n const parts: string[] = [];\n if (packet.snr !== null && packet.snr !== undefined) {\n parts.push(`SNR: ${packet.snr.toFixed(1)} dB`);\n }\n if (packet.rssi !== null && packet.rssi !== undefined) {\n parts.push(`RSSI: ${packet.rssi} dBm`);\n }\n return parts.join(' | ');\n}\n\nexport function RawPacketList({ packets }: RawPacketListProps) {\n const listRef = useRef(null);\n\n useEffect(() => {\n if (listRef.current) {\n listRef.current.scrollTop = listRef.current.scrollHeight;\n }\n }, [packets]);\n\n if (packets.length === 0) {\n return (\n
\n No packets received yet. Packets will appear here in real-time.\n
\n );\n }\n\n // Sort packets by timestamp ascending (oldest first)\n const sortedPackets = [...packets].sort((a, b) => a.timestamp - b.timestamp);\n\n return (\n
\n {sortedPackets.map((packet) => (\n
\n
\n {!packet.decrypted && 🔒}\n {getDecryptedLabel(packet)}\n {' • '}\n {formatTime(packet.timestamp)}\n
\n {(packet.snr !== null || packet.rssi !== null) && (\n
\n {formatSignalInfo(packet)}\n
\n )}\n
\n {packet.data.toUpperCase()}\n
\n
\n ))}\n
\n );\n}\n","import { useEffect, useRef } from 'react';\nexport function useAttribution(map, attribution) {\n const attributionRef = useRef(attribution);\n useEffect(function updateAttribution() {\n if (attribution !== attributionRef.current && map.attributionControl != null) {\n if (attributionRef.current != null) {\n map.attributionControl.removeAttribution(attributionRef.current);\n }\n if (attribution != null) {\n map.attributionControl.addAttribution(attribution);\n }\n }\n attributionRef.current = attribution;\n }, [\n map,\n attribution\n ]);\n}\n","export function updateCircle(layer, props, prevProps) {\n if (props.center !== prevProps.center) {\n layer.setLatLng(props.center);\n }\n if (props.radius != null && props.radius !== prevProps.radius) {\n layer.setRadius(props.radius);\n }\n}\n","import { createContext, useContext } from 'react';\nexport const CONTEXT_VERSION = 1;\nexport function createLeafletContext(map) {\n return Object.freeze({\n __version: CONTEXT_VERSION,\n map\n });\n}\nexport function extendContext(source, extra) {\n return Object.freeze({\n ...source,\n ...extra\n });\n}\nexport const LeafletContext = createContext(null);\nexport const LeafletProvider = LeafletContext.Provider;\nexport function useLeafletContext() {\n const context = useContext(LeafletContext);\n if (context == null) {\n throw new Error('No context provided: useLeafletContext() can only be used in a descendant of ');\n }\n return context;\n}\n","import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { LeafletProvider } from './context.js';\nexport function createContainerComponent(useElement) {\n function ContainerComponent(props, forwardedRef) {\n const { instance , context } = useElement(props).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n return props.children == null ? null : /*#__PURE__*/ React.createElement(LeafletProvider, {\n value: context\n }, props.children);\n }\n return /*#__PURE__*/ forwardRef(ContainerComponent);\n}\nexport function createDivOverlayComponent(useElement) {\n function OverlayComponent(props, forwardedRef) {\n const [isOpen, setOpen] = useState(false);\n const { instance } = useElement(props, setOpen).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n useEffect(function updateOverlay() {\n if (isOpen) {\n instance.update();\n }\n }, [\n instance,\n isOpen,\n props.children\n ]);\n // @ts-ignore _contentNode missing in type definition\n const contentNode = instance._contentNode;\n return contentNode ? /*#__PURE__*/ createPortal(props.children, contentNode) : null;\n }\n return /*#__PURE__*/ forwardRef(OverlayComponent);\n}\nexport function createLeafComponent(useElement) {\n function LeafComponent(props, forwardedRef) {\n const { instance } = useElement(props).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n return null;\n }\n return /*#__PURE__*/ forwardRef(LeafComponent);\n}\n","import { useEffect, useRef } from 'react';\nexport function useEventHandlers(element, eventHandlers) {\n const eventHandlersRef = useRef();\n useEffect(function addEventHandlers() {\n if (eventHandlers != null) {\n element.instance.on(eventHandlers);\n }\n eventHandlersRef.current = eventHandlers;\n return function removeEventHandlers() {\n if (eventHandlersRef.current != null) {\n element.instance.off(eventHandlersRef.current);\n }\n eventHandlersRef.current = null;\n };\n }, [\n element,\n eventHandlers\n ]);\n}\n","export function withPane(props, context) {\n const pane = props.pane ?? context.pane;\n return pane ? {\n ...props,\n pane\n } : props;\n}\n","import { useAttribution } from './attribution.js';\nimport { useLeafletContext } from './context.js';\nimport { useEventHandlers } from './events.js';\nimport { withPane } from './pane.js';\nexport function createDivOverlayHook(useElement, useLifecycle) {\n return function useDivOverlay(props, setOpen) {\n const context = useLeafletContext();\n const elementRef = useElement(withPane(props, context), context);\n useAttribution(context.map, props.attribution);\n useEventHandlers(elementRef.current, props.eventHandlers);\n useLifecycle(elementRef.current, context, props, setOpen);\n return elementRef;\n };\n}\n","/* @preserve\n * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com\n * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.leaflet = {}));\n})(this, (function (exports) { 'use strict';\n\n var version = \"1.9.4\";\n\n /*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n // @function extend(dest: Object, src?: Object): Object\r\n // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\n function extend(dest) {\r\n \tvar i, j, len, src;\r\n\r\n \tfor (j = 1, len = arguments.length; j < len; j++) {\r\n \t\tsrc = arguments[j];\r\n \t\tfor (i in src) {\r\n \t\t\tdest[i] = src[i];\r\n \t\t}\r\n \t}\r\n \treturn dest;\r\n }\r\n\r\n // @function create(proto: Object, properties?: Object): Object\r\n // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\n var create$2 = Object.create || (function () {\r\n \tfunction F() {}\r\n \treturn function (proto) {\r\n \t\tF.prototype = proto;\r\n \t\treturn new F();\r\n \t};\r\n })();\r\n\r\n // @function bind(fn: Function, …): Function\r\n // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n // Has a `L.bind()` shortcut.\r\n function bind(fn, obj) {\r\n \tvar slice = Array.prototype.slice;\r\n\r\n \tif (fn.bind) {\r\n \t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n \t}\r\n\r\n \tvar args = slice.call(arguments, 2);\r\n\r\n \treturn function () {\r\n \t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n \t};\r\n }\r\n\r\n // @property lastId: Number\r\n // Last unique ID used by [`stamp()`](#util-stamp)\r\n var lastId = 0;\r\n\r\n // @function stamp(obj: Object): Number\r\n // Returns the unique ID of an object, assigning it one if it doesn't have it.\r\n function stamp(obj) {\r\n \tif (!('_leaflet_id' in obj)) {\r\n \t\tobj['_leaflet_id'] = ++lastId;\r\n \t}\r\n \treturn obj._leaflet_id;\r\n }\r\n\r\n // @function throttle(fn: Function, time: Number, context: Object): Function\r\n // Returns a function which executes function `fn` with the given scope `context`\r\n // (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n // `fn` will be called no more than one time per given amount of `time`. The arguments\r\n // received by the bound function will be any arguments passed when binding the\r\n // function, followed by any arguments passed when invoking the bound function.\r\n // Has an `L.throttle` shortcut.\r\n function throttle(fn, time, context) {\r\n \tvar lock, args, wrapperFn, later;\r\n\r\n \tlater = function () {\r\n \t\t// reset lock and call if queued\r\n \t\tlock = false;\r\n \t\tif (args) {\r\n \t\t\twrapperFn.apply(context, args);\r\n \t\t\targs = false;\r\n \t\t}\r\n \t};\r\n\r\n \twrapperFn = function () {\r\n \t\tif (lock) {\r\n \t\t\t// called too soon, queue to call later\r\n \t\t\targs = arguments;\r\n\r\n \t\t} else {\r\n \t\t\t// call and lock until later\r\n \t\t\tfn.apply(context, arguments);\r\n \t\t\tsetTimeout(later, time);\r\n \t\t\tlock = true;\r\n \t\t}\r\n \t};\r\n\r\n \treturn wrapperFn;\r\n }\r\n\r\n // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n // Returns the number `num` modulo `range` in such a way so it lies within\r\n // `range[0]` and `range[1]`. The returned value will be always smaller than\r\n // `range[1]` unless `includeMax` is set to `true`.\r\n function wrapNum(x, range, includeMax) {\r\n \tvar max = range[1],\r\n \t min = range[0],\r\n \t d = max - min;\r\n \treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n }\r\n\r\n // @function falseFn(): Function\r\n // Returns a function which always returns `false`.\r\n function falseFn() { return false; }\r\n\r\n // @function formatNum(num: Number, precision?: Number|false): Number\r\n // Returns the number `num` rounded with specified `precision`.\r\n // The default `precision` value is 6 decimal places.\r\n // `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\n function formatNum(num, precision) {\r\n \tif (precision === false) { return num; }\r\n \tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n \treturn Math.round(num * pow) / pow;\r\n }\r\n\r\n // @function trim(str: String): String\r\n // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\n function trim(str) {\r\n \treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n }\r\n\r\n // @function splitWords(str: String): String[]\r\n // Trims and splits the string on whitespace and returns the array of parts.\r\n function splitWords(str) {\r\n \treturn trim(str).split(/\\s+/);\r\n }\r\n\r\n // @function setOptions(obj: Object, options: Object): Object\r\n // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\n function setOptions(obj, options) {\r\n \tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n \t\tobj.options = obj.options ? create$2(obj.options) : {};\r\n \t}\r\n \tfor (var i in options) {\r\n \t\tobj.options[i] = options[i];\r\n \t}\r\n \treturn obj.options;\r\n }\r\n\r\n // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n // Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n // be appended at the end. If `uppercase` is `true`, the parameter names will\r\n // be uppercased (e.g. `'?A=foo&B=bar'`)\r\n function getParamString(obj, existingUrl, uppercase) {\r\n \tvar params = [];\r\n \tfor (var i in obj) {\r\n \t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n \t}\r\n \treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n }\r\n\r\n var templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n // @function template(str: String, data: Object): String\r\n // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n // `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n // data values — they will be evaluated passing `data` as an argument.\r\n function template(str, data) {\r\n \treturn str.replace(templateRe, function (str, key) {\r\n \t\tvar value = data[key];\r\n\r\n \t\tif (value === undefined) {\r\n \t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n \t\t} else if (typeof value === 'function') {\r\n \t\t\tvalue = value(data);\r\n \t\t}\r\n \t\treturn value;\r\n \t});\r\n }\r\n\r\n // @function isArray(obj): Boolean\r\n // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\n var isArray = Array.isArray || function (obj) {\r\n \treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n };\r\n\r\n // @function indexOf(array: Array, el: Object): Number\r\n // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\n function indexOf(array, el) {\r\n \tfor (var i = 0; i < array.length; i++) {\r\n \t\tif (array[i] === el) { return i; }\r\n \t}\r\n \treturn -1;\r\n }\r\n\r\n // @property emptyImageUrl: String\r\n // Data URI string containing a base64-encoded empty GIF image.\r\n // Used as a hack to free memory from unused images on WebKit-powered\r\n // mobile devices (by setting image `src` to this string).\r\n var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\n function getPrefixed(name) {\r\n \treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n }\r\n\r\n var lastTime = 0;\r\n\r\n // fallback for IE 7-8\r\n function timeoutDefer(fn) {\r\n \tvar time = +new Date(),\r\n \t timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n \tlastTime = time + timeToCall;\r\n \treturn window.setTimeout(fn, timeToCall);\r\n }\r\n\r\n var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\n var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n \t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n // Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n // `context` if given. When `immediate` is set, `fn` is called immediately if\r\n // the browser doesn't have native support for\r\n // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n // otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\n function requestAnimFrame(fn, context, immediate) {\r\n \tif (immediate && requestFn === timeoutDefer) {\r\n \t\tfn.call(context);\r\n \t} else {\r\n \t\treturn requestFn.call(window, bind(fn, context));\r\n \t}\r\n }\r\n\r\n // @function cancelAnimFrame(id: Number): undefined\r\n // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\n function cancelAnimFrame(id) {\r\n \tif (id) {\r\n \t\tcancelFn.call(window, id);\r\n \t}\r\n }\n\n var Util = {\n __proto__: null,\n extend: extend,\n create: create$2,\n bind: bind,\n get lastId () { return lastId; },\n stamp: stamp,\n throttle: throttle,\n wrapNum: wrapNum,\n falseFn: falseFn,\n formatNum: formatNum,\n trim: trim,\n splitWords: splitWords,\n setOptions: setOptions,\n getParamString: getParamString,\n template: template,\n isArray: isArray,\n indexOf: indexOf,\n emptyImageUrl: emptyImageUrl,\n requestFn: requestFn,\n cancelFn: cancelFn,\n requestAnimFrame: requestAnimFrame,\n cancelAnimFrame: cancelAnimFrame\n };\n\n // @class Class\r\n // @aka L.Class\r\n\r\n // @section\r\n // @uninheritable\r\n\r\n // Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\n function Class() {}\r\n\r\n Class.extend = function (props) {\r\n\r\n \t// @function extend(props: Object): Function\r\n \t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n \t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n \tvar NewClass = function () {\r\n\r\n \t\tsetOptions(this);\r\n\r\n \t\t// call the constructor\r\n \t\tif (this.initialize) {\r\n \t\t\tthis.initialize.apply(this, arguments);\r\n \t\t}\r\n\r\n \t\t// call all constructor hooks\r\n \t\tthis.callInitHooks();\r\n \t};\r\n\r\n \tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n \tvar proto = create$2(parentProto);\r\n \tproto.constructor = NewClass;\r\n\r\n \tNewClass.prototype = proto;\r\n\r\n \t// inherit parent's statics\r\n \tfor (var i in this) {\r\n \t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n \t\t\tNewClass[i] = this[i];\r\n \t\t}\r\n \t}\r\n\r\n \t// mix static properties into the class\r\n \tif (props.statics) {\r\n \t\textend(NewClass, props.statics);\r\n \t}\r\n\r\n \t// mix includes into the prototype\r\n \tif (props.includes) {\r\n \t\tcheckDeprecatedMixinEvents(props.includes);\r\n \t\textend.apply(null, [proto].concat(props.includes));\r\n \t}\r\n\r\n \t// mix given properties into the prototype\r\n \textend(proto, props);\r\n \tdelete proto.statics;\r\n \tdelete proto.includes;\r\n\r\n \t// merge options\r\n \tif (proto.options) {\r\n \t\tproto.options = parentProto.options ? create$2(parentProto.options) : {};\r\n \t\textend(proto.options, props.options);\r\n \t}\r\n\r\n \tproto._initHooks = [];\r\n\r\n \t// add method for calling all hooks\r\n \tproto.callInitHooks = function () {\r\n\r\n \t\tif (this._initHooksCalled) { return; }\r\n\r\n \t\tif (parentProto.callInitHooks) {\r\n \t\t\tparentProto.callInitHooks.call(this);\r\n \t\t}\r\n\r\n \t\tthis._initHooksCalled = true;\r\n\r\n \t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n \t\t\tproto._initHooks[i].call(this);\r\n \t\t}\r\n \t};\r\n\r\n \treturn NewClass;\r\n };\r\n\r\n\r\n // @function include(properties: Object): this\r\n // [Includes a mixin](#class-includes) into the current class.\r\n Class.include = function (props) {\r\n \tvar parentOptions = this.prototype.options;\r\n \textend(this.prototype, props);\r\n \tif (props.options) {\r\n \t\tthis.prototype.options = parentOptions;\r\n \t\tthis.mergeOptions(props.options);\r\n \t}\r\n \treturn this;\r\n };\r\n\r\n // @function mergeOptions(options: Object): this\r\n // [Merges `options`](#class-options) into the defaults of the class.\r\n Class.mergeOptions = function (options) {\r\n \textend(this.prototype.options, options);\r\n \treturn this;\r\n };\r\n\r\n // @function addInitHook(fn: Function): this\r\n // Adds a [constructor hook](#class-constructor-hooks) to the class.\r\n Class.addInitHook = function (fn) { // (Function) || (String, args...)\r\n \tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n \tvar init = typeof fn === 'function' ? fn : function () {\r\n \t\tthis[fn].apply(this, args);\r\n \t};\r\n\r\n \tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n \tthis.prototype._initHooks.push(init);\r\n \treturn this;\r\n };\r\n\r\n function checkDeprecatedMixinEvents(includes) {\r\n \t/* global L: true */\r\n \tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n \tincludes = isArray(includes) ? includes : [includes];\r\n\r\n \tfor (var i = 0; i < includes.length; i++) {\r\n \t\tif (includes[i] === L.Mixin.Events) {\r\n \t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n \t\t\t\t'this property will be removed in future releases, ' +\r\n \t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n \t\t}\r\n \t}\r\n }\n\n /*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\n var Events = {\r\n \t/* @method on(type: String, fn: Function, context?: Object): this\r\n \t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n \t *\r\n \t * @alternative\r\n \t * @method on(eventMap: Object): this\r\n \t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n \t */\r\n \ton: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t/* @method off(type: String, fn?: Function, context?: Object): this\r\n \t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n \t *\r\n \t * @alternative\r\n \t * @method off(eventMap: Object): this\r\n \t * Removes a set of type/listener pairs.\r\n \t *\r\n \t * @alternative\r\n \t * @method off: this\r\n \t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n \t */\r\n \toff: function (types, fn, context) {\r\n\r\n \t\tif (!arguments.length) {\r\n \t\t\t// clear all listeners if called without arguments\r\n \t\t\tdelete this._events;\r\n\r\n \t\t} else if (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\tthis._off(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tvar removeAll = arguments.length === 1;\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tif (removeAll) {\r\n \t\t\t\t\tthis._off(types[i]);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tthis._off(types[i], fn, context);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// attach listener (without syntactic sugar now)\r\n \t_on: function (type, fn, context, _once) {\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// check if fn already there\r\n \t\tif (this._listens(type, fn, context) !== false) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar newListener = {fn: fn, ctx: context};\r\n \t\tif (_once) {\r\n \t\t\tnewListener.once = true;\r\n \t\t}\r\n\r\n \t\tthis._events = this._events || {};\r\n \t\tthis._events[type] = this._events[type] || [];\r\n \t\tthis._events[type].push(newListener);\r\n \t},\r\n\r\n \t_off: function (type, fn, context) {\r\n \t\tvar listeners,\r\n \t\t i,\r\n \t\t len;\r\n\r\n \t\tif (!this._events) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tlisteners = this._events[type];\r\n \t\tif (!listeners) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (arguments.length === 1) { // remove all\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// Set all removed listeners to noop\r\n \t\t\t\t// so they are not called if remove happens in fire\r\n \t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tlisteners[i].fn = falseFn;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\t// clear all listeners for a type if function isn't specified\r\n \t\t\tdelete this._events[type];\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// find fn and remove it\r\n \t\tvar index = this._listens(type, fn, context);\r\n \t\tif (index !== false) {\r\n \t\t\tvar listener = listeners[index];\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n \t\t\t\tlistener.fn = falseFn;\r\n\r\n \t\t\t\t/* copy array in case events are being fired */\r\n \t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n \t\t\t}\r\n \t\t\tlisteners.splice(index, 1);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n \t// Fires an event of the specified type. You can optionally provide a data\r\n \t// object — the first argument of the listener function will contain its\r\n \t// properties. The event can optionally be propagated to event parents.\r\n \tfire: function (type, data, propagate) {\r\n \t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n \t\tvar event = extend({}, data, {\r\n \t\t\ttype: type,\r\n \t\t\ttarget: this,\r\n \t\t\tsourceTarget: data && data.sourceTarget || this\r\n \t\t});\r\n\r\n \t\tif (this._events) {\r\n \t\t\tvar listeners = this._events[type];\r\n \t\t\tif (listeners) {\r\n \t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n \t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tvar l = listeners[i];\r\n \t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n \t\t\t\t\tvar fn = l.fn;\r\n \t\t\t\t\tif (l.once) {\r\n \t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tfn.call(l.ctx || this, event);\r\n \t\t\t\t}\r\n\r\n \t\t\t\tthis._firingCount--;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// propagate the event to parents (set with addEventParent)\r\n \t\t\tthis._propagateEvent(event);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method listens(type: String, propagate?: Boolean): Boolean\r\n \t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n \t// Returns `true` if a particular event type has any listeners attached to it.\r\n \t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n \tlistens: function (type, fn, context, propagate) {\r\n \t\tif (typeof type !== 'string') {\r\n \t\t\tconsole.warn('\"string\" type argument expected');\r\n \t\t}\r\n\r\n \t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n \t\tvar _fn = fn;\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tpropagate = !!fn;\r\n \t\t\t_fn = undefined;\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events && this._events[type];\r\n \t\tif (listeners && listeners.length) {\r\n \t\t\tif (this._listens(type, _fn, context) !== false) {\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// also check parents for listeners if event propagates\r\n \t\t\tfor (var id in this._eventParents) {\r\n \t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n \t},\r\n\r\n \t// returns the index (number) or false\r\n \t_listens: function (type, fn, context) {\r\n \t\tif (!this._events) {\r\n \t\t\treturn false;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events[type] || [];\r\n \t\tif (!fn) {\r\n \t\t\treturn !!listeners.length;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n \t\t\t\treturn i;\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n\r\n \t},\r\n\r\n \t// @method once(…): this\r\n \t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n \tonce: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn, true);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context, true);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method addEventParent(obj: Evented): this\r\n \t// Adds an event parent - an `Evented` that will receive propagated events\r\n \taddEventParent: function (obj) {\r\n \t\tthis._eventParents = this._eventParents || {};\r\n \t\tthis._eventParents[stamp(obj)] = obj;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method removeEventParent(obj: Evented): this\r\n \t// Removes an event parent, so it will stop receiving propagated events\r\n \tremoveEventParent: function (obj) {\r\n \t\tif (this._eventParents) {\r\n \t\t\tdelete this._eventParents[stamp(obj)];\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_propagateEvent: function (e) {\r\n \t\tfor (var id in this._eventParents) {\r\n \t\t\tthis._eventParents[id].fire(e.type, extend({\r\n \t\t\t\tlayer: e.target,\r\n \t\t\t\tpropagatedFrom: e.target\r\n \t\t\t}, e), true);\r\n \t\t}\r\n \t}\r\n };\r\n\r\n // aliases; we should ditch those eventually\r\n\r\n // @method addEventListener(…): this\r\n // Alias to [`on(…)`](#evented-on)\r\n Events.addEventListener = Events.on;\r\n\r\n // @method removeEventListener(…): this\r\n // Alias to [`off(…)`](#evented-off)\r\n\r\n // @method clearAllEventListeners(…): this\r\n // Alias to [`off()`](#evented-off)\r\n Events.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n // @method addOneTimeEventListener(…): this\r\n // Alias to [`once(…)`](#evented-once)\r\n Events.addOneTimeEventListener = Events.once;\r\n\r\n // @method fireEvent(…): this\r\n // Alias to [`fire(…)`](#evented-fire)\r\n Events.fireEvent = Events.fire;\r\n\r\n // @method hasEventListeners(…): Boolean\r\n // Alias to [`listens(…)`](#evented-listens)\r\n Events.hasEventListeners = Events.listens;\r\n\r\n var Evented = Class.extend(Events);\n\n /*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Point(x, y, round) {\r\n \t// @property x: Number; The `x` coordinate of the point\r\n \tthis.x = (round ? Math.round(x) : x);\r\n \t// @property y: Number; The `y` coordinate of the point\r\n \tthis.y = (round ? Math.round(y) : y);\r\n }\r\n\r\n var trunc = Math.trunc || function (v) {\r\n \treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n };\r\n\r\n Point.prototype = {\r\n\r\n \t// @method clone(): Point\r\n \t// Returns a copy of the current point.\r\n \tclone: function () {\r\n \t\treturn new Point(this.x, this.y);\r\n \t},\r\n\r\n \t// @method add(otherPoint: Point): Point\r\n \t// Returns the result of addition of the current and the given points.\r\n \tadd: function (point) {\r\n \t\t// non-destructive, returns a new point\r\n \t\treturn this.clone()._add(toPoint(point));\r\n \t},\r\n\r\n \t_add: function (point) {\r\n \t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n \t\tthis.x += point.x;\r\n \t\tthis.y += point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method subtract(otherPoint: Point): Point\r\n \t// Returns the result of subtraction of the given point from the current.\r\n \tsubtract: function (point) {\r\n \t\treturn this.clone()._subtract(toPoint(point));\r\n \t},\r\n\r\n \t_subtract: function (point) {\r\n \t\tthis.x -= point.x;\r\n \t\tthis.y -= point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method divideBy(num: Number): Point\r\n \t// Returns the result of division of the current point by the given number.\r\n \tdivideBy: function (num) {\r\n \t\treturn this.clone()._divideBy(num);\r\n \t},\r\n\r\n \t_divideBy: function (num) {\r\n \t\tthis.x /= num;\r\n \t\tthis.y /= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method multiplyBy(num: Number): Point\r\n \t// Returns the result of multiplication of the current point by the given number.\r\n \tmultiplyBy: function (num) {\r\n \t\treturn this.clone()._multiplyBy(num);\r\n \t},\r\n\r\n \t_multiplyBy: function (num) {\r\n \t\tthis.x *= num;\r\n \t\tthis.y *= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method scaleBy(scale: Point): Point\r\n \t// Multiply each coordinate of the current point by each coordinate of\r\n \t// `scale`. In linear algebra terms, multiply the point by the\r\n \t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n \t// defined by `scale`.\r\n \tscaleBy: function (point) {\r\n \t\treturn new Point(this.x * point.x, this.y * point.y);\r\n \t},\r\n\r\n \t// @method unscaleBy(scale: Point): Point\r\n \t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n \t// each coordinate of `scale`.\r\n \tunscaleBy: function (point) {\r\n \t\treturn new Point(this.x / point.x, this.y / point.y);\r\n \t},\r\n\r\n \t// @method round(): Point\r\n \t// Returns a copy of the current point with rounded coordinates.\r\n \tround: function () {\r\n \t\treturn this.clone()._round();\r\n \t},\r\n\r\n \t_round: function () {\r\n \t\tthis.x = Math.round(this.x);\r\n \t\tthis.y = Math.round(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method floor(): Point\r\n \t// Returns a copy of the current point with floored coordinates (rounded down).\r\n \tfloor: function () {\r\n \t\treturn this.clone()._floor();\r\n \t},\r\n\r\n \t_floor: function () {\r\n \t\tthis.x = Math.floor(this.x);\r\n \t\tthis.y = Math.floor(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method ceil(): Point\r\n \t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n \tceil: function () {\r\n \t\treturn this.clone()._ceil();\r\n \t},\r\n\r\n \t_ceil: function () {\r\n \t\tthis.x = Math.ceil(this.x);\r\n \t\tthis.y = Math.ceil(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method trunc(): Point\r\n \t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n \ttrunc: function () {\r\n \t\treturn this.clone()._trunc();\r\n \t},\r\n\r\n \t_trunc: function () {\r\n \t\tthis.x = trunc(this.x);\r\n \t\tthis.y = trunc(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method distanceTo(otherPoint: Point): Number\r\n \t// Returns the cartesian distance between the current and the given points.\r\n \tdistanceTo: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\tvar x = point.x - this.x,\r\n \t\t y = point.y - this.y;\r\n\r\n \t\treturn Math.sqrt(x * x + y * y);\r\n \t},\r\n\r\n \t// @method equals(otherPoint: Point): Boolean\r\n \t// Returns `true` if the given point has the same coordinates.\r\n \tequals: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn point.x === this.x &&\r\n \t\t point.y === this.y;\r\n \t},\r\n\r\n \t// @method contains(otherPoint: Point): Boolean\r\n \t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n \tcontains: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n \t\t Math.abs(point.y) <= Math.abs(this.y);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point for debugging purposes.\r\n \ttoString: function () {\r\n \t\treturn 'Point(' +\r\n \t\t formatNum(this.x) + ', ' +\r\n \t\t formatNum(this.y) + ')';\r\n \t}\r\n };\r\n\r\n // @factory L.point(x: Number, y: Number, round?: Boolean)\r\n // Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Number[])\r\n // Expects an array of the form `[x, y]` instead.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Object)\r\n // Expects a plain object of the form `{x: Number, y: Number}` instead.\r\n function toPoint(x, y, round) {\r\n \tif (x instanceof Point) {\r\n \t\treturn x;\r\n \t}\r\n \tif (isArray(x)) {\r\n \t\treturn new Point(x[0], x[1]);\r\n \t}\r\n \tif (x === undefined || x === null) {\r\n \t\treturn x;\r\n \t}\r\n \tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n \t\treturn new Point(x.x, x.y);\r\n \t}\r\n \treturn new Point(x, y, round);\r\n }\n\n /*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Bounds(a, b) {\r\n \tif (!a) { return; }\r\n\r\n \tvar points = b ? [a, b] : a;\r\n\r\n \tfor (var i = 0, len = points.length; i < len; i++) {\r\n \t\tthis.extend(points[i]);\r\n \t}\r\n }\r\n\r\n Bounds.prototype = {\r\n \t// @method extend(point: Point): this\r\n \t// Extends the bounds to contain the given point.\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: Bounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar min2, max2;\r\n \t\tif (!obj) { return this; }\r\n\r\n \t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n \t\t\tmin2 = max2 = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t\tmin2 = obj.min;\r\n \t\t\tmax2 = obj.max;\r\n\r\n \t\t\tif (!min2 || !max2) { return this; }\r\n \t\t}\r\n\r\n \t\t// @property min: Point\r\n \t\t// The top left corner of the rectangle.\r\n \t\t// @property max: Point\r\n \t\t// The bottom right corner of the rectangle.\r\n \t\tif (!this.min && !this.max) {\r\n \t\t\tthis.min = min2.clone();\r\n \t\t\tthis.max = max2.clone();\r\n \t\t} else {\r\n \t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n \t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n \t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n \t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getCenter(round?: Boolean): Point\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function (round) {\r\n \t\treturn toPoint(\r\n \t\t (this.min.x + this.max.x) / 2,\r\n \t\t (this.min.y + this.max.y) / 2, round);\r\n \t},\r\n\r\n \t// @method getBottomLeft(): Point\r\n \t// Returns the bottom-left point of the bounds.\r\n \tgetBottomLeft: function () {\r\n \t\treturn toPoint(this.min.x, this.max.y);\r\n \t},\r\n\r\n \t// @method getTopRight(): Point\r\n \t// Returns the top-right point of the bounds.\r\n \tgetTopRight: function () { // -> Point\r\n \t\treturn toPoint(this.max.x, this.min.y);\r\n \t},\r\n\r\n \t// @method getTopLeft(): Point\r\n \t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n \tgetTopLeft: function () {\r\n \t\treturn this.min; // left, top\r\n \t},\r\n\r\n \t// @method getBottomRight(): Point\r\n \t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n \tgetBottomRight: function () {\r\n \t\treturn this.max; // right, bottom\r\n \t},\r\n\r\n \t// @method getSize(): Point\r\n \t// Returns the size of the given bounds\r\n \tgetSize: function () {\r\n \t\treturn this.max.subtract(this.min);\r\n \t},\r\n\r\n \t// @method contains(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n \t// @alternative\r\n \t// @method contains(point: Point): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) {\r\n \t\tvar min, max;\r\n\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n \t\t\tobj = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t}\r\n\r\n \t\tif (obj instanceof Bounds) {\r\n \t\t\tmin = obj.min;\r\n \t\t\tmax = obj.max;\r\n \t\t} else {\r\n \t\t\tmin = max = obj;\r\n \t\t}\r\n\r\n \t\treturn (min.x >= this.min.x) &&\r\n \t\t (max.x <= this.max.x) &&\r\n \t\t (min.y >= this.min.y) &&\r\n \t\t (max.y <= this.max.y);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n \t// intersect if they have at least one point in common.\r\n \tintersects: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n \t\t yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n \t\treturn xIntersects && yIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n \t// overlap if their intersection is an area.\r\n \toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n \t\t yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n \t\treturn xOverlaps && yOverlaps;\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this.min && this.max);\r\n \t},\r\n\r\n\r\n \t// @method pad(bufferRatio: Number): Bounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar min = this.min,\r\n \t\tmax = this.max,\r\n \t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n \t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n \t\treturn toBounds(\r\n \t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n \t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n \t},\r\n\r\n\r\n \t// @method equals(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n \tequals: function (bounds) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n \t\t\tthis.max.equals(bounds.getBottomRight());\r\n \t},\r\n };\r\n\r\n\r\n // @factory L.bounds(corner1: Point, corner2: Point)\r\n // Creates a Bounds object from two corners coordinate pairs.\r\n // @alternative\r\n // @factory L.bounds(points: Point[])\r\n // Creates a Bounds object from the given array of points.\r\n function toBounds(a, b) {\r\n \tif (!a || a instanceof Bounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new Bounds(a, b);\r\n }\n\n /*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n \tif (!corner1) { return; }\r\n\r\n \tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n \tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n \t\tthis.extend(latlngs[i]);\r\n \t}\r\n }\r\n\r\n LatLngBounds.prototype = {\r\n\r\n \t// @method extend(latlng: LatLng): this\r\n \t// Extend the bounds to contain the given point\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: LatLngBounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLng) {\r\n \t\t\tsw2 = obj;\r\n \t\t\tne2 = obj;\r\n\r\n \t\t} else if (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj._southWest;\r\n \t\t\tne2 = obj._northEast;\r\n\r\n \t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n \t\t} else {\r\n \t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n \t\t}\r\n\r\n \t\tif (!sw && !ne) {\r\n \t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n \t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n \t\t} else {\r\n \t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n \t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n \t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n \t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method pad(bufferRatio: Number): LatLngBounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n \t\t widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n \t\treturn new LatLngBounds(\r\n \t\t new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n \t\t new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n \t},\r\n\r\n \t// @method getCenter(): LatLng\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function () {\r\n \t\treturn new LatLng(\r\n \t\t (this._southWest.lat + this._northEast.lat) / 2,\r\n \t\t (this._southWest.lng + this._northEast.lng) / 2);\r\n \t},\r\n\r\n \t// @method getSouthWest(): LatLng\r\n \t// Returns the south-west point of the bounds.\r\n \tgetSouthWest: function () {\r\n \t\treturn this._southWest;\r\n \t},\r\n\r\n \t// @method getNorthEast(): LatLng\r\n \t// Returns the north-east point of the bounds.\r\n \tgetNorthEast: function () {\r\n \t\treturn this._northEast;\r\n \t},\r\n\r\n \t// @method getNorthWest(): LatLng\r\n \t// Returns the north-west point of the bounds.\r\n \tgetNorthWest: function () {\r\n \t\treturn new LatLng(this.getNorth(), this.getWest());\r\n \t},\r\n\r\n \t// @method getSouthEast(): LatLng\r\n \t// Returns the south-east point of the bounds.\r\n \tgetSouthEast: function () {\r\n \t\treturn new LatLng(this.getSouth(), this.getEast());\r\n \t},\r\n\r\n \t// @method getWest(): Number\r\n \t// Returns the west longitude of the bounds\r\n \tgetWest: function () {\r\n \t\treturn this._southWest.lng;\r\n \t},\r\n\r\n \t// @method getSouth(): Number\r\n \t// Returns the south latitude of the bounds\r\n \tgetSouth: function () {\r\n \t\treturn this._southWest.lat;\r\n \t},\r\n\r\n \t// @method getEast(): Number\r\n \t// Returns the east longitude of the bounds\r\n \tgetEast: function () {\r\n \t\treturn this._northEast.lng;\r\n \t},\r\n\r\n \t// @method getNorth(): Number\r\n \t// Returns the north latitude of the bounds\r\n \tgetNorth: function () {\r\n \t\treturn this._northEast.lat;\r\n \t},\r\n\r\n \t// @method contains(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n\r\n \t// @alternative\r\n \t// @method contains (latlng: LatLng): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n \t\t\tobj = toLatLng(obj);\r\n \t\t} else {\r\n \t\t\tobj = toLatLngBounds(obj);\r\n \t\t}\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj.getSouthWest();\r\n \t\t\tne2 = obj.getNorthEast();\r\n \t\t} else {\r\n \t\t\tsw2 = ne2 = obj;\r\n \t\t}\r\n\r\n \t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n \t\t (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n \tintersects: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n \t\t lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n \t\treturn latIntersects && lngIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n \toverlaps: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n \t\t lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n \t\treturn latOverlaps && lngOverlaps;\r\n \t},\r\n\r\n \t// @method toBBoxString(): String\r\n \t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n \ttoBBoxString: function () {\r\n \t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n \t},\r\n\r\n \t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (bounds, maxMargin) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n \t\t this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this._southWest && this._northEast);\r\n \t}\r\n };\r\n\r\n // TODO International date line?\r\n\r\n // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n // @alternative\r\n // @factory L.latLngBounds(latlngs: LatLng[])\r\n // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\n function toLatLngBounds(a, b) {\r\n \tif (a instanceof LatLngBounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new LatLngBounds(a, b);\r\n }\n\n /* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLng(lat, lng, alt) {\r\n \tif (isNaN(lat) || isNaN(lng)) {\r\n \t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n \t}\r\n\r\n \t// @property lat: Number\r\n \t// Latitude in degrees\r\n \tthis.lat = +lat;\r\n\r\n \t// @property lng: Number\r\n \t// Longitude in degrees\r\n \tthis.lng = +lng;\r\n\r\n \t// @property alt: Number\r\n \t// Altitude in meters (optional)\r\n \tif (alt !== undefined) {\r\n \t\tthis.alt = +alt;\r\n \t}\r\n }\r\n\r\n LatLng.prototype = {\r\n \t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (obj, maxMargin) {\r\n \t\tif (!obj) { return false; }\r\n\r\n \t\tobj = toLatLng(obj);\r\n\r\n \t\tvar margin = Math.max(\r\n \t\t Math.abs(this.lat - obj.lat),\r\n \t\t Math.abs(this.lng - obj.lng));\r\n\r\n \t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point (for debugging purposes).\r\n \ttoString: function (precision) {\r\n \t\treturn 'LatLng(' +\r\n \t\t formatNum(this.lat, precision) + ', ' +\r\n \t\t formatNum(this.lng, precision) + ')';\r\n \t},\r\n\r\n \t// @method distanceTo(otherLatLng: LatLng): Number\r\n \t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n \tdistanceTo: function (other) {\r\n \t\treturn Earth.distance(this, toLatLng(other));\r\n \t},\r\n\r\n \t// @method wrap(): LatLng\r\n \t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n \twrap: function () {\r\n \t\treturn Earth.wrapLatLng(this);\r\n \t},\r\n\r\n \t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n \t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n \ttoBounds: function (sizeInMeters) {\r\n \t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n \t\t lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n \t\treturn toLatLngBounds(\r\n \t\t [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n \t\t [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n \t},\r\n\r\n \tclone: function () {\r\n \t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n \t}\r\n };\r\n\r\n\r\n\r\n // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Array): LatLng\r\n // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Object): LatLng\r\n // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\n function toLatLng(a, b, c) {\r\n \tif (a instanceof LatLng) {\r\n \t\treturn a;\r\n \t}\r\n \tif (isArray(a) && typeof a[0] !== 'object') {\r\n \t\tif (a.length === 3) {\r\n \t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n \t\t}\r\n \t\tif (a.length === 2) {\r\n \t\t\treturn new LatLng(a[0], a[1]);\r\n \t\t}\r\n \t\treturn null;\r\n \t}\r\n \tif (a === undefined || a === null) {\r\n \t\treturn a;\r\n \t}\r\n \tif (typeof a === 'object' && 'lat' in a) {\r\n \t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n \t}\r\n \tif (b === undefined) {\r\n \t\treturn null;\r\n \t}\r\n \treturn new LatLng(a, b, c);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\n var CRS = {\r\n \t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n \t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n \tlatLngToPoint: function (latlng, zoom) {\r\n \t\tvar projectedPoint = this.projection.project(latlng),\r\n \t\t scale = this.scale(zoom);\r\n\r\n \t\treturn this.transformation._transform(projectedPoint, scale);\r\n \t},\r\n\r\n \t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n \t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n \t// zoom into geographical coordinates.\r\n \tpointToLatLng: function (point, zoom) {\r\n \t\tvar scale = this.scale(zoom),\r\n \t\t untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n \t\treturn this.projection.unproject(untransformedPoint);\r\n \t},\r\n\r\n \t// @method project(latlng: LatLng): Point\r\n \t// Projects geographical coordinates into coordinates in units accepted for\r\n \t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n \tproject: function (latlng) {\r\n \t\treturn this.projection.project(latlng);\r\n \t},\r\n\r\n \t// @method unproject(point: Point): LatLng\r\n \t// Given a projected coordinate returns the corresponding LatLng.\r\n \t// The inverse of `project`.\r\n \tunproject: function (point) {\r\n \t\treturn this.projection.unproject(point);\r\n \t},\r\n\r\n \t// @method scale(zoom: Number): Number\r\n \t// Returns the scale used when transforming projected coordinates into\r\n \t// pixel coordinates for a particular zoom. For example, it returns\r\n \t// `256 * 2^zoom` for Mercator-based CRS.\r\n \tscale: function (zoom) {\r\n \t\treturn 256 * Math.pow(2, zoom);\r\n \t},\r\n\r\n \t// @method zoom(scale: Number): Number\r\n \t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n \t// factor of `scale`.\r\n \tzoom: function (scale) {\r\n \t\treturn Math.log(scale / 256) / Math.LN2;\r\n \t},\r\n\r\n \t// @method getProjectedBounds(zoom: Number): Bounds\r\n \t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n \tgetProjectedBounds: function (zoom) {\r\n \t\tif (this.infinite) { return null; }\r\n\r\n \t\tvar b = this.projection.bounds,\r\n \t\t s = this.scale(zoom),\r\n \t\t min = this.transformation.transform(b.min, s),\r\n \t\t max = this.transformation.transform(b.max, s);\r\n\r\n \t\treturn new Bounds(min, max);\r\n \t},\r\n\r\n \t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n \t// Returns the distance between two geographical coordinates.\r\n\r\n \t// @property code: String\r\n \t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n \t//\r\n \t// @property wrapLng: Number[]\r\n \t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n \t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n \t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n \t//\r\n \t// @property wrapLat: Number[]\r\n \t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n \t// wrapLng: [min, max],\r\n \t// wrapLat: [min, max],\r\n\r\n \t// @property infinite: Boolean\r\n \t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n \tinfinite: false,\r\n\r\n \t// @method wrapLatLng(latlng: LatLng): LatLng\r\n \t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n \t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n \twrapLatLng: function (latlng) {\r\n \t\tvar lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n \t\t lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n \t\t alt = latlng.alt;\r\n\r\n \t\treturn new LatLng(lat, lng, alt);\r\n \t},\r\n\r\n \t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n \t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n \t// that its center is within the CRS's bounds.\r\n \t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n \twrapLatLngBounds: function (bounds) {\r\n \t\tvar center = bounds.getCenter(),\r\n \t\t newCenter = this.wrapLatLng(center),\r\n \t\t latShift = center.lat - newCenter.lat,\r\n \t\t lngShift = center.lng - newCenter.lng;\r\n\r\n \t\tif (latShift === 0 && lngShift === 0) {\r\n \t\t\treturn bounds;\r\n \t\t}\r\n\r\n \t\tvar sw = bounds.getSouthWest(),\r\n \t\t ne = bounds.getNorthEast(),\r\n \t\t newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n \t\t newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n \t\treturn new LatLngBounds(newSw, newNe);\r\n \t}\r\n };\n\n /*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\n var Earth = extend({}, CRS, {\n \twrapLng: [-180, 180],\n\n \t// Mean Earth Radius, as recommended for use by\n \t// the International Union of Geodesy and Geophysics,\n \t// see https://rosettacode.org/wiki/Haversine_formula\n \tR: 6371000,\n\n \t// distance between two geographical points using spherical law of cosines approximation\n \tdistance: function (latlng1, latlng2) {\n \t\tvar rad = Math.PI / 180,\n \t\t lat1 = latlng1.lat * rad,\n \t\t lat2 = latlng2.lat * rad,\n \t\t sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n \t\t sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n \t\t a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n \t\t c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n \t\treturn this.R * c;\n \t}\n });\n\n /*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\n var earthRadius = 6378137;\r\n\r\n var SphericalMercator = {\r\n\r\n \tR: earthRadius,\r\n \tMAX_LATITUDE: 85.0511287798,\r\n\r\n \tproject: function (latlng) {\r\n \t\tvar d = Math.PI / 180,\r\n \t\t max = this.MAX_LATITUDE,\r\n \t\t lat = Math.max(Math.min(max, latlng.lat), -max),\r\n \t\t sin = Math.sin(lat * d);\r\n\r\n \t\treturn new Point(\r\n \t\t\tthis.R * latlng.lng * d,\r\n \t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n \t},\r\n\r\n \tunproject: function (point) {\r\n \t\tvar d = 180 / Math.PI;\r\n\r\n \t\treturn new LatLng(\r\n \t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n \t\t\tpoint.x * d / this.R);\r\n \t},\r\n\r\n \tbounds: (function () {\r\n \t\tvar d = earthRadius * Math.PI;\r\n \t\treturn new Bounds([-d, -d], [d, d]);\r\n \t})()\r\n };\n\n /*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), // L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); // L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Creates a `Transformation` object with the given coefficients.\r\n function Transformation(a, b, c, d) {\r\n \tif (isArray(a)) {\r\n \t\t// use array properties\r\n \t\tthis._a = a[0];\r\n \t\tthis._b = a[1];\r\n \t\tthis._c = a[2];\r\n \t\tthis._d = a[3];\r\n \t\treturn;\r\n \t}\r\n \tthis._a = a;\r\n \tthis._b = b;\r\n \tthis._c = c;\r\n \tthis._d = d;\r\n }\r\n\r\n Transformation.prototype = {\r\n \t// @method transform(point: Point, scale?: Number): Point\r\n \t// Returns a transformed point, optionally multiplied by the given scale.\r\n \t// Only accepts actual `L.Point` instances, not arrays.\r\n \ttransform: function (point, scale) { // (Point, Number) -> Point\r\n \t\treturn this._transform(point.clone(), scale);\r\n \t},\r\n\r\n \t// destructive transform (faster)\r\n \t_transform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\tpoint.x = scale * (this._a * point.x + this._b);\r\n \t\tpoint.y = scale * (this._c * point.y + this._d);\r\n \t\treturn point;\r\n \t},\r\n\r\n \t// @method untransform(point: Point, scale?: Number): Point\r\n \t// Returns the reverse transformation of the given point, optionally divided\r\n \t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n \tuntransform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\treturn new Point(\r\n \t\t (point.x / scale - this._b) / this._a,\r\n \t\t (point.y / scale - this._d) / this._c);\r\n \t}\r\n };\r\n\r\n // factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n // @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Instantiates a Transformation object with the given coefficients.\r\n\r\n // @alternative\r\n // @factory L.transformation(coefficients: Array): Transformation\r\n // Expects an coefficients array of the form\r\n // `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\n function toTransformation(a, b, c, d) {\r\n \treturn new Transformation(a, b, c, d);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\n var EPSG3857 = extend({}, Earth, {\r\n \tcode: 'EPSG:3857',\r\n \tprojection: SphericalMercator,\r\n\r\n \ttransformation: (function () {\r\n \t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n \t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n \t}())\r\n });\r\n\r\n var EPSG900913 = extend({}, EPSG3857, {\r\n \tcode: 'EPSG:900913'\r\n });\n\n // @namespace SVG; @section\n // There are several static functions which can be called without instantiating L.SVG:\n\n // @function create(name: String): SVGElement\n // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n // corresponding to the class name passed. For example, using 'line' will return\n // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\n function svgCreate(name) {\n \treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n }\n\n // @function pointsToPath(rings: Point[], closed: Boolean): String\n // Generates a SVG path string for multiple rings, with each ring turning\n // into \"M..L..L..\" instructions\n function pointsToPath(rings, closed) {\n \tvar str = '',\n \ti, j, len, len2, points, p;\n\n \tfor (i = 0, len = rings.length; i < len; i++) {\n \t\tpoints = rings[i];\n\n \t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n \t\t\tp = points[j];\n \t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n \t\t}\n\n \t\t// closes the ring for polygons; \"x\" is VML syntax\n \t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n \t}\n\n \t// SVG complains about empty path strings\n \treturn str || 'M0 0';\n }\n\n /*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n * alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\n var style = document.documentElement.style;\r\n\r\n // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\n var ie = 'ActiveXObject' in window;\r\n\r\n // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\n var ielt9 = ie && !document.addEventListener;\r\n\r\n // @property edge: Boolean; `true` for the Edge web browser.\r\n var edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n // @property webkit: Boolean;\r\n // `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\n var webkit = userAgentContains('webkit');\r\n\r\n // @property android: Boolean\r\n // **Deprecated.** `true` for any browser running on an Android platform.\r\n var android = userAgentContains('android');\r\n\r\n // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\n var android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\n var webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\n var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n // @property opera: Boolean; `true` for the Opera browser\r\n var opera = !!window.opera;\r\n\r\n // @property chrome: Boolean; `true` for the Chrome browser.\r\n var chrome = !edge && userAgentContains('chrome');\r\n\r\n // @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\n var gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n // @property safari: Boolean; `true` for the Safari browser.\r\n var safari = !chrome && userAgentContains('safari');\r\n\r\n var phantom = userAgentContains('phantom');\r\n\r\n // @property opera12: Boolean\r\n // `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\n var opera12 = 'OTransition' in style;\r\n\r\n // @property win: Boolean; `true` when the browser is running in a Windows platform\r\n var win = navigator.platform.indexOf('Win') === 0;\r\n\r\n // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\n var ie3d = ie && ('transition' in style);\r\n\r\n // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\n var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\n var gecko3d = 'MozPerspective' in style;\r\n\r\n // @property any3d: Boolean\r\n // `true` for all browsers supporting CSS transforms.\r\n var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n // @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\n var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\n var mobileWebkit = mobile && webkit;\r\n\r\n // @property mobileWebkit3d: Boolean\r\n // `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\n var mobileWebkit3d = mobile && webkit3d;\r\n\r\n // @property msPointer: Boolean\r\n // `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\n var msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n // @property pointer: Boolean\r\n // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\n var pointer = !!(window.PointerEvent || msPointer);\r\n\r\n // @property touchNative: Boolean\r\n // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n // **This does not necessarily mean** that the browser is running in a computer with\r\n // a touchscreen, it only means that the browser is capable of understanding\r\n // touch events.\r\n var touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n // @property touch: Boolean\r\n // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\n var touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\n var mobileOpera = mobile && opera;\r\n\r\n // @property mobileGecko: Boolean\r\n // `true` for gecko-based browsers running in a mobile device.\r\n var mobileGecko = mobile && gecko;\r\n\r\n // @property retina: Boolean\r\n // `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\n var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n // @property passiveEvents: Boolean\r\n // `true` for browsers that support passive events.\r\n var passiveEvents = (function () {\r\n \tvar supportsPassiveOption = false;\r\n \ttry {\r\n \t\tvar opts = Object.defineProperty({}, 'passive', {\r\n \t\t\tget: function () { // eslint-disable-line getter-return\r\n \t\t\t\tsupportsPassiveOption = true;\r\n \t\t\t}\r\n \t\t});\r\n \t\twindow.addEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t\twindow.removeEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t} catch (e) {\r\n \t\t// Errors can safely be ignored since this is only a browser support test.\r\n \t}\r\n \treturn supportsPassiveOption;\r\n }());\r\n\r\n // @property canvas: Boolean\r\n // `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\n var canvas$1 = (function () {\r\n \treturn !!document.createElement('canvas').getContext;\r\n }());\r\n\r\n // @property svg: Boolean\r\n // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\n var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\n var inlineSvg = !!svg$1 && (function () {\r\n \tvar div = document.createElement('div');\r\n \tdiv.innerHTML = '';\r\n \treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n })();\r\n\r\n // @property vml: Boolean\r\n // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\n var vml = !svg$1 && (function () {\r\n \ttry {\r\n \t\tvar div = document.createElement('div');\r\n \t\tdiv.innerHTML = '';\r\n\r\n \t\tvar shape = div.firstChild;\r\n \t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n \t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n \t} catch (e) {\r\n \t\treturn false;\r\n \t}\r\n }());\r\n\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Mac platform\r\n var mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Linux platform\r\n var linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\n function userAgentContains(str) {\r\n \treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n }\r\n\r\n\r\n var Browser = {\r\n \tie: ie,\r\n \tielt9: ielt9,\r\n \tedge: edge,\r\n \twebkit: webkit,\r\n \tandroid: android,\r\n \tandroid23: android23,\r\n \tandroidStock: androidStock,\r\n \topera: opera,\r\n \tchrome: chrome,\r\n \tgecko: gecko,\r\n \tsafari: safari,\r\n \tphantom: phantom,\r\n \topera12: opera12,\r\n \twin: win,\r\n \tie3d: ie3d,\r\n \twebkit3d: webkit3d,\r\n \tgecko3d: gecko3d,\r\n \tany3d: any3d,\r\n \tmobile: mobile,\r\n \tmobileWebkit: mobileWebkit,\r\n \tmobileWebkit3d: mobileWebkit3d,\r\n \tmsPointer: msPointer,\r\n \tpointer: pointer,\r\n \ttouch: touch,\r\n \ttouchNative: touchNative,\r\n \tmobileOpera: mobileOpera,\r\n \tmobileGecko: mobileGecko,\r\n \tretina: retina,\r\n \tpassiveEvents: passiveEvents,\r\n \tcanvas: canvas$1,\r\n \tsvg: svg$1,\r\n \tvml: vml,\r\n \tinlineSvg: inlineSvg,\r\n \tmac: mac,\r\n \tlinux: linux\r\n };\n\n /*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\n var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';\n var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';\n var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';\n var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\n var pEvent = {\n \ttouchstart : POINTER_DOWN,\n \ttouchmove : POINTER_MOVE,\n \ttouchend : POINTER_UP,\n \ttouchcancel : POINTER_CANCEL\n };\n var handle = {\n \ttouchstart : _onPointerStart,\n \ttouchmove : _handlePointer,\n \ttouchend : _handlePointer,\n \ttouchcancel : _handlePointer\n };\n var _pointers = {};\n var _pointerDocListener = false;\n\n // Provides a touch events wrapper for (ms)pointer events.\n // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\n function addPointerListener(obj, type, handler) {\n \tif (type === 'touchstart') {\n \t\t_addPointerDocListener();\n \t}\n \tif (!handle[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn falseFn;\n \t}\n \thandler = handle[type].bind(this, handler);\n \tobj.addEventListener(pEvent[type], handler, false);\n \treturn handler;\n }\n\n function removePointerListener(obj, type, handler) {\n \tif (!pEvent[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn;\n \t}\n \tobj.removeEventListener(pEvent[type], handler, false);\n }\n\n function _globalPointerDown(e) {\n \t_pointers[e.pointerId] = e;\n }\n\n function _globalPointerMove(e) {\n \tif (_pointers[e.pointerId]) {\n \t\t_pointers[e.pointerId] = e;\n \t}\n }\n\n function _globalPointerUp(e) {\n \tdelete _pointers[e.pointerId];\n }\n\n function _addPointerDocListener() {\n \t// need to keep track of what pointers and how many are active to provide e.touches emulation\n \tif (!_pointerDocListener) {\n \t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n \t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n \t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n \t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n \t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n \t\t_pointerDocListener = true;\n \t}\n }\n\n function _handlePointer(handler, e) {\n \tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n \te.touches = [];\n \tfor (var i in _pointers) {\n \t\te.touches.push(_pointers[i]);\n \t}\n \te.changedTouches = [e];\n\n \thandler(e);\n }\n\n function _onPointerStart(handler, e) {\n \t// IE10 specific: MsTouch needs preventDefault. See #2000\n \tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n \t\tpreventDefault(e);\n \t}\n \t_handlePointer(handler, e);\n }\n\n /*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\n function makeDblclick(event) {\r\n \t// in modern browsers `type` cannot be just overridden:\r\n \t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n \tvar newEvent = {},\r\n \t prop, i;\r\n \tfor (i in event) {\r\n \t\tprop = event[i];\r\n \t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n \t}\r\n \tevent = newEvent;\r\n \tnewEvent.type = 'dblclick';\r\n \tnewEvent.detail = 2;\r\n \tnewEvent.isTrusted = false;\r\n \tnewEvent._simulated = true; // for debug purposes\r\n \treturn newEvent;\r\n }\r\n\r\n var delay = 200;\r\n function addDoubleTapListener(obj, handler) {\r\n \t// Most browsers handle double tap natively\r\n \tobj.addEventListener('dblclick', handler);\r\n\r\n \t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n \t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n \t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n \tvar last = 0,\r\n \t detail;\r\n \tfunction simDblclick(e) {\r\n \t\tif (e.detail !== 1) {\r\n \t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (e.pointerType === 'mouse' ||\r\n \t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// When clicking on an , the browser generates a click on its\r\n \t\t//