diff --git a/frontend/dist/assets/index-CcSjAzwK.css b/frontend/dist/assets/index-C-fUaa04.css similarity index 81% rename from frontend/dist/assets/index-CcSjAzwK.css rename to frontend/dist/assets/index-C-fUaa04.css index 20a81e5b..5a9b4886 100644 --- a/frontend/dist/assets/index-CcSjAzwK.css +++ b/frontend/dist/assets/index-C-fUaa04.css @@ -1 +1 @@ -.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}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.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}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.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}.inline{display:inline}.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-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.w-0\.5{width:.125rem}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-48{width:12rem}.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}.max-w-md{max-width:28rem}.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))}.grid-cols-5{grid-template-columns:repeat(5,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-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-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-auto{overflow:auto}.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-red-500\/50{border-color:#ef444480}.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-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-green-950\/30{background-color:#052e164d}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.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-12{padding-left:3rem;padding-right:3rem}.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-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pr-8{padding-right:2rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.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}.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-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.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-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.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-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.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\: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-\[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}}.\[\&\>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} +.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}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.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}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.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}.inline{display:inline}.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-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.w-0\.5{width:.125rem}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-48{width:12rem}.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}.max-w-md{max-width:28rem}.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))}.grid-cols-5{grid-template-columns:repeat(5,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-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-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-auto{overflow:auto}.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-red-500\/50{border-color:#ef444480}.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-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-green-950\/30{background-color:#052e164d}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.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-12{padding-left:3rem;padding-right:3rem}.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-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pr-8{padding-right:2rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.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}.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-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.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-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.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-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:text-\[\#4a9eff\]:hover{--tw-text-opacity: 1;color:rgb(74 158 255 / var(--tw-text-opacity, 1))}.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\: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-\[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\:inline{display:inline}.lg\: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-Ck-mz-Y8.js b/frontend/dist/assets/index-CAtwmgBG.js similarity index 90% rename from frontend/dist/assets/index-Ck-mz-Y8.js rename to frontend/dist/assets/index-CAtwmgBG.js index 133633f9..ce4e4227 100644 --- a/frontend/dist/assets/index-Ck-mz-Y8.js +++ b/frontend/dist/assets/index-CAtwmgBG.js @@ -34,16 +34,16 @@ var Dv=Object.defineProperty;var Rv=(r,a,o)=>a in r?Dv(r,a,{enumerable:!0,config `+R+e}var K=!1;function $(e,n){if(!e||K)return"";K=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(n)if(n=function(){throw Error()},Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(n,[])}catch(ce){var c=ce}Reflect.construct(e,[],n)}else{try{n.call()}catch(ce){c=ce}e.call(n.prototype)}else{try{throw Error()}catch(ce){c=ce}e()}}catch(ce){if(ce&&c&&typeof ce.stack=="string"){for(var x=ce.stack.split(` `),_=c.stack.split(` `),M=x.length-1,W=_.length-1;1<=M&&0<=W&&x[M]!==_[W];)W--;for(;1<=M&&0<=W;M--,W--)if(x[M]!==_[W]){if(M!==1||W!==1)do if(M--,W--,0>W||x[M]!==_[W]){var X=` -`+x[M].replace(" at new "," at ");return e.displayName&&X.includes("")&&(X=X.replace("",e.displayName)),X}while(1<=M&&0<=W);break}}}finally{K=!1,Error.prepareStackTrace=s}return(e=e?e.displayName||e.name:"")?U(e):""}function de(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 H:return"Fragment";case z:return"Portal";case ee:return"Profiler";case j:return"StrictMode";case J: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 he: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===j?"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 Ae(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function We(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function $e(e){var n=We(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 x=s.get,_=s.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return x.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=We(e)?e.checked?"true":"false":e.value),e=c,e!==s?(n.setValue(e),!0):!1}function Be(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 Ze(e,n){var s=n.checked;return q({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s??e._wrapperState.initialChecked})}function lt(e,n){var s=n.defaultValue==null?"":n.defaultValue,c=n.checked!=null?n.checked:n.defaultChecked;s=Ae(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 Rt(e,n){n=n.checked,n!=null&&S(e,"checked",n,!1)}function vt(e,n){Rt(e,n);var s=Ae(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")?Qe(e,n.type,s):n.hasOwnProperty("defaultValue")&&Qe(e,n.type,Ae(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 Qe(e,n,s){(n!=="number"||Be(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 x=0;x"+n.valueOf().toString()+"",n=mn.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Wt(e,n){if(n){var s=e.firstChild;if(s&&s===e.lastChild&&s.nodeType===3){s.nodeValue=n;return}}e.textContent=n}var Pt={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},qt=["Webkit","ms","Moz","O"];Object.keys(Pt).forEach(function(e){qt.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Pt[n]=Pt[e]})});function qn(e,n,s){return n==null||typeof n=="boolean"||n===""?"":s||typeof n!="number"||n===0||Pt.hasOwnProperty(e)&&Pt[e]?(""+n).trim():n+"px"}function yn(e,n){e=e.style;for(var s in n)if(n.hasOwnProperty(s)){var c=s.indexOf("--")===0,x=qn(s,n[s],c);s==="float"&&(s="cssFloat"),c?e.setProperty(s,x):e[s]=x}}var ge=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(ge[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 re=null;function me(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Se=null,Ne=null,Ve=null;function $t(e){if(e=fi(e)){if(typeof Se!="function")throw Error(o(280));var n=e.stateNode;n&&(n=bs(n),Se(e.stateNode,e.type,n))}}function Ue(e){Ne?Ve?Ve.push(e):Ve=[e]:Ne=e}function mt(){if(Ne){var e=Ne,n=Ve;if(Ve=Ne=null,$t(e),n)for(e=0;e>>=0,e===0?32:31-(Ft(e)/ts|0)|0}var yr=64,Ti=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 Tt(e,n){var s=e.pendingLanes;if(s===0)return 0;var c=0,x=e.suspendedLanes,_=e.pingedLanes,M=s&268435455;if(M!==0){var W=M&~x;W!==0?c=et(W):(_&=M,_!==0&&(c=et(_)))}else M=s&~x,M!==0?c=et(M):_!==0&&(c=et(_));if(c===0)return 0;if(n!==0&&n!==c&&(n&x)===0&&(x=c&-c,_=n&-n,x>=_||x===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 Kt(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=_o),li=" ",Fl=!1;function Ii(e,n){switch(e){case"keyup":return Jn.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function va(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Cr=!1;function vd(e,n){switch(e){case"compositionend":return va(n);case"keypress":return n.which!==32?null:(Fl=!0,li);case"textInput":return e=n.data,e===li&&Fl?null:e;default:return null}}function zr(e,n){if(Cr)return e==="compositionend"||!jr&&Ii(e,n)?(e=ca(),Or=Dn=Ir=null,Cr=!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=Ml(s)}}function Il(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Il(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function wa(){for(var e=window,n=Be();n instanceof e.HTMLIFrameElement;){try{var s=typeof n.contentWindow.location.href=="string"}catch{s=!1}if(s)e=n.contentWindow;else break;n=Be(e.document)}return n}function ba(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 cr(e){var n=wa(),s=e.focusedElem,c=e.selectionRange;if(n!==s&&s&&s.ownerDocument&&Il(s.ownerDocument.documentElement,s)){if(c!==null&&ba(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 x=s.textContent.length,_=Math.min(c.start,x);c=c.end===void 0?_:Math.min(c.end,x),!e.extend&&_>c&&(x=c,c=_,_=x),x=_a(s,_);var M=_a(s,c);x&&M&&(e.rangeCount!==1||e.anchorNode!==x.node||e.anchorOffset!==x.offset||e.focusNode!==M.node||e.focusOffset!==M.offset)&&(n=n.createRange(),n.setStart(x.node,x.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,zi=null,Hi=null,Co=null,_s=!1;function Ol(e,n,s){var c=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;_s||zi==null||zi!==Be(c)||(c=zi,"selectionStart"in c&&ba(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}),Co&&Hr(Co,c)||(Co=c,c=u(Hi,"onSelect"),0")&&(X=X.replace("",e.displayName)),X}while(1<=M&&0<=W);break}}}finally{K=!1,Error.prepareStackTrace=s}return(e=e?e.displayName||e.name:"")?U(e):""}function de(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 H:return"Fragment";case z:return"Portal";case ee:return"Profiler";case j:return"StrictMode";case J: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 he: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===j?"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 Ae(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function We(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function $e(e){var n=We(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 x=s.get,_=s.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return x.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 bt(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=We(e)?e.checked?"true":"false":e.value),e=c,e!==s?(n.setValue(e),!0):!1}function Be(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 Ze(e,n){var s=n.checked;return q({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s??e._wrapperState.initialChecked})}function lt(e,n){var s=n.defaultValue==null?"":n.defaultValue,c=n.checked!=null?n.checked:n.defaultChecked;s=Ae(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 Rt(e,n){n=n.checked,n!=null&&S(e,"checked",n,!1)}function vt(e,n){Rt(e,n);var s=Ae(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")?Qe(e,n.type,s):n.hasOwnProperty("defaultValue")&&Qe(e,n.type,Ae(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 Qe(e,n,s){(n!=="number"||Be(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 x=0;x"+n.valueOf().toString()+"",n=mn.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Wt(e,n){if(n){var s=e.firstChild;if(s&&s===e.lastChild&&s.nodeType===3){s.nodeValue=n;return}}e.textContent=n}var Pt={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},qt=["Webkit","ms","Moz","O"];Object.keys(Pt).forEach(function(e){qt.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Pt[n]=Pt[e]})});function qn(e,n,s){return n==null||typeof n=="boolean"||n===""?"":s||typeof n!="number"||n===0||Pt.hasOwnProperty(e)&&Pt[e]?(""+n).trim():n+"px"}function yn(e,n){e=e.style;for(var s in n)if(n.hasOwnProperty(s)){var c=s.indexOf("--")===0,x=qn(s,n[s],c);s==="float"&&(s="cssFloat"),c?e.setProperty(s,x):e[s]=x}}var ge=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(ge[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 re=null;function me(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Se=null,Ne=null,Ve=null;function $t(e){if(e=fi(e)){if(typeof Se!="function")throw Error(o(280));var n=e.stateNode;n&&(n=bs(n),Se(e.stateNode,e.type,n))}}function Ue(e){Ne?Ve?Ve.push(e):Ve=[e]:Ne=e}function mt(){if(Ne){var e=Ne,n=Ve;if(Ve=Ne=null,$t(e),n)for(e=0;e>>=0,e===0?32:31-(Ft(e)/ts|0)|0}var yr=64,Ti=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 Tt(e,n){var s=e.pendingLanes;if(s===0)return 0;var c=0,x=e.suspendedLanes,_=e.pingedLanes,M=s&268435455;if(M!==0){var W=M&~x;W!==0?c=et(W):(_&=M,_!==0&&(c=et(_)))}else M=s&~x,M!==0?c=et(M):_!==0&&(c=et(_));if(c===0)return 0;if(n!==0&&n!==c&&(n&x)===0&&(x=c&-c,_=n&-n,x>=_||x===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 Kt(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=_o),li=" ",Fl=!1;function Ii(e,n){switch(e){case"keyup":return Jn.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function va(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Cr=!1;function vd(e,n){switch(e){case"compositionend":return va(n);case"keypress":return n.which!==32?null:(Fl=!0,li);case"textInput":return e=n.data,e===li&&Fl?null:e;default:return null}}function zr(e,n){if(Cr)return e==="compositionend"||!jr&&Ii(e,n)?(e=ca(),Or=Dn=Ir=null,Cr=!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=Ml(s)}}function Il(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Il(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function wa(){for(var e=window,n=Be();n instanceof e.HTMLIFrameElement;){try{var s=typeof n.contentWindow.location.href=="string"}catch{s=!1}if(s)e=n.contentWindow;else break;n=Be(e.document)}return n}function ba(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 cr(e){var n=wa(),s=e.focusedElem,c=e.selectionRange;if(n!==s&&s&&s.ownerDocument&&Il(s.ownerDocument.documentElement,s)){if(c!==null&&ba(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 x=s.textContent.length,_=Math.min(c.start,x);c=c.end===void 0?_:Math.min(c.end,x),!e.extend&&_>c&&(x=c,c=_,_=x),x=_a(s,_);var M=_a(s,c);x&&M&&(e.rangeCount!==1||e.anchorNode!==x.node||e.anchorOffset!==x.offset||e.focusNode!==M.node||e.focusOffset!==M.offset)&&(n=n.createRange(),n.setStart(x.node,x.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,zi=null,Hi=null,Co=null,_s=!1;function Ol(e,n,s){var c=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;_s||zi==null||zi!==Be(c)||(c=zi,"selectionStart"in c&&ba(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}),Co&&Hr(Co,c)||(Co=c,c=u(Hi,"onSelect"),0Cs||(e.current=Ed[Cs],Ed[Cs]=null,Cs--)}function Dt(e,n){Cs++,Ed[Cs]=e.current,e.current=n}var $i={},Cn=Qi($i),jn=Qi(!1),So=$i;function Es(e,n){var s=e.type.contextTypes;if(!s)return $i;var c=e.stateNode;if(c&&c.__reactInternalMemoizedUnmaskedChildContext===n)return c.__reactInternalMemoizedMaskedChildContext;var x={},_;for(_ in s)x[_]=n[_];return c&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=x),x}function zn(e){return e=e.childContextTypes,e!=null}function Wl(){Nt(jn),Nt(Cn)}function K0(e,n,s){if(Cn.current!==$i)throw Error(o(168));Dt(Cn,n),Dt(jn,s)}function Q0(e,n,s){var c=e.stateNode;if(n=n.childContextTypes,typeof c.getChildContext!="function")return s;c=c.getChildContext();for(var x in c)if(!(x in n))throw Error(o(108,ke(e)||"Unknown",x));return q({},s,c)}function ql(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||$i,So=Cn.current,Dt(Cn,e),Dt(jn,jn.current),!0}function $0(e,n,s){var c=e.stateNode;if(!c)throw Error(o(169));s?(e=Q0(e,n,So),c.__reactInternalMemoizedMergedChildContext=e,Nt(jn),Nt(Cn),Dt(Cn,e)):Nt(jn),Dt(jn,s)}var pi=null,Gl=!1,kd=!1;function Y0(e){pi===null?pi=[e]:pi.push(e)}function $x(e){Gl=!0,Y0(e)}function Yi(){if(!kd&&pi!==null){kd=!0;var e=0,n=ht;try{var s=pi;for(ht=1;e>=M,x-=M,mi=1<<32-tt(n)+x|s<Je?(fn=Ke,Ke=null):fn=Ke.sibling;var yt=ye(se,Ke,le[Je],Ee);if(yt===null){Ke===null&&(Ke=fn);break}e&&Ke&&yt.alternate===null&&n(se,Ke),te=_(yt,te,Je),Ge===null?He=yt:Ge.sibling=yt,Ge=yt,Ke=fn}if(Je===le.length)return s(se,Ke),It&&Po(se,Je),He;if(Ke===null){for(;JeJe?(fn=Ke,Ke=null):fn=Ke.sibling;var so=ye(se,Ke,yt.value,Ee);if(so===null){Ke===null&&(Ke=fn);break}e&&Ke&&so.alternate===null&&n(se,Ke),te=_(so,te,Je),Ge===null?He=so:Ge.sibling=so,Ge=so,Ke=fn}if(yt.done)return s(se,Ke),It&&Po(se,Je),He;if(Ke===null){for(;!yt.done;Je++,yt=le.next())yt=we(se,yt.value,Ee),yt!==null&&(te=_(yt,te,Je),Ge===null?He=yt:Ge.sibling=yt,Ge=yt);return It&&Po(se,Je),He}for(Ke=c(se,Ke);!yt.done;Je++,yt=le.next())yt=Fe(Ke,se,Je,yt.value,Ee),yt!==null&&(e&&yt.alternate!==null&&Ke.delete(yt.key===null?Je:yt.key),te=_(yt,te,Je),Ge===null?He=yt:Ge.sibling=yt,Ge=yt);return e&&Ke.forEach(function(Tv){return n(se,Tv)}),It&&Po(se,Je),He}function Yt(se,te,le,Ee){if(typeof le=="object"&&le!==null&&le.type===H&&le.key===null&&(le=le.props.children),typeof le=="object"&&le!==null){switch(le.$$typeof){case I:e:{for(var He=le.key,Ge=te;Ge!==null;){if(Ge.key===He){if(He=le.type,He===H){if(Ge.tag===7){s(se,Ge.sibling),te=x(Ge,le.props.children),te.return=se,se=te;break e}}else if(Ge.elementType===He||typeof He=="object"&&He!==null&&He.$$typeof===ae&&rh(He)===Ge.type){s(se,Ge.sibling),te=x(Ge,le.props),te.ref=Da(se,Ge,le),te.return=se,se=te;break e}s(se,Ge);break}else n(se,Ge);Ge=Ge.sibling}le.type===H?(te=Io(le.props.children,se.mode,Ee,le.key),te.return=se,se=te):(Ee=_u(le.type,le.key,le.props,null,se.mode,Ee),Ee.ref=Da(se,te,le),Ee.return=se,se=Ee)}return M(se);case z:e:{for(Ge=le.key;te!==null;){if(te.key===Ge)if(te.tag===4&&te.stateNode.containerInfo===le.containerInfo&&te.stateNode.implementation===le.implementation){s(se,te.sibling),te=x(te,le.children||[]),te.return=se,se=te;break e}else{s(se,te);break}else n(se,te);te=te.sibling}te=Cf(le,se.mode,Ee),te.return=se,se=te}return M(se);case ae:return Ge=le._init,Yt(se,te,Ge(le._payload),Ee)}if(Xe(le))return Me(se,te,le,Ee);if(Y(le))return ze(se,te,le,Ee);Yl(se,le)}return typeof le=="string"&&le!==""||typeof le=="number"?(le=""+le,te!==null&&te.tag===6?(s(se,te.sibling),te=x(te,le),te.return=se,se=te):(s(se,te),te=bf(le,se.mode,Ee),te.return=se,se=te),M(se)):s(se,te)}return Yt}var Ps=ih(!0),oh=ih(!1),Xl=Qi(null),Jl=null,Ts=null,Rd=null;function Fd(){Rd=Ts=Jl=null}function Nd(e){var n=Xl.current;Nt(Xl),e._currentValue=n}function Ld(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 Ds(e,n){Jl=e,Rd=Ts=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(Hn=!0),e.firstContext=null)}function mr(e){var n=e._currentValue;if(Rd!==e)if(e={context:e,memoizedValue:n,next:null},Ts===null){if(Jl===null)throw Error(o(308));Ts=e,Jl.dependencies={lanes:0,firstContext:e}}else Ts=Ts.next=e;return n}var To=null;function Md(e){To===null?To=[e]:To.push(e)}function sh(e,n,s,c){var x=n.interleaved;return x===null?(s.next=s,Md(n)):(s.next=x.next,x.next=s),n.interleaved=s,Ai(e,c)}function Ai(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 Xi=!1;function Id(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function ah(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 xi(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Ji(e,n,s){var c=e.updateQueue;if(c===null)return null;if(c=c.shared,(At&2)!==0){var x=c.pending;return x===null?n.next=n:(n.next=x.next,x.next=n),c.pending=n,Ai(e,s)}return x=c.interleaved,x===null?(n.next=n,Md(c)):(n.next=x.next,x.next=n),c.interleaved=n,Ai(e,s)}function eu(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,_r(e,s)}}function lh(e,n){var s=e.updateQueue,c=e.alternate;if(c!==null&&(c=c.updateQueue,s===c)){var x=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?x=_=M:_=_.next=M,s=s.next}while(s!==null);_===null?x=_=n:_=_.next=n}else x=_=n;s={baseState:c.baseState,firstBaseUpdate:x,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 tu(e,n,s,c){var x=e.updateQueue;Xi=!1;var _=x.firstBaseUpdate,M=x.lastBaseUpdate,W=x.shared.pending;if(W!==null){x.shared.pending=null;var X=W,ce=X.next;X.next=null,M===null?_=ce:M.next=ce,M=X;var _e=e.alternate;_e!==null&&(_e=_e.updateQueue,W=_e.lastBaseUpdate,W!==M&&(W===null?_e.firstBaseUpdate=ce:W.next=ce,_e.lastBaseUpdate=X))}if(_!==null){var we=x.baseState;M=0,_e=ce=X=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 Me=e,ze=W;switch(ye=n,Fe=s,ze.tag){case 1:if(Me=ze.payload,typeof Me=="function"){we=Me.call(Fe,we,ye);break e}we=Me;break e;case 3:Me.flags=Me.flags&-65537|128;case 0:if(Me=ze.payload,ye=typeof Me=="function"?Me.call(Fe,we,ye):Me,ye==null)break e;we=q({},we,ye);break e;case 2:Xi=!0}}W.callback!==null&&W.lane!==0&&(e.flags|=64,ye=x.effects,ye===null?x.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,X=we):_e=_e.next=Fe,M|=ye;if(W=W.next,W===null){if(W=x.shared.pending,W===null)break;ye=W,W=ye.next,ye.next=null,x.lastBaseUpdate=ye,x.shared.pending=null}}while(!0);if(_e===null&&(X=we),x.baseState=X,x.firstBaseUpdate=ce,x.lastBaseUpdate=_e,n=x.shared.interleaved,n!==null){x=n;do M|=x.lane,x=x.next;while(x!==n)}else _===null&&(x.shared.lanes=0);Fo|=M,e.lanes=M,e.memoizedState=we}}function uh(e,n,s){if(e=n.effects,n.effects=null,e!==null)for(n=0;ns?s:4,e(!0);var c=Vd.transition;Vd.transition={};try{e(!1),n()}finally{ht=s,Vd.transition=c}}function Bh(){return gr().memoizedState}function ev(e,n,s){var c=ro(e);if(s={lane:c,action:s,hasEagerState:!1,eagerState:null,next:null},Ph(e))Th(n,s);else if(s=sh(e,n,s,c),s!==null){var x=Ln();Tr(s,e,c,x),Dh(s,n,c)}}function tv(e,n,s){var c=ro(e),x={lane:c,action:s,hasEagerState:!1,eagerState:null,next:null};if(Ph(e))Th(n,x);else{var _=e.alternate;if(e.lanes===0&&(_===null||_.lanes===0)&&(_=n.lastRenderedReducer,_!==null))try{var M=n.lastRenderedState,W=_(M,s);if(x.hasEagerState=!0,x.eagerState=W,er(W,M)){var X=n.interleaved;X===null?(x.next=x,Md(n)):(x.next=X.next,X.next=x),n.interleaved=x;return}}catch{}finally{}s=sh(e,n,x,c),s!==null&&(x=Ln(),Tr(s,e,c,x),Dh(s,n,c))}}function Ph(e){var n=e.alternate;return e===Ut||n!==null&&n===Ut}function Th(e,n){La=iu=!0;var s=e.pending;s===null?n.next=n:(n.next=s.next,s.next=n),e.pending=n}function Dh(e,n,s){if((s&4194240)!==0){var c=n.lanes;c&=e.pendingLanes,s|=c,n.lanes=s,_r(e,s)}}var au={readContext:mr,useCallback:En,useContext:En,useEffect:En,useImperativeHandle:En,useInsertionEffect:En,useLayoutEffect:En,useMemo:En,useReducer:En,useRef:En,useState:En,useDebugValue:En,useDeferredValue:En,useTransition:En,useMutableSource:En,useSyncExternalStore:En,useId:En,unstable_isNewReconciler:!1},nv={readContext:mr,useCallback:function(e,n){return qr().memoizedState=[e,n===void 0?null:n],e},useContext:mr,useEffect:yh,useImperativeHandle:function(e,n,s){return s=s!=null?s.concat([e]):null,ou(4194308,4,bh.bind(null,n,e),s)},useLayoutEffect:function(e,n){return ou(4194308,4,e,n)},useInsertionEffect:function(e,n){return ou(4,2,e,n)},useMemo:function(e,n){var s=qr();return n=n===void 0?null:n,e=e(),s.memoizedState=[e,n],e},useReducer:function(e,n,s){var c=qr();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=ev.bind(null,Ut,e),[c.memoizedState,e]},useRef:function(e){var n=qr();return e={current:e},n.memoizedState=e},useState:xh,useDebugValue:Qd,useDeferredValue:function(e){return qr().memoizedState=e},useTransition:function(){var e=xh(!1),n=e[0];return e=Jx.bind(null,e[1]),qr().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,s){var c=Ut,x=qr();if(It){if(s===void 0)throw Error(o(407));s=s()}else{if(s=n(),dn===null)throw Error(o(349));(Ro&30)!==0||hh(c,n,s)}x.memoizedState=s;var _={value:s,getSnapshot:n};return x.queue=_,yh(mh.bind(null,c,_,e),[e]),c.flags|=2048,Oa(9,ph.bind(null,c,_,s,n),void 0,null),s},useId:function(){var e=qr(),n=dn.identifierPrefix;if(It){var s=gi,c=mi;s=(c&~(1<<32-tt(c)-1)).toString(32)+s,n=":"+n+"R"+s,s=Ma++,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[fr]=n,e[Gi]=c,Yh(e,n,!1,!1),n.stateNode=e;e:{switch(M=De(s,c),s){case"dialog":St("cancel",e),St("close",e),x=c;break;case"iframe":case"object":case"embed":St("load",e),x=c;break;case"video":case"audio":for(x=0;xMs&&(n.flags|=128,c=!0,ja(_,!1),n.lanes=4194304)}else{if(!c)if(e=nu(M),e!==null){if(n.flags|=128,c=!0,s=e.updateQueue,s!==null&&(n.updateQueue=s,n.flags|=4),ja(_,!0),_.tail===null&&_.tailMode==="hidden"&&!M.alternate&&!It)return kn(n),null}else 2*zt()-_.renderingStartTime>Ms&&s!==1073741824&&(n.flags|=128,c=!0,ja(_,!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=Vt.current,Dt(Vt,c?s&1|2:s&1),n):(kn(n),null);case 22:case 23:return yf(),c=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==c&&(n.flags|=8192),c&&(n.mode&1)!==0?(ir&1073741824)!==0&&(kn(n),n.subtreeFlags&6&&(n.flags|=8192)):kn(n),null;case 24:return null;case 25:return null}throw Error(o(156,n.tag))}function cv(e,n){switch(Bd(n),n.tag){case 1:return zn(n.type)&&Wl(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Rs(),Nt(jn),Nt(Cn),Hd(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return jd(n),null;case 13:if(Nt(Vt),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(o(340));Bs()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Nt(Vt),null;case 4:return Rs(),null;case 10:return Nd(n.type._context),null;case 22:case 23:return yf(),null;case 24:return null;default:return null}}var du=!1,Sn=!1,dv=typeof WeakSet=="function"?WeakSet:Set,Le=null;function Ns(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 lf(e,n,s){try{s()}catch(c){Qt(e,n,c)}}var ep=!1;function fv(e,n){if(Pe=vo,e=wa(),ba(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 x=c.anchorOffset,_=c.focusNode;c=c.focusOffset;try{s.nodeType,_.nodeType}catch{s=null;break e}var M=0,W=-1,X=-1,ce=0,_e=0,we=e,ye=null;t:for(;;){for(var Fe;we!==s||x!==0&&we.nodeType!==3||(W=M+x),we!==_||c!==0&&we.nodeType!==3||(X=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===x&&(W=M),ye===_&&++_e===c&&(X=M),(Fe=we.nextSibling)!==null)break;we=ye,ye=we.parentNode}we=Fe}s=W===-1||X===-1?null:{start:W,end:X}}else s=null}s=s||{start:0,end:0}}else s=null;for(qe={focusedElem:e,selectionRange:s},vo=!1,Le=n;Le!==null;)if(n=Le,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,Le=e;else for(;Le!==null;){n=Le;try{var Me=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(Me!==null){var ze=Me.memoizedProps,Yt=Me.memoizedState,se=n.stateNode,te=se.getSnapshotBeforeUpdate(n.elementType===n.type?ze:Sr(n.type,ze),Yt);se.__reactInternalSnapshotBeforeUpdate=te}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,Le=e;break}Le=n.return}return Me=ep,ep=!1,Me}function za(e,n,s){var c=n.updateQueue;if(c=c!==null?c.lastEffect:null,c!==null){var x=c=c.next;do{if((x.tag&e)===e){var _=x.destroy;x.destroy=void 0,_!==void 0&&lf(n,s,_)}x=x.next}while(x!==c)}}function fu(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 uf(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 tp(e){var n=e.alternate;n!==null&&(e.alternate=null,tp(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[fr],delete n[Gi],delete n[Ki],delete n[bd],delete n[Cd])),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 np(e){return e.tag===5||e.tag===3||e.tag===4}function rp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||np(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 cf(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(cf(e,n,s),e=e.sibling;e!==null;)cf(e,n,s),e=e.sibling}function df(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(df(e,n,s),e=e.sibling;e!==null;)df(e,n,s),e=e.sibling}var gn=null,Br=!1;function eo(e,n,s){for(s=s.child;s!==null;)ip(e,n,s),s=s.sibling}function ip(e,n,s){if(Kn&&typeof Kn.onCommitFiberUnmount=="function")try{Kn.onCommitFiberUnmount(ho,s)}catch{}switch(s.tag){case 5:Sn||Ns(s,n);case 6:var c=gn,x=Br;gn=null,eo(e,n,s),gn=c,Br=x,gn!==null&&(Br?(e=gn,s=s.stateNode,e.nodeType===8?e.parentNode.removeChild(s):e.removeChild(s)):gn.removeChild(s.stateNode));break;case 18:gn!==null&&(Br?(e=gn,s=s.stateNode,e.nodeType===8?Ta(e.parentNode,s):e.nodeType===1&&Ta(e,s),Yn(e)):Ta(gn,s.stateNode));break;case 4:c=gn,x=Br,gn=s.stateNode.containerInfo,Br=!0,eo(e,n,s),gn=c,Br=x;break;case 0:case 11:case 14:case 15:if(!Sn&&(c=s.updateQueue,c!==null&&(c=c.lastEffect,c!==null))){x=c=c.next;do{var _=x,M=_.destroy;_=_.tag,M!==void 0&&((_&2)!==0||(_&4)!==0)&&lf(s,n,M),x=x.next}while(x!==c)}eo(e,n,s);break;case 1:if(!Sn&&(Ns(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)}eo(e,n,s);break;case 21:eo(e,n,s);break;case 22:s.mode&1?(Sn=(c=Sn)||s.memoizedState!==null,eo(e,n,s),Sn=c):eo(e,n,s);break;default:eo(e,n,s)}}function op(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var s=e.stateNode;s===null&&(s=e.stateNode=new dv),n.forEach(function(c){var x=_v.bind(null,e,c);s.has(c)||(s.add(c),c.then(x,x))})}}function Pr(e,n){var s=n.deletions;if(s!==null)for(var c=0;cx&&(x=M),c&=~_}if(c=x,c=zt()-c,c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3e3>c?3e3:4320>c?4320:1960*pv(c/1960))-c,10e?16:e,no===null)var c=!1;else{if(e=no,no=null,Au=0,(At&6)!==0)throw Error(o(331));var x=At;for(At|=4,Le=e.current;Le!==null;){var _=Le,M=_.child;if((Le.flags&16)!==0){var W=_.deletions;if(W!==null){for(var X=0;Xzt()-pf?Lo(e,0):hf|=s),Un(e,n)}function xp(e,n){n===0&&((e.mode&1)===0?n=1:(n=Ti,Ti<<=1,(Ti&130023424)===0&&(Ti=4194304)));var s=Ln();e=Ai(e,n),e!==null&&(Qn(e,n,s),Un(e,s))}function yv(e){var n=e.memoizedState,s=0;n!==null&&(s=n.retryLane),xp(e,s)}function _v(e,n){var s=0;switch(e.tag){case 13:var c=e.stateNode,x=e.memoizedState;x!==null&&(s=x.retryLane);break;case 19:c=e.stateNode;break;default:throw Error(o(314))}c!==null&&c.delete(n),xp(e,s)}var vp;vp=function(e,n,s){if(e!==null)if(e.memoizedProps!==n.pendingProps||jn.current)Hn=!0;else{if((e.lanes&s)===0&&(n.flags&128)===0)return Hn=!1,lv(e,n,s);Hn=(e.flags&131072)!==0}else Hn=!1,It&&(n.flags&1048576)!==0&&X0(n,Ql,n.index);switch(n.lanes=0,n.tag){case 2:var c=n.type;cu(e,n),e=n.pendingProps;var x=Es(n,Cn.current);Ds(n,s),x=Zd(null,n,c,e,x,s);var _=Wd();return n.flags|=1,typeof x=="object"&&x!==null&&typeof x.render=="function"&&x.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,zn(c)?(_=!0,ql(n)):_=!1,n.memoizedState=x.state!==null&&x.state!==void 0?x.state:null,Id(n),x.updater=lu,n.stateNode=x,x._reactInternals=n,Yd(n,c,e,s),n=tf(null,n,c,!0,_,s)):(n.tag=0,It&&_&&Sd(n),Nn(null,n,x,s),n=n.child),n;case 16:c=n.elementType;e:{switch(cu(e,n),e=n.pendingProps,x=c._init,c=x(c._payload),n.type=c,x=n.tag=bv(c),e=Sr(c,e),x){case 0:n=ef(null,n,c,e,s);break e;case 1:n=Wh(null,n,c,e,s);break e;case 11:n=zh(null,n,c,e,s);break e;case 14:n=Hh(null,n,c,Sr(c.type,e),s);break e}throw Error(o(306,c,""))}return n;case 0:return c=n.type,x=n.pendingProps,x=n.elementType===c?x:Sr(c,x),ef(e,n,c,x,s);case 1:return c=n.type,x=n.pendingProps,x=n.elementType===c?x:Sr(c,x),Wh(e,n,c,x,s);case 3:e:{if(qh(n),e===null)throw Error(o(387));c=n.pendingProps,_=n.memoizedState,x=_.element,ah(e,n),tu(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){x=Fs(Error(o(423)),n),n=Gh(e,n,c,s,x);break e}else if(c!==x){x=Fs(Error(o(424)),n),n=Gh(e,n,c,s,x);break e}else for(rr=Zr(n.stateNode.containerInfo.firstChild),nr=n,It=!0,kr=null,s=oh(n,null,c,s),n.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(Bs(),c===x){n=vi(e,n,s);break e}Nn(e,n,c,s)}n=n.child}return n;case 5:return ch(n),e===null&&Td(n),c=n.type,x=n.pendingProps,_=e!==null?e.memoizedProps:null,M=x.children,nt(c,x)?M=null:_!==null&&nt(c,_)&&(n.flags|=32),Zh(e,n),Nn(e,n,M,s),n.child;case 6:return e===null&&Td(n),null;case 13:return Kh(e,n,s);case 4:return Od(n,n.stateNode.containerInfo),c=n.pendingProps,e===null?n.child=Ps(n,null,c,s):Nn(e,n,c,s),n.child;case 11:return c=n.type,x=n.pendingProps,x=n.elementType===c?x:Sr(c,x),zh(e,n,c,x,s);case 7:return Nn(e,n,n.pendingProps,s),n.child;case 8:return Nn(e,n,n.pendingProps.children,s),n.child;case 12:return Nn(e,n,n.pendingProps.children,s),n.child;case 10:e:{if(c=n.type._context,x=n.pendingProps,_=n.memoizedProps,M=x.value,Dt(Xl,c._currentValue),c._currentValue=M,_!==null)if(er(_.value,M)){if(_.children===x.children&&!jn.current){n=vi(e,n,s);break e}}else for(_=n.child,_!==null&&(_.return=n);_!==null;){var W=_.dependencies;if(W!==null){M=_.child;for(var X=W.firstContext;X!==null;){if(X.context===c){if(_.tag===1){X=xi(-1,s&-s),X.tag=2;var ce=_.updateQueue;if(ce!==null){ce=ce.shared;var _e=ce.pending;_e===null?X.next=X:(X.next=_e.next,_e.next=X),ce.pending=X}}_.lanes|=s,X=_.alternate,X!==null&&(X.lanes|=s),Ld(_.return,s,n),W.lanes|=s;break}X=X.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),Ld(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}Nn(e,n,x.children,s),n=n.child}return n;case 9:return x=n.type,c=n.pendingProps.children,Ds(n,s),x=mr(x),c=c(x),n.flags|=1,Nn(e,n,c,s),n.child;case 14:return c=n.type,x=Sr(c,n.pendingProps),x=Sr(c.type,x),Hh(e,n,c,x,s);case 15:return Vh(e,n,n.type,n.pendingProps,s);case 17:return c=n.type,x=n.pendingProps,x=n.elementType===c?x:Sr(c,x),cu(e,n),n.tag=1,zn(c)?(e=!0,ql(n)):e=!1,Ds(n,s),Fh(n,c,x),Yd(n,c,x,s),tf(null,n,c,!0,e,s);case 19:return $h(e,n,s);case 22:return Uh(e,n,s)}throw Error(o(156,n.tag))};function yp(e,n){return yl(e,n)}function wv(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 xr(e,n,s,c){return new wv(e,n,s,c)}function wf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function bv(e){if(typeof e=="function")return wf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ne)return 11;if(e===he)return 14}return 2}function oo(e,n){var s=e.alternate;return s===null?(s=xr(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 _u(e,n,s,c,x,_){var M=2;if(c=e,typeof e=="function")wf(e)&&(M=1);else if(typeof e=="string")M=5;else e:switch(e){case H:return Io(s.children,x,_,n);case j:M=8,x|=8;break;case ee:return e=xr(12,s,n,x|2),e.elementType=ee,e.lanes=_,e;case J:return e=xr(13,s,n,x),e.elementType=J,e.lanes=_,e;case ie:return e=xr(19,s,n,x),e.elementType=ie,e.lanes=_,e;case pe:return wu(s,x,_,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 he:M=14;break e;case ae:M=16,c=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return n=xr(M,s,n,x),n.elementType=e,n.type=c,n.lanes=_,n}function Io(e,n,s,c){return e=xr(7,e,c,n),e.lanes=s,e}function wu(e,n,s,c){return e=xr(22,e,c,n),e.elementType=pe,e.lanes=s,e.stateNode={isHidden:!1},e}function bf(e,n,s){return e=xr(6,e,null,n),e.lanes=s,e}function Cf(e,n,s){return n=xr(4,e.children!==null?e.children:[],e.key,n),n.lanes=s,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Cv(e,n,s,c,x){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=Di(0),this.expirationTimes=Di(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Di(0),this.identifierPrefix=c,this.onRecoverableError=x,this.mutableSourceEagerHydrationData=null}function Ef(e,n,s,c,x,_,M,W,X){return e=new Cv(e,n,s,W,X),n===1?(n=1,_===!0&&(n|=8)):n=0,_=xr(3,null,null,n),e.current=_,_.stateNode=e,_.memoizedState={element:c,isDehydrated:s,cache:null,transitions:null,pendingSuspenseBoundaries:null},Id(_),e}function Ev(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(),Rf.exports=jv(),Rf.exports}var Np;function zv(){if(Np)return Pu;Np=1;var r=Ig();return Pu.createRoot=r.createRoot,Pu.hydrateRoot=r.hydrateRoot,Pu}var Hv=zv();const Vv="/api",A0=100;async function xt(r,a){const o=await fetch(`${Vv}${r}`,{...a,headers:{"Content-Type":"application/json",...a==null?void 0:a.headers}});if(!o.ok){const l=await o.text();let d=l||o.statusText;try{const f=JSON.parse(l);f.detail&&(d=f.detail)}catch{}throw new Error(d)}return o.json()}const rt={getHealth:()=>xt("/health"),getRadioConfig:()=>xt("/radio/config"),updateRadioConfig:r=>xt("/radio/config",{method:"PATCH",body:JSON.stringify(r)}),setPrivateKey:r=>xt("/radio/private-key",{method:"PUT",body:JSON.stringify({private_key:r})}),sendAdvertisement:(r=!0)=>xt(`/radio/advertise?flood=${r}`,{method:"POST"}),rebootRadio:()=>xt("/radio/reboot",{method:"POST"}),reconnectRadio:()=>xt("/radio/reconnect",{method:"POST"}),getContacts:(r=100,a=0)=>xt(`/contacts?limit=${r}&offset=${a}`),getContact:r=>xt(`/contacts/${r}`),syncContacts:()=>xt("/contacts/sync",{method:"POST"}),addContactToRadio:r=>xt(`/contacts/${r}/add-to-radio`,{method:"POST"}),removeContactFromRadio:r=>xt(`/contacts/${r}/remove-from-radio`,{method:"POST"}),deleteContact:r=>xt(`/contacts/${r}`,{method:"DELETE"}),createContact:(r,a,o)=>xt("/contacts",{method:"POST",body:JSON.stringify({public_key:r,name:a,try_historical:o})}),markContactRead:r=>xt(`/contacts/${r}/mark-read`,{method:"POST"}),requestTelemetry:(r,a)=>xt(`/contacts/${r}/telemetry`,{method:"POST",body:JSON.stringify({password:a})}),sendRepeaterCommand:(r,a)=>xt(`/contacts/${r}/command`,{method:"POST",body:JSON.stringify({command:a})}),getChannels:()=>xt("/channels"),getChannel:r=>xt(`/channels/${r}`),createChannel:(r,a)=>xt("/channels",{method:"POST",body:JSON.stringify({name:r,key:a})}),syncChannels:()=>xt("/channels/sync",{method:"POST"}),deleteChannel:r=>xt(`/channels/${r}`,{method:"DELETE"}),markChannelRead:r=>xt(`/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 xt(`/messages${o?`?${o}`:""}`)},getMessagesBulk:(r,a=A0)=>xt(`/messages/bulk?limit_per_conversation=${a}`,{method:"POST",body:JSON.stringify(r)}),sendDirectMessage:(r,a)=>xt("/messages/direct",{method:"POST",body:JSON.stringify({destination:r,text:a})}),sendChannelMessage:(r,a)=>xt("/messages/channel",{method:"POST",body:JSON.stringify({channel_key:r,text:a})}),getUndecryptedPacketCount:()=>xt("/packets/undecrypted/count"),decryptHistoricalPackets:r=>xt("/packets/decrypt/historical",{method:"POST",body:JSON.stringify(r)}),runMaintenance:r=>xt("/packets/maintenance",{method:"POST",body:JSON.stringify({prune_undecrypted_days:r})}),markAllRead:()=>xt("/read-state/mark-all-read",{method:"POST"}),getSettings:()=>xt("/settings"),updateSettings:r=>xt("/settings",{method:"PATCH",body:JSON.stringify(r)})};function Uv(r){const a=F.useRef(null),o=F.useRef(null),[l,d]=F.useState(!1),f=F.useCallback(()=>{const p=window.location.protocol==="https:"?"wss:":"ws:",g=window.location.port==="5173"?"ws://localhost:8000/api/ws":`${p}//${window.location.host}/api/ws`,m=new WebSocket(g);m.onopen=()=>{console.log("WebSocket connected"),d(!0)},m.onclose=()=>{console.log("WebSocket disconnected"),d(!1),a.current=null,o.current=window.setTimeout(()=>{console.log("Attempting WebSocket reconnect..."),f()},3e3)},m.onerror=v=>{console.error("WebSocket error:",v)},m.onmessage=v=>{var y,w,B,T,C,k,D,P;try{const S=JSON.parse(v.data);switch(S.type){case"health":(y=r.onHealth)==null||y.call(r,S.data);break;case"contacts":(w=r.onContacts)==null||w.call(r,S.data);break;case"channels":(B=r.onChannels)==null||B.call(r,S.data);break;case"message":(T=r.onMessage)==null||T.call(r,S.data);break;case"contact":(C=r.onContact)==null||C.call(r,S.data);break;case"raw_packet":(k=r.onRawPacket)==null||k.call(r,S.data);break;case"message_acked":{const N=S.data;(D=r.onMessageAcked)==null||D.call(r,N.message_id,N.ack_count,N.paths);break}case"error":(P=r.onError)==null||P.call(r,S.data);break;case"pong":break;default:console.log("Unknown WebSocket message type:",S.type)}}catch(S){console.error("Failed to parse WebSocket message:",S)}},a.current=m},[r]);return F.useEffect(()=>{f();const p=setInterval(()=>{var h;((h=a.current)==null?void 0:h.readyState)===WebSocket.OPEN&&a.current.send("ping")},3e4);return()=>{clearInterval(p),o.current&&clearTimeout(o.current),a.current&&a.current.close()}},[f]),{connected:l}}const Oc=2,Zv=300*1e3;function Lp(r){const a=Math.floor(r/3600),o=Math.floor(r%3600/60),l=Math.floor(r%60);return`${a}h${o}m${l}s`}function Wv(r){return r<=5?"✅":r<=10?"🟢":r<=25?"🟡":r<=50?"🔴":"🚨"}function qv(r,a){const l=Math.floor(Date.now()/1e3)-r.startTime,d=a.uptime_seconds-r.uptime,f=a.airtime_seconds-r.txAirtime,p=a.rx_airtime_seconds-r.rxAirtime,h=a.sent_flood-r.sentFlood,g=a.sent_direct-r.sentDirect,m=a.recv_flood-r.recvFlood,v=a.recv_direct-r.recvDirect,y=d>0?f/d*100:0,w=d>0?p/d*100:0,B=h+g,T=m+v,C=B>0?y*(h/B):0,k=B>0?y*(g/B):0,D=T>0?w*(m/T):0,P=T>0?w*(v/T):0,S=Wv(y),N=Math.max(0,100-y-w);return["Airtime/Duty Cycle Statistics",`Duration: ${Lp(l)} (uptime delta: ${Lp(d)})`,"",`${S} TX Airtime: ${y.toFixed(3)}% (${B.toLocaleString()} pkts)`,` Flood: ${C.toFixed(3)}% (${h.toLocaleString()} pkts)`,` Direct: ${k.toFixed(3)}% (${g.toLocaleString()} pkts)`,"",`RX Airtime: ${w.toFixed(3)}% (${T.toLocaleString()} pkts)`,` Flood: ${D.toFixed(3)}% (${m.toLocaleString()} pkts)`,` Direct: ${P.toFixed(3)}% (${v.toLocaleString()} pkts)`,"",`Idle: ${N.toFixed(3)}%`].join(` +`+_.stack}return{value:e,source:n,stack:x,digest:null}}function Xd(e,n,s){return{value:e,source:null,stack:s??null,digest:n??null}}function Jd(e,n){try{console.error(n.value)}catch(s){setTimeout(function(){throw s})}}var ov=typeof WeakMap=="function"?WeakMap:Map;function Lh(e,n,s){s=xi(-1,s),s.tag=3,s.payload={element:null};var c=n.value;return s.callback=function(){mu||(mu=!0,mf=c),Jd(e,n)},s}function Mh(e,n,s){s=xi(-1,s),s.tag=3;var c=e.type.getDerivedStateFromError;if(typeof c=="function"){var x=n.value;s.payload=function(){return c(x)},s.callback=function(){Jd(e,n)}}var _=e.stateNode;return _!==null&&typeof _.componentDidCatch=="function"&&(s.callback=function(){Jd(e,n),typeof c!="function"&&(to===null?to=new Set([this]):to.add(this));var M=n.stack;this.componentDidCatch(n.value,{componentStack:M!==null?M:""})}),s}function Ih(e,n,s){var c=e.pingCache;if(c===null){c=e.pingCache=new ov;var x=new Set;c.set(n,x)}else x=c.get(n),x===void 0&&(x=new Set,c.set(n,x));x.has(s)||(x.add(s),e=vv.bind(null,e,n,s),n.then(e,e))}function Oh(e){do{var n;if((n=e.tag===13)&&(n=e.memoizedState,n=n!==null?n.dehydrated!==null:!0),n)return e;e=e.return}while(e!==null);return null}function jh(e,n,s,c,x){return(e.mode&1)===0?(e===n?e.flags|=65536:(e.flags|=128,s.flags|=131072,s.flags&=-52805,s.tag===1&&(s.alternate===null?s.tag=17:(n=xi(-1,1),n.tag=2,Ji(s,n,1))),s.lanes|=1),e):(e.flags|=65536,e.lanes=x,e)}var sv=N.ReactCurrentOwner,Hn=!1;function Nn(e,n,s,c){n.child=e===null?oh(n,null,s,c):Ps(n,e.child,s,c)}function zh(e,n,s,c,x){s=s.render;var _=n.ref;return Ds(n,x),c=Zd(e,n,s,c,_,x),s=Wd(),e!==null&&!Hn?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~x,vi(e,n,x)):(It&&s&&Sd(n),n.flags|=1,Nn(e,n,c,x),n.child)}function Hh(e,n,s,c,x){if(e===null){var _=s.type;return typeof _=="function"&&!wf(_)&&_.defaultProps===void 0&&s.compare===null&&s.defaultProps===void 0?(n.tag=15,n.type=_,Vh(e,n,_,c,x)):(e=_u(s.type,null,c,n,n.mode,x),e.ref=n.ref,e.return=n,n.child=e)}if(_=e.child,(e.lanes&x)===0){var M=_.memoizedProps;if(s=s.compare,s=s!==null?s:Hr,s(M,c)&&e.ref===n.ref)return vi(e,n,x)}return n.flags|=1,e=oo(_,c),e.ref=n.ref,e.return=n,n.child=e}function Vh(e,n,s,c,x){if(e!==null){var _=e.memoizedProps;if(Hr(_,c)&&e.ref===n.ref)if(Hn=!1,n.pendingProps=c=_,(e.lanes&x)!==0)(e.flags&131072)!==0&&(Hn=!0);else return n.lanes=e.lanes,vi(e,n,x)}return ef(e,n,s,c,x)}function Uh(e,n,s){var c=n.pendingProps,x=c.children,_=e!==null?e.memoizedState:null;if(c.mode==="hidden")if((n.mode&1)===0)n.memoizedState={baseLanes:0,cachePool:null,transitions:null},Dt(Ls,ir),ir|=s;else{if((s&1073741824)===0)return e=_!==null?_.baseLanes|s:s,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:e,cachePool:null,transitions:null},n.updateQueue=null,Dt(Ls,ir),ir|=e,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},c=_!==null?_.baseLanes:s,Dt(Ls,ir),ir|=c}else _!==null?(c=_.baseLanes|s,n.memoizedState=null):c=s,Dt(Ls,ir),ir|=c;return Nn(e,n,x,s),n.child}function Zh(e,n){var s=n.ref;(e===null&&s!==null||e!==null&&e.ref!==s)&&(n.flags|=512,n.flags|=2097152)}function ef(e,n,s,c,x){var _=zn(s)?So:Cn.current;return _=Es(n,_),Ds(n,x),s=Zd(e,n,s,c,_,x),c=Wd(),e!==null&&!Hn?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~x,vi(e,n,x)):(It&&c&&Sd(n),n.flags|=1,Nn(e,n,s,x),n.child)}function Wh(e,n,s,c,x){if(zn(s)){var _=!0;ql(n)}else _=!1;if(Ds(n,x),n.stateNode===null)cu(e,n),Fh(n,s,c),Yd(n,s,c,x),c=!0;else if(e===null){var M=n.stateNode,W=n.memoizedProps;M.props=W;var X=M.context,ce=s.contextType;typeof ce=="object"&&ce!==null?ce=mr(ce):(ce=zn(s)?So:Cn.current,ce=Es(n,ce));var _e=s.getDerivedStateFromProps,we=typeof _e=="function"||typeof M.getSnapshotBeforeUpdate=="function";we||typeof M.UNSAFE_componentWillReceiveProps!="function"&&typeof M.componentWillReceiveProps!="function"||(W!==c||X!==ce)&&Nh(n,M,c,ce),Xi=!1;var ye=n.memoizedState;M.state=ye,tu(n,c,M,x),X=n.memoizedState,W!==c||ye!==X||jn.current||Xi?(typeof _e=="function"&&($d(n,s,_e,c),X=n.memoizedState),(W=Xi||Rh(n,s,W,c,ye,X,ce))?(we||typeof M.UNSAFE_componentWillMount!="function"&&typeof M.componentWillMount!="function"||(typeof M.componentWillMount=="function"&&M.componentWillMount(),typeof M.UNSAFE_componentWillMount=="function"&&M.UNSAFE_componentWillMount()),typeof M.componentDidMount=="function"&&(n.flags|=4194308)):(typeof M.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=c,n.memoizedState=X),M.props=c,M.state=X,M.context=ce,c=W):(typeof M.componentDidMount=="function"&&(n.flags|=4194308),c=!1)}else{M=n.stateNode,ah(e,n),W=n.memoizedProps,ce=n.type===n.elementType?W:Sr(n.type,W),M.props=ce,we=n.pendingProps,ye=M.context,X=s.contextType,typeof X=="object"&&X!==null?X=mr(X):(X=zn(s)?So:Cn.current,X=Es(n,X));var Fe=s.getDerivedStateFromProps;(_e=typeof Fe=="function"||typeof M.getSnapshotBeforeUpdate=="function")||typeof M.UNSAFE_componentWillReceiveProps!="function"&&typeof M.componentWillReceiveProps!="function"||(W!==we||ye!==X)&&Nh(n,M,c,X),Xi=!1,ye=n.memoizedState,M.state=ye,tu(n,c,M,x);var Me=n.memoizedState;W!==we||ye!==Me||jn.current||Xi?(typeof Fe=="function"&&($d(n,s,Fe,c),Me=n.memoizedState),(ce=Xi||Rh(n,s,ce,c,ye,Me,X)||!1)?(_e||typeof M.UNSAFE_componentWillUpdate!="function"&&typeof M.componentWillUpdate!="function"||(typeof M.componentWillUpdate=="function"&&M.componentWillUpdate(c,Me,X),typeof M.UNSAFE_componentWillUpdate=="function"&&M.UNSAFE_componentWillUpdate(c,Me,X)),typeof M.componentDidUpdate=="function"&&(n.flags|=4),typeof M.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof M.componentDidUpdate!="function"||W===e.memoizedProps&&ye===e.memoizedState||(n.flags|=4),typeof M.getSnapshotBeforeUpdate!="function"||W===e.memoizedProps&&ye===e.memoizedState||(n.flags|=1024),n.memoizedProps=c,n.memoizedState=Me),M.props=c,M.state=Me,M.context=X,c=ce):(typeof M.componentDidUpdate!="function"||W===e.memoizedProps&&ye===e.memoizedState||(n.flags|=4),typeof M.getSnapshotBeforeUpdate!="function"||W===e.memoizedProps&&ye===e.memoizedState||(n.flags|=1024),c=!1)}return tf(e,n,s,c,_,x)}function tf(e,n,s,c,x,_){Zh(e,n);var M=(n.flags&128)!==0;if(!c&&!M)return x&&$0(n,s,!1),vi(e,n,_);c=n.stateNode,sv.current=n;var W=M&&typeof s.getDerivedStateFromError!="function"?null:c.render();return n.flags|=1,e!==null&&M?(n.child=Ps(n,e.child,null,_),n.child=Ps(n,null,W,_)):Nn(e,n,W,_),n.memoizedState=c.state,x&&$0(n,s,!0),n.child}function qh(e){var n=e.stateNode;n.pendingContext?K0(e,n.pendingContext,n.pendingContext!==n.context):n.context&&K0(e,n.context,!1),Od(e,n.containerInfo)}function Gh(e,n,s,c,x){return Bs(),Dd(x),n.flags|=256,Nn(e,n,s,c),n.child}var nf={dehydrated:null,treeContext:null,retryLane:0};function rf(e){return{baseLanes:e,cachePool:null,transitions:null}}function Kh(e,n,s){var c=n.pendingProps,x=Vt.current,_=!1,M=(n.flags&128)!==0,W;if((W=M)||(W=e!==null&&e.memoizedState===null?!1:(x&2)!==0),W?(_=!0,n.flags&=-129):(e===null||e.memoizedState!==null)&&(x|=1),Dt(Vt,x&1),e===null)return Td(n),e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((n.mode&1)===0?n.lanes=1:e.data==="$!"?n.lanes=8:n.lanes=1073741824,null):(M=c.children,e=c.fallback,_?(c=n.mode,_=n.child,M={mode:"hidden",children:M},(c&1)===0&&_!==null?(_.childLanes=0,_.pendingProps=M):_=wu(M,c,0,null),e=Io(e,c,s,null),_.return=n,e.return=n,_.sibling=e,n.child=_,n.child.memoizedState=rf(s),n.memoizedState=nf,e):of(n,M));if(x=e.memoizedState,x!==null&&(W=x.dehydrated,W!==null))return av(e,n,M,c,W,x,s);if(_){_=c.fallback,M=n.mode,x=e.child,W=x.sibling;var X={mode:"hidden",children:c.children};return(M&1)===0&&n.child!==x?(c=n.child,c.childLanes=0,c.pendingProps=X,n.deletions=null):(c=oo(x,X),c.subtreeFlags=x.subtreeFlags&14680064),W!==null?_=oo(W,_):(_=Io(_,M,s,null),_.flags|=2),_.return=n,c.return=n,c.sibling=_,n.child=c,c=_,_=n.child,M=e.child.memoizedState,M=M===null?rf(s):{baseLanes:M.baseLanes|s,cachePool:null,transitions:M.transitions},_.memoizedState=M,_.childLanes=e.childLanes&~s,n.memoizedState=nf,c}return _=e.child,e=_.sibling,c=oo(_,{mode:"visible",children:c.children}),(n.mode&1)===0&&(c.lanes=s),c.return=n,c.sibling=null,e!==null&&(s=n.deletions,s===null?(n.deletions=[e],n.flags|=16):s.push(e)),n.child=c,n.memoizedState=null,c}function of(e,n){return n=wu({mode:"visible",children:n},e.mode,0,null),n.return=e,e.child=n}function uu(e,n,s,c){return c!==null&&Dd(c),Ps(n,e.child,null,s),e=of(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function av(e,n,s,c,x,_,M){if(s)return n.flags&256?(n.flags&=-257,c=Xd(Error(o(422))),uu(e,n,M,c)):n.memoizedState!==null?(n.child=e.child,n.flags|=128,null):(_=c.fallback,x=n.mode,c=wu({mode:"visible",children:c.children},x,0,null),_=Io(_,x,M,null),_.flags|=2,c.return=n,_.return=n,c.sibling=_,n.child=c,(n.mode&1)!==0&&Ps(n,e.child,null,M),n.child.memoizedState=rf(M),n.memoizedState=nf,_);if((n.mode&1)===0)return uu(e,n,M,null);if(x.data==="$!"){if(c=x.nextSibling&&x.nextSibling.dataset,c)var W=c.dgst;return c=W,_=Error(o(419)),c=Xd(_,c,void 0),uu(e,n,M,c)}if(W=(M&e.childLanes)!==0,Hn||W){if(c=dn,c!==null){switch(M&-M){case 4:x=2;break;case 16:x=8;break;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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:x=32;break;case 536870912:x=268435456;break;default:x=0}x=(x&(c.suspendedLanes|M))!==0?0:x,x!==0&&x!==_.retryLane&&(_.retryLane=x,Ai(e,x),Tr(c,e,x,-1))}return _f(),c=Xd(Error(o(421))),uu(e,n,M,c)}return x.data==="$?"?(n.flags|=128,n.child=e.child,n=yv.bind(null,e),x._reactRetry=n,null):(e=_.treeContext,rr=Zr(x.nextSibling),nr=n,It=!0,kr=null,e!==null&&(hr[pr++]=mi,hr[pr++]=gi,hr[pr++]=Bo,mi=e.id,gi=e.overflow,Bo=n),n=of(n,c.children),n.flags|=4096,n)}function Qh(e,n,s){e.lanes|=n;var c=e.alternate;c!==null&&(c.lanes|=n),Ld(e.return,n,s)}function sf(e,n,s,c,x){var _=e.memoizedState;_===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:c,tail:s,tailMode:x}:(_.isBackwards=n,_.rendering=null,_.renderingStartTime=0,_.last=c,_.tail=s,_.tailMode=x)}function $h(e,n,s){var c=n.pendingProps,x=c.revealOrder,_=c.tail;if(Nn(e,n,c.children,s),c=Vt.current,(c&2)!==0)c=c&1|2,n.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Qh(e,s,n);else if(e.tag===19)Qh(e,s,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}c&=1}if(Dt(Vt,c),(n.mode&1)===0)n.memoizedState=null;else switch(x){case"forwards":for(s=n.child,x=null;s!==null;)e=s.alternate,e!==null&&nu(e)===null&&(x=s),s=s.sibling;s=x,s===null?(x=n.child,n.child=null):(x=s.sibling,s.sibling=null),sf(n,!1,x,s,_);break;case"backwards":for(s=null,x=n.child,n.child=null;x!==null;){if(e=x.alternate,e!==null&&nu(e)===null){n.child=x;break}e=x.sibling,x.sibling=s,s=x,x=e}sf(n,!0,s,null,_);break;case"together":sf(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function cu(e,n){(n.mode&1)===0&&e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2)}function vi(e,n,s){if(e!==null&&(n.dependencies=e.dependencies),Fo|=n.lanes,(s&n.childLanes)===0)return null;if(e!==null&&n.child!==e.child)throw Error(o(153));if(n.child!==null){for(e=n.child,s=oo(e,e.pendingProps),n.child=s,s.return=n;e.sibling!==null;)e=e.sibling,s=s.sibling=oo(e,e.pendingProps),s.return=n;s.sibling=null}return n.child}function lv(e,n,s){switch(n.tag){case 3:qh(n),Bs();break;case 5:ch(n);break;case 1:zn(n.type)&&ql(n);break;case 4:Od(n,n.stateNode.containerInfo);break;case 10:var c=n.type._context,x=n.memoizedProps.value;Dt(Xl,c._currentValue),c._currentValue=x;break;case 13:if(c=n.memoizedState,c!==null)return c.dehydrated!==null?(Dt(Vt,Vt.current&1),n.flags|=128,null):(s&n.child.childLanes)!==0?Kh(e,n,s):(Dt(Vt,Vt.current&1),e=vi(e,n,s),e!==null?e.sibling:null);Dt(Vt,Vt.current&1);break;case 19:if(c=(s&n.childLanes)!==0,(e.flags&128)!==0){if(c)return $h(e,n,s);n.flags|=128}if(x=n.memoizedState,x!==null&&(x.rendering=null,x.tail=null,x.lastEffect=null),Dt(Vt,Vt.current),c)break;return null;case 22:case 23:return n.lanes=0,Uh(e,n,s)}return vi(e,n,s)}var Yh,af,Xh,Jh;Yh=function(e,n){for(var s=n.child;s!==null;){if(s.tag===5||s.tag===6)e.appendChild(s.stateNode);else if(s.tag!==4&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===n)break;for(;s.sibling===null;){if(s.return===null||s.return===n)return;s=s.return}s.sibling.return=s.return,s=s.sibling}},af=function(){},Xh=function(e,n,s,c){var x=e.memoizedProps;if(x!==c){e=n.stateNode,Do(Wr.current);var _=null;switch(s){case"input":x=Ze(e,x),c=Ze(e,c),_=[];break;case"select":x=q({},x,{value:void 0}),c=q({},c,{value:void 0}),_=[];break;case"textarea":x=Te(e,x),c=Te(e,c),_=[];break;default:typeof x.onClick!="function"&&typeof c.onClick=="function"&&(e.onclick=ve)}be(s,c);var M;s=null;for(ce in x)if(!c.hasOwnProperty(ce)&&x.hasOwnProperty(ce)&&x[ce]!=null)if(ce==="style"){var W=x[ce];for(M in W)W.hasOwnProperty(M)&&(s||(s={}),s[M]="")}else ce!=="dangerouslySetInnerHTML"&&ce!=="children"&&ce!=="suppressContentEditableWarning"&&ce!=="suppressHydrationWarning"&&ce!=="autoFocus"&&(d.hasOwnProperty(ce)?_||(_=[]):(_=_||[]).push(ce,null));for(ce in c){var X=c[ce];if(W=x!=null?x[ce]:void 0,c.hasOwnProperty(ce)&&X!==W&&(X!=null||W!=null))if(ce==="style")if(W){for(M in W)!W.hasOwnProperty(M)||X&&X.hasOwnProperty(M)||(s||(s={}),s[M]="");for(M in X)X.hasOwnProperty(M)&&W[M]!==X[M]&&(s||(s={}),s[M]=X[M])}else s||(_||(_=[]),_.push(ce,s)),s=X;else ce==="dangerouslySetInnerHTML"?(X=X?X.__html:void 0,W=W?W.__html:void 0,X!=null&&W!==X&&(_=_||[]).push(ce,X)):ce==="children"?typeof X!="string"&&typeof X!="number"||(_=_||[]).push(ce,""+X):ce!=="suppressContentEditableWarning"&&ce!=="suppressHydrationWarning"&&(d.hasOwnProperty(ce)?(X!=null&&ce==="onScroll"&&St("scroll",e),_||W===X||(_=[])):(_=_||[]).push(ce,X))}s&&(_=_||[]).push("style",s);var ce=_;(n.updateQueue=ce)&&(n.flags|=4)}},Jh=function(e,n,s,c){s!==c&&(n.flags|=4)};function ja(e,n){if(!It)switch(e.tailMode){case"hidden":n=e.tail;for(var s=null;n!==null;)n.alternate!==null&&(s=n),n=n.sibling;s===null?e.tail=null:s.sibling=null;break;case"collapsed":s=e.tail;for(var c=null;s!==null;)s.alternate!==null&&(c=s),s=s.sibling;c===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:c.sibling=null}}function kn(e){var n=e.alternate!==null&&e.alternate.child===e.child,s=0,c=0;if(n)for(var x=e.child;x!==null;)s|=x.lanes|x.childLanes,c|=x.subtreeFlags&14680064,c|=x.flags&14680064,x.return=e,x=x.sibling;else for(x=e.child;x!==null;)s|=x.lanes|x.childLanes,c|=x.subtreeFlags,c|=x.flags,x.return=e,x=x.sibling;return e.subtreeFlags|=c,e.childLanes=s,n}function uv(e,n,s){var c=n.pendingProps;switch(Bd(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return kn(n),null;case 1:return zn(n.type)&&Wl(),kn(n),null;case 3:return c=n.stateNode,Rs(),Nt(jn),Nt(Cn),Hd(),c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),(e===null||e.child===null)&&($l(n)?n.flags|=4:e===null||e.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,kr!==null&&(xf(kr),kr=null))),af(e,n),kn(n),null;case 5:jd(n);var x=Do(Na.current);if(s=n.type,e!==null&&n.stateNode!=null)Xh(e,n,s,c,x),e.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!c){if(n.stateNode===null)throw Error(o(166));return kn(n),null}if(e=Do(Wr.current),$l(n)){c=n.stateNode,s=n.type;var _=n.memoizedProps;switch(c[fr]=n,c[Gi]=_,e=(n.mode&1)!==0,s){case"dialog":St("cancel",c),St("close",c);break;case"iframe":case"object":case"embed":St("load",c);break;case"video":case"audio":for(x=0;x<\/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[fr]=n,e[Gi]=c,Yh(e,n,!1,!1),n.stateNode=e;e:{switch(M=De(s,c),s){case"dialog":St("cancel",e),St("close",e),x=c;break;case"iframe":case"object":case"embed":St("load",e),x=c;break;case"video":case"audio":for(x=0;xMs&&(n.flags|=128,c=!0,ja(_,!1),n.lanes=4194304)}else{if(!c)if(e=nu(M),e!==null){if(n.flags|=128,c=!0,s=e.updateQueue,s!==null&&(n.updateQueue=s,n.flags|=4),ja(_,!0),_.tail===null&&_.tailMode==="hidden"&&!M.alternate&&!It)return kn(n),null}else 2*zt()-_.renderingStartTime>Ms&&s!==1073741824&&(n.flags|=128,c=!0,ja(_,!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=Vt.current,Dt(Vt,c?s&1|2:s&1),n):(kn(n),null);case 22:case 23:return yf(),c=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==c&&(n.flags|=8192),c&&(n.mode&1)!==0?(ir&1073741824)!==0&&(kn(n),n.subtreeFlags&6&&(n.flags|=8192)):kn(n),null;case 24:return null;case 25:return null}throw Error(o(156,n.tag))}function cv(e,n){switch(Bd(n),n.tag){case 1:return zn(n.type)&&Wl(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Rs(),Nt(jn),Nt(Cn),Hd(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return jd(n),null;case 13:if(Nt(Vt),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(o(340));Bs()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Nt(Vt),null;case 4:return Rs(),null;case 10:return Nd(n.type._context),null;case 22:case 23:return yf(),null;case 24:return null;default:return null}}var du=!1,Sn=!1,dv=typeof WeakSet=="function"?WeakSet:Set,Le=null;function Ns(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 lf(e,n,s){try{s()}catch(c){Qt(e,n,c)}}var ep=!1;function fv(e,n){if(Pe=vo,e=wa(),ba(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 x=c.anchorOffset,_=c.focusNode;c=c.focusOffset;try{s.nodeType,_.nodeType}catch{s=null;break e}var M=0,W=-1,X=-1,ce=0,_e=0,we=e,ye=null;t:for(;;){for(var Fe;we!==s||x!==0&&we.nodeType!==3||(W=M+x),we!==_||c!==0&&we.nodeType!==3||(X=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===x&&(W=M),ye===_&&++_e===c&&(X=M),(Fe=we.nextSibling)!==null)break;we=ye,ye=we.parentNode}we=Fe}s=W===-1||X===-1?null:{start:W,end:X}}else s=null}s=s||{start:0,end:0}}else s=null;for(qe={focusedElem:e,selectionRange:s},vo=!1,Le=n;Le!==null;)if(n=Le,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,Le=e;else for(;Le!==null;){n=Le;try{var Me=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(Me!==null){var ze=Me.memoizedProps,Yt=Me.memoizedState,se=n.stateNode,te=se.getSnapshotBeforeUpdate(n.elementType===n.type?ze:Sr(n.type,ze),Yt);se.__reactInternalSnapshotBeforeUpdate=te}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,Le=e;break}Le=n.return}return Me=ep,ep=!1,Me}function za(e,n,s){var c=n.updateQueue;if(c=c!==null?c.lastEffect:null,c!==null){var x=c=c.next;do{if((x.tag&e)===e){var _=x.destroy;x.destroy=void 0,_!==void 0&&lf(n,s,_)}x=x.next}while(x!==c)}}function fu(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 uf(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 tp(e){var n=e.alternate;n!==null&&(e.alternate=null,tp(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[fr],delete n[Gi],delete n[Ki],delete n[bd],delete n[Cd])),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 np(e){return e.tag===5||e.tag===3||e.tag===4}function rp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||np(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 cf(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(cf(e,n,s),e=e.sibling;e!==null;)cf(e,n,s),e=e.sibling}function df(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(df(e,n,s),e=e.sibling;e!==null;)df(e,n,s),e=e.sibling}var gn=null,Br=!1;function eo(e,n,s){for(s=s.child;s!==null;)ip(e,n,s),s=s.sibling}function ip(e,n,s){if(Kn&&typeof Kn.onCommitFiberUnmount=="function")try{Kn.onCommitFiberUnmount(ho,s)}catch{}switch(s.tag){case 5:Sn||Ns(s,n);case 6:var c=gn,x=Br;gn=null,eo(e,n,s),gn=c,Br=x,gn!==null&&(Br?(e=gn,s=s.stateNode,e.nodeType===8?e.parentNode.removeChild(s):e.removeChild(s)):gn.removeChild(s.stateNode));break;case 18:gn!==null&&(Br?(e=gn,s=s.stateNode,e.nodeType===8?Ta(e.parentNode,s):e.nodeType===1&&Ta(e,s),Yn(e)):Ta(gn,s.stateNode));break;case 4:c=gn,x=Br,gn=s.stateNode.containerInfo,Br=!0,eo(e,n,s),gn=c,Br=x;break;case 0:case 11:case 14:case 15:if(!Sn&&(c=s.updateQueue,c!==null&&(c=c.lastEffect,c!==null))){x=c=c.next;do{var _=x,M=_.destroy;_=_.tag,M!==void 0&&((_&2)!==0||(_&4)!==0)&&lf(s,n,M),x=x.next}while(x!==c)}eo(e,n,s);break;case 1:if(!Sn&&(Ns(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)}eo(e,n,s);break;case 21:eo(e,n,s);break;case 22:s.mode&1?(Sn=(c=Sn)||s.memoizedState!==null,eo(e,n,s),Sn=c):eo(e,n,s);break;default:eo(e,n,s)}}function op(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var s=e.stateNode;s===null&&(s=e.stateNode=new dv),n.forEach(function(c){var x=_v.bind(null,e,c);s.has(c)||(s.add(c),c.then(x,x))})}}function Pr(e,n){var s=n.deletions;if(s!==null)for(var c=0;cx&&(x=M),c&=~_}if(c=x,c=zt()-c,c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3e3>c?3e3:4320>c?4320:1960*pv(c/1960))-c,10e?16:e,no===null)var c=!1;else{if(e=no,no=null,Au=0,(At&6)!==0)throw Error(o(331));var x=At;for(At|=4,Le=e.current;Le!==null;){var _=Le,M=_.child;if((Le.flags&16)!==0){var W=_.deletions;if(W!==null){for(var X=0;Xzt()-pf?Lo(e,0):hf|=s),Un(e,n)}function xp(e,n){n===0&&((e.mode&1)===0?n=1:(n=Ti,Ti<<=1,(Ti&130023424)===0&&(Ti=4194304)));var s=Ln();e=Ai(e,n),e!==null&&(Qn(e,n,s),Un(e,s))}function yv(e){var n=e.memoizedState,s=0;n!==null&&(s=n.retryLane),xp(e,s)}function _v(e,n){var s=0;switch(e.tag){case 13:var c=e.stateNode,x=e.memoizedState;x!==null&&(s=x.retryLane);break;case 19:c=e.stateNode;break;default:throw Error(o(314))}c!==null&&c.delete(n),xp(e,s)}var vp;vp=function(e,n,s){if(e!==null)if(e.memoizedProps!==n.pendingProps||jn.current)Hn=!0;else{if((e.lanes&s)===0&&(n.flags&128)===0)return Hn=!1,lv(e,n,s);Hn=(e.flags&131072)!==0}else Hn=!1,It&&(n.flags&1048576)!==0&&X0(n,Ql,n.index);switch(n.lanes=0,n.tag){case 2:var c=n.type;cu(e,n),e=n.pendingProps;var x=Es(n,Cn.current);Ds(n,s),x=Zd(null,n,c,e,x,s);var _=Wd();return n.flags|=1,typeof x=="object"&&x!==null&&typeof x.render=="function"&&x.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,zn(c)?(_=!0,ql(n)):_=!1,n.memoizedState=x.state!==null&&x.state!==void 0?x.state:null,Id(n),x.updater=lu,n.stateNode=x,x._reactInternals=n,Yd(n,c,e,s),n=tf(null,n,c,!0,_,s)):(n.tag=0,It&&_&&Sd(n),Nn(null,n,x,s),n=n.child),n;case 16:c=n.elementType;e:{switch(cu(e,n),e=n.pendingProps,x=c._init,c=x(c._payload),n.type=c,x=n.tag=bv(c),e=Sr(c,e),x){case 0:n=ef(null,n,c,e,s);break e;case 1:n=Wh(null,n,c,e,s);break e;case 11:n=zh(null,n,c,e,s);break e;case 14:n=Hh(null,n,c,Sr(c.type,e),s);break e}throw Error(o(306,c,""))}return n;case 0:return c=n.type,x=n.pendingProps,x=n.elementType===c?x:Sr(c,x),ef(e,n,c,x,s);case 1:return c=n.type,x=n.pendingProps,x=n.elementType===c?x:Sr(c,x),Wh(e,n,c,x,s);case 3:e:{if(qh(n),e===null)throw Error(o(387));c=n.pendingProps,_=n.memoizedState,x=_.element,ah(e,n),tu(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){x=Fs(Error(o(423)),n),n=Gh(e,n,c,s,x);break e}else if(c!==x){x=Fs(Error(o(424)),n),n=Gh(e,n,c,s,x);break e}else for(rr=Zr(n.stateNode.containerInfo.firstChild),nr=n,It=!0,kr=null,s=oh(n,null,c,s),n.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(Bs(),c===x){n=vi(e,n,s);break e}Nn(e,n,c,s)}n=n.child}return n;case 5:return ch(n),e===null&&Td(n),c=n.type,x=n.pendingProps,_=e!==null?e.memoizedProps:null,M=x.children,nt(c,x)?M=null:_!==null&&nt(c,_)&&(n.flags|=32),Zh(e,n),Nn(e,n,M,s),n.child;case 6:return e===null&&Td(n),null;case 13:return Kh(e,n,s);case 4:return Od(n,n.stateNode.containerInfo),c=n.pendingProps,e===null?n.child=Ps(n,null,c,s):Nn(e,n,c,s),n.child;case 11:return c=n.type,x=n.pendingProps,x=n.elementType===c?x:Sr(c,x),zh(e,n,c,x,s);case 7:return Nn(e,n,n.pendingProps,s),n.child;case 8:return Nn(e,n,n.pendingProps.children,s),n.child;case 12:return Nn(e,n,n.pendingProps.children,s),n.child;case 10:e:{if(c=n.type._context,x=n.pendingProps,_=n.memoizedProps,M=x.value,Dt(Xl,c._currentValue),c._currentValue=M,_!==null)if(er(_.value,M)){if(_.children===x.children&&!jn.current){n=vi(e,n,s);break e}}else for(_=n.child,_!==null&&(_.return=n);_!==null;){var W=_.dependencies;if(W!==null){M=_.child;for(var X=W.firstContext;X!==null;){if(X.context===c){if(_.tag===1){X=xi(-1,s&-s),X.tag=2;var ce=_.updateQueue;if(ce!==null){ce=ce.shared;var _e=ce.pending;_e===null?X.next=X:(X.next=_e.next,_e.next=X),ce.pending=X}}_.lanes|=s,X=_.alternate,X!==null&&(X.lanes|=s),Ld(_.return,s,n),W.lanes|=s;break}X=X.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),Ld(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}Nn(e,n,x.children,s),n=n.child}return n;case 9:return x=n.type,c=n.pendingProps.children,Ds(n,s),x=mr(x),c=c(x),n.flags|=1,Nn(e,n,c,s),n.child;case 14:return c=n.type,x=Sr(c,n.pendingProps),x=Sr(c.type,x),Hh(e,n,c,x,s);case 15:return Vh(e,n,n.type,n.pendingProps,s);case 17:return c=n.type,x=n.pendingProps,x=n.elementType===c?x:Sr(c,x),cu(e,n),n.tag=1,zn(c)?(e=!0,ql(n)):e=!1,Ds(n,s),Fh(n,c,x),Yd(n,c,x,s),tf(null,n,c,!0,e,s);case 19:return $h(e,n,s);case 22:return Uh(e,n,s)}throw Error(o(156,n.tag))};function yp(e,n){return yl(e,n)}function wv(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 xr(e,n,s,c){return new wv(e,n,s,c)}function wf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function bv(e){if(typeof e=="function")return wf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ne)return 11;if(e===he)return 14}return 2}function oo(e,n){var s=e.alternate;return s===null?(s=xr(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 _u(e,n,s,c,x,_){var M=2;if(c=e,typeof e=="function")wf(e)&&(M=1);else if(typeof e=="string")M=5;else e:switch(e){case H:return Io(s.children,x,_,n);case j:M=8,x|=8;break;case ee:return e=xr(12,s,n,x|2),e.elementType=ee,e.lanes=_,e;case J:return e=xr(13,s,n,x),e.elementType=J,e.lanes=_,e;case ie:return e=xr(19,s,n,x),e.elementType=ie,e.lanes=_,e;case pe:return wu(s,x,_,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 he:M=14;break e;case ae:M=16,c=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return n=xr(M,s,n,x),n.elementType=e,n.type=c,n.lanes=_,n}function Io(e,n,s,c){return e=xr(7,e,c,n),e.lanes=s,e}function wu(e,n,s,c){return e=xr(22,e,c,n),e.elementType=pe,e.lanes=s,e.stateNode={isHidden:!1},e}function bf(e,n,s){return e=xr(6,e,null,n),e.lanes=s,e}function Cf(e,n,s){return n=xr(4,e.children!==null?e.children:[],e.key,n),n.lanes=s,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Cv(e,n,s,c,x){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=Di(0),this.expirationTimes=Di(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Di(0),this.identifierPrefix=c,this.onRecoverableError=x,this.mutableSourceEagerHydrationData=null}function Ef(e,n,s,c,x,_,M,W,X){return e=new Cv(e,n,s,W,X),n===1?(n=1,_===!0&&(n|=8)):n=0,_=xr(3,null,null,n),e.current=_,_.stateNode=e,_.memoizedState={element:c,isDehydrated:s,cache:null,transitions:null,pendingSuspenseBoundaries:null},Id(_),e}function Ev(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(),Rf.exports=jv(),Rf.exports}var Np;function zv(){if(Np)return Pu;Np=1;var r=Ig();return Pu.createRoot=r.createRoot,Pu.hydrateRoot=r.hydrateRoot,Pu}var Hv=zv();const Vv="/api",A0=100;async function xt(r,a){const o=await fetch(`${Vv}${r}`,{...a,headers:{"Content-Type":"application/json",...a==null?void 0:a.headers}});if(!o.ok){const l=await o.text();let d=l||o.statusText;try{const f=JSON.parse(l);f.detail&&(d=f.detail)}catch{}throw new Error(d)}return o.json()}const rt={getHealth:()=>xt("/health"),getRadioConfig:()=>xt("/radio/config"),updateRadioConfig:r=>xt("/radio/config",{method:"PATCH",body:JSON.stringify(r)}),setPrivateKey:r=>xt("/radio/private-key",{method:"PUT",body:JSON.stringify({private_key:r})}),sendAdvertisement:(r=!0)=>xt(`/radio/advertise?flood=${r}`,{method:"POST"}),rebootRadio:()=>xt("/radio/reboot",{method:"POST"}),reconnectRadio:()=>xt("/radio/reconnect",{method:"POST"}),getContacts:(r=100,a=0)=>xt(`/contacts?limit=${r}&offset=${a}`),getContact:r=>xt(`/contacts/${r}`),syncContacts:()=>xt("/contacts/sync",{method:"POST"}),addContactToRadio:r=>xt(`/contacts/${r}/add-to-radio`,{method:"POST"}),removeContactFromRadio:r=>xt(`/contacts/${r}/remove-from-radio`,{method:"POST"}),deleteContact:r=>xt(`/contacts/${r}`,{method:"DELETE"}),createContact:(r,a,o)=>xt("/contacts",{method:"POST",body:JSON.stringify({public_key:r,name:a,try_historical:o})}),markContactRead:r=>xt(`/contacts/${r}/mark-read`,{method:"POST"}),requestTelemetry:(r,a)=>xt(`/contacts/${r}/telemetry`,{method:"POST",body:JSON.stringify({password:a})}),sendRepeaterCommand:(r,a)=>xt(`/contacts/${r}/command`,{method:"POST",body:JSON.stringify({command:a})}),getChannels:()=>xt("/channels"),getChannel:r=>xt(`/channels/${r}`),createChannel:(r,a)=>xt("/channels",{method:"POST",body:JSON.stringify({name:r,key:a})}),syncChannels:()=>xt("/channels/sync",{method:"POST"}),deleteChannel:r=>xt(`/channels/${r}`,{method:"DELETE"}),markChannelRead:r=>xt(`/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 xt(`/messages${o?`?${o}`:""}`)},getMessagesBulk:(r,a=A0)=>xt(`/messages/bulk?limit_per_conversation=${a}`,{method:"POST",body:JSON.stringify(r)}),sendDirectMessage:(r,a)=>xt("/messages/direct",{method:"POST",body:JSON.stringify({destination:r,text:a})}),sendChannelMessage:(r,a)=>xt("/messages/channel",{method:"POST",body:JSON.stringify({channel_key:r,text:a})}),getUndecryptedPacketCount:()=>xt("/packets/undecrypted/count"),decryptHistoricalPackets:r=>xt("/packets/decrypt/historical",{method:"POST",body:JSON.stringify(r)}),runMaintenance:r=>xt("/packets/maintenance",{method:"POST",body:JSON.stringify({prune_undecrypted_days:r})}),markAllRead:()=>xt("/read-state/mark-all-read",{method:"POST"}),getSettings:()=>xt("/settings"),updateSettings:r=>xt("/settings",{method:"PATCH",body:JSON.stringify(r)})};function Uv(r){const a=F.useRef(null),o=F.useRef(null),[l,d]=F.useState(!1),f=F.useCallback(()=>{const p=window.location.protocol==="https:"?"wss:":"ws:",g=window.location.port==="5173"?"ws://localhost:8000/api/ws":`${p}//${window.location.host}/api/ws`,m=new WebSocket(g);m.onopen=()=>{console.log("WebSocket connected"),d(!0)},m.onclose=()=>{console.log("WebSocket disconnected"),d(!1),a.current=null,o.current=window.setTimeout(()=>{console.log("Attempting WebSocket reconnect..."),f()},3e3)},m.onerror=v=>{console.error("WebSocket error:",v)},m.onmessage=v=>{var y,w,B,T,C,k,D,P;try{const S=JSON.parse(v.data);switch(S.type){case"health":(y=r.onHealth)==null||y.call(r,S.data);break;case"contacts":(w=r.onContacts)==null||w.call(r,S.data);break;case"channels":(B=r.onChannels)==null||B.call(r,S.data);break;case"message":(T=r.onMessage)==null||T.call(r,S.data);break;case"contact":(C=r.onContact)==null||C.call(r,S.data);break;case"raw_packet":(k=r.onRawPacket)==null||k.call(r,S.data);break;case"message_acked":{const N=S.data;(D=r.onMessageAcked)==null||D.call(r,N.message_id,N.ack_count,N.paths);break}case"error":(P=r.onError)==null||P.call(r,S.data);break;case"pong":break;default:console.log("Unknown WebSocket message type:",S.type)}}catch(S){console.error("Failed to parse WebSocket message:",S)}},a.current=m},[r]);return F.useEffect(()=>{f();const p=setInterval(()=>{var h;((h=a.current)==null?void 0:h.readyState)===WebSocket.OPEN&&a.current.send("ping")},3e4);return()=>{clearInterval(p),o.current&&clearTimeout(o.current),a.current&&a.current.close()}},[f]),{connected:l}}const Oc=2,Zv=300*1e3;function Lp(r){const a=Math.floor(r/3600),o=Math.floor(r%3600/60),l=Math.floor(r%60);return`${a}h${o}m${l}s`}function Wv(r){return r<=5?"✅":r<=10?"🟢":r<=25?"🟡":r<=50?"🔴":"🚨"}function qv(r,a){const l=Math.floor(Date.now()/1e3)-r.startTime,d=a.uptime_seconds-r.uptime,f=a.airtime_seconds-r.txAirtime,p=a.rx_airtime_seconds-r.rxAirtime,h=a.sent_flood-r.sentFlood,g=a.sent_direct-r.sentDirect,m=a.recv_flood-r.recvFlood,v=a.recv_direct-r.recvDirect,y=d>0?f/d*100:0,w=d>0?p/d*100:0,B=h+g,T=m+v,C=B>0?y*(h/B):0,k=B>0?y*(g/B):0,D=T>0?w*(m/T):0,P=T>0?w*(v/T):0,S=Wv(y),N=Math.max(0,100-y-w);return["Airtime/Duty Cycle Statistics",`Duration: ${Lp(l)} (uptime delta: ${Lp(d)})`,"",`${S} TX Airtime: ${y.toFixed(3)}% (${B.toLocaleString()} pkts)`,` Flood: ${C.toFixed(3)}% (${h.toLocaleString()} pkts)`,` Direct: ${k.toFixed(3)}% (${g.toLocaleString()} pkts)`,"",`RX Airtime: ${w.toFixed(3)}% (${T.toLocaleString()} pkts)`,` Flood: ${D.toFixed(3)}% (${m.toLocaleString()} pkts)`,` Direct: ${P.toFixed(3)}% (${v.toLocaleString()} pkts)`,"",`Idle: ${N.toFixed(3)}%`].join(` `)}function Os(r,a,o){const l=Math.floor(Date.now()/1e3);return{id:-Date.now(),type:"PRIV",conversation_key:r,text:a,sender_timestamp:l,received_at:l,paths:null,txt_type:0,signature:null,outgoing:o,acked:1}}function Gv(r){const a=F.useRef(null),o=F.useRef(null),l=F.useCallback(()=>{o.current!==null&&(clearInterval(o.current),o.current=null),a.current=null},[]),d=F.useCallback(async()=>{const p=a.current;if(!p)return;let h=null,g=null;for(let m=0;m<2;m++)try{h=await rt.requestTelemetry(p.conversationId,"");break}catch(v){g=v instanceof Error?v:new Error("Unknown error"),m===0&&await new Promise(y=>setTimeout(y,2e3))}if(h){const m=Os(p.conversationId,qv(p,h),!1);r(v=>[...v,m])}else{const m=Os(p.conversationId,`Duty cycle poll failed after retry: ${(g==null?void 0:g.message)??"Unknown error"}`,!1);r(v=>[...v,m])}},[r]),f=F.useCallback(async(p,h)=>{const g=p.trim().toLowerCase();if(g==="dutycycle_start"){l();let m=null,v=null;for(let B=0;B<2;B++)try{m=await rt.requestTelemetry(h,"");break}catch(T){v=T instanceof Error?T:new Error("Unknown error"),B===0&&await new Promise(C=>setTimeout(C,2e3))}if(!m){const B=Os(h,`Failed to start duty cycle tracking after retry: ${(v==null?void 0:v.message)??"Unknown error"}`,!1);return r(T=>[...T,B]),!0}const y=Math.floor(Date.now()/1e3);a.current={startTime:y,uptime:m.uptime_seconds,txAirtime:m.airtime_seconds,rxAirtime:m.rx_airtime_seconds,sentFlood:m.sent_flood,sentDirect:m.sent_direct,recvFlood:m.recv_flood,recvDirect:m.recv_direct,conversationId:h};const w=Os(h,`Airtime/duty cycle statistics gathering begins at ${y}. Logs will follow every 5 minutes. To stop, run dutycycle_stop or navigate away from this conversation.`,!1);return r(B=>[...B,w]),o.current=window.setInterval(d,Zv),!0}if(g==="dutycycle_stop"){if(a.current&&a.current.conversationId===h){await d(),l();const m=Os(h,"Airtime/duty cycle statistics gathering stopped.",!1);r(v=>[...v,m])}else{const m=Os(h,"Duty cycle tracking is not active.",!1);r(v=>[...v,m])}return!0}return!1},[r,l,d]);return F.useEffect(()=>()=>{o.current!==null&&clearInterval(o.current)},[]),{handleAirtimeCommand:f,stopTracking:l}}function Hu(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 Kv(r){return["Telemetry",`Battery Voltage: ${r.battery_volts.toFixed(3)}V`,`Uptime: ${Hu(r.uptime_seconds)}`,`TX Airtime: ${Hu(r.airtime_seconds)}`,`RX Airtime: ${Hu(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 Qv(r){if(r.length===0)return`Neighbors No neighbors reported`;const a=[...r].sort((l,d)=>d.snr-l.snr),o=[`Neighbors (${a.length})`];for(const l of a){const d=l.name||l.pubkey_prefix,f=l.snr>=0?`+${l.snr.toFixed(1)}`:l.snr.toFixed(1);o.push(`${d}, ${f} dB [${Hu(l.last_heard_seconds)} ago]`)}return o.join(` `)}function $v(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 jo(r,a,o,l=0){const d=Math.floor(Date.now()/1e3);return{id:-Date.now()-l,type:"PRIV",conversation_key:r,text:a,sender_timestamp:d,received_at:d,paths:null,txt_type:0,signature:null,outgoing:o,acked:1}}function Yv(r,a,o){const[l,d]=F.useState(!1),{handleAirtimeCommand:f,stopTracking:p}=Gv(o);F.useEffect(()=>{d(!1),p()},[r==null?void 0:r.id,p]);const h=F.useMemo(()=>{if(!r||r.type!=="contact")return!1;const v=a.find(y=>y.public_key===r.id);return(v==null?void 0:v.type)===Oc},[r,a]),g=F.useCallback(async v=>{if(!(!r||r.type!=="contact")&&h)try{const y=await rt.requestTelemetry(r.id,v),w=jo(r.id,Kv(y),!1,0),B=jo(r.id,Qv(y.neighbors),!1,1),T=jo(r.id,$v(y.acl),!1,2);o(C=>[...C,w,B,T]),d(!0)}catch(y){const w=jo(r.id,`Telemetry request failed: ${y instanceof Error?y.message:"Unknown error"}`,!1,0);o(B=>[...B,w])}},[r,h,o]),m=F.useCallback(async v=>{if(!r||r.type!=="contact"||!h||!l||await f(v,r.id))return;const w=jo(r.id,`> ${v}`,!0,0);o(B=>[...B,w]);try{const B=await rt.sendRepeaterCommand(r.id,v),T=jo(r.id,B.response,!1,1);B.sender_timestamp&&(T.sender_timestamp=B.sender_timestamp),o(C=>[...C,T])}catch(B){const T=jo(r.id,`Command failed: ${B instanceof Error?B.message:"Unknown error"}`,!1,1);o(C=>[...C,T])}},[r,h,l,o,f]);return{repeaterLoggedIn:l,activeContactIsRepeater:h,handleTelemetryRequest:g,handleRepeaterCommand:m}}const Xv=12;function Ks(r){return r.slice(0,Xv)}function x0(r,a){return!r||!a?!1:Ks(r)===Ks(a)}function Ei(r,a){return r||Ks(a)}const Xf="remoteterm-lastMessageTime";function Og(r){try{const a=localStorage.getItem(r);return a?JSON.parse(a):{}}catch{return{}}}function Jv(r,a){try{localStorage.setItem(r,JSON.stringify(a))}catch{}}function Mp(){return Og(Xf)}function Lf(r,a){const o=Og(Xf);return(!o[r]||a>o[r])&&(o[r]=a,Jv(Xf,o)),o}function Rr(r,a){return r==="channel"?`channel-${a}`:`contact-${Ks(a)}`}function Ip(r,a){if(!a)return!1;const o=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`@\\[${o}\\]`,"i").test(r)}function ey(r,a,o,l=null){const[d,f]=F.useState({}),[p,h]=F.useState({}),[g,m]=F.useState(Mp),v=F.useRef(l);F.useEffect(()=>{v.current=l},[l]);const y=F.useRef(new Set),w=F.useRef(new Set);F.useEffect(()=>{const D=r.filter(N=>!y.current.has(N.key)),P=a.filter(N=>N.public_key&&!w.current.has(N.public_key));if(D.length===0&&P.length===0)return;D.forEach(N=>y.current.add(N.key)),P.forEach(N=>w.current.add(N.public_key)),(async()=>{const N=[...D.map(I=>({type:"CHAN",conversation_key:I.key})),...P.map(I=>({type:"PRIV",conversation_key:I.public_key}))];if(N.length!==0)try{const I=await rt.getMessagesBulk(N,A0),z={},H={},j={};for(const ee of D){const Z=I[`CHAN:${ee.key}`]||[];if(Z.length>0){const V=Rr("channel",ee.key),ne=ee.last_read_at||0,J=Z.filter(he=>!he.outgoing&&he.received_at>ne);J.length>0&&(z[V]=J.length,J.some(he=>Ip(he.text,v.current))&&(H[V]=!0));const ie=Math.max(...Z.map(he=>he.received_at));j[V]=ie,Lf(V,ie)}}for(const ee of P){const Z=I[`PRIV:${ee.public_key}`]||[];if(Z.length>0){const V=Rr("contact",ee.public_key),ne=ee.last_read_at||0,J=Z.filter(he=>!he.outgoing&&he.received_at>ne);J.length>0&&(z[V]=J.length,J.some(he=>Ip(he.text,v.current))&&(H[V]=!0));const ie=Math.max(...Z.map(he=>he.received_at));j[V]=ie,Lf(V,ie)}}Object.keys(z).length>0&&f(ee=>({...ee,...z})),Object.keys(H).length>0&&h(ee=>({...ee,...H})),m(Mp())}catch(I){console.error("Failed to fetch messages bulk:",I)}})()},[r,a]),F.useEffect(()=>{if(o&&o.type!=="raw"&&o.type!=="map"){const D=Rr(o.type,o.id);f(P=>{if(P[D]){const S={...P};return delete S[D],S}return P}),h(P=>{if(P[D]){const S={...P};return delete S[D],S}return P}),o.type==="channel"?rt.markChannelRead(o.id).catch(P=>{console.error("Failed to mark channel as read on server:",P)}):o.type==="contact"&&rt.markContactRead(o.id).catch(P=>{console.error("Failed to mark contact as read on server:",P)})}},[o]);const B=F.useCallback((D,P)=>{f(S=>({...S,[D]:(S[D]||0)+1})),P&&h(S=>({...S,[D]:!0}))},[]),T=F.useCallback(()=>{f({}),h({}),rt.markAllRead().catch(D=>{console.error("Failed to mark all as read on server:",D)})},[]),C=F.useCallback(D=>{if(D.type==="raw"||D.type==="map")return;const P=Rr(D.type,D.id);f(S=>{if(S[P]){const N={...S};return delete N[P],N}return S}),h(S=>{if(S[P]){const N={...S};return delete N[P],N}return S}),D.type==="channel"?rt.markChannelRead(D.id).catch(S=>{console.error("Failed to mark channel as read on server:",S)}):D.type==="contact"&&rt.markContactRead(D.id).catch(S=>{console.error("Failed to mark contact as read on server:",S)})},[]),k=F.useCallback(D=>{let P=null;if(D.type==="CHAN"&&D.conversation_key?P=Rr("channel",D.conversation_key):D.type==="PRIV"&&D.conversation_key&&(P=Rr("contact",D.conversation_key)),P){const S=D.received_at||Math.floor(Date.now()/1e3),N=Lf(P,S);m(N)}},[]);return{unreadCounts:d,mentions:p,lastMessageTimes:g,incrementUnread:B,markAllRead:T,markConversationRead:C,trackNewMessage:k}}var v0=Ig();const jg=Xs(v0);function ty(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 ny=r=>{switch(r){case"success":return oy;case"info":return ay;case"warning":return sy;case"error":return ly;default:return null}},ry=Array(12).fill(0),iy=({visible:r,className:a})=>Ce.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":r},Ce.createElement("div",{className:"sonner-spinner"},ry.map((o,l)=>Ce.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${l}`})))),oy=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"})),sy=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"})),ay=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"})),ly=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"})),uy=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"})),cy=()=>{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 Jf=1;class dy{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,...d}=a,f=typeof(a==null?void 0:a.id)=="number"||((o=a.id)==null?void 0:o.length)>0?a.id:Jf++,p=this.toasts.find(g=>g.id===f),h=a.dismissible===void 0?!0:a.dismissible;return this.dismissedToasts.has(f)&&this.dismissedToasts.delete(f),p?this.toasts=this.toasts.map(g=>g.id===f?(this.publish({...g,...a,id:f,title:l}),{...g,...a,id:f,dismissible:h,title:l}):g):this.addToast({title:l,...d,dismissible:h,id:f}),f},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 d=Promise.resolve(a instanceof Function?a():a);let f=l!==void 0,p;const h=d.then(async m=>{if(p=["resolve",m],Ce.isValidElement(m))f=!1,this.create({id:l,type:"default",message:m});else if(hy(m)&&!m.ok){f=!1;const y=typeof o.error=="function"?await o.error(`HTTP error! status: ${m.status}`):o.error,w=typeof o.description=="function"?await o.description(`HTTP error! status: ${m.status}`):o.description,T=typeof y=="object"&&!Ce.isValidElement(y)?y:{message:y};this.create({id:l,type:"error",description:w,...T})}else if(m instanceof Error){f=!1;const y=typeof o.error=="function"?await o.error(m):o.error,w=typeof o.description=="function"?await o.description(m):o.description,T=typeof y=="object"&&!Ce.isValidElement(y)?y:{message:y};this.create({id:l,type:"error",description:w,...T})}else if(o.success!==void 0){f=!1;const y=typeof o.success=="function"?await o.success(m):o.success,w=typeof o.description=="function"?await o.description(m):o.description,T=typeof y=="object"&&!Ce.isValidElement(y)?y:{message:y};this.create({id:l,type:"success",description:w,...T})}}).catch(async m=>{if(p=["reject",m],o.error!==void 0){f=!1;const v=typeof o.error=="function"?await o.error(m):o.error,y=typeof o.description=="function"?await o.description(m):o.description,B=typeof v=="object"&&!Ce.isValidElement(v)?v:{message:v};this.create({id:l,type:"error",description:y,...B})}}).finally(()=>{f&&(this.dismiss(l),l=void 0),o.finally==null||o.finally.call(o)}),g=()=>new Promise((m,v)=>h.then(()=>p[0]==="reject"?v(p[1]):m(p[1])).catch(v));return typeof l!="string"&&typeof l!="number"?{unwrap:g}:Object.assign(l,{unwrap:g})},this.custom=(a,o)=>{const l=(o==null?void 0:o.id)||Jf++;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 Wn=new dy,fy=(r,a)=>{const o=(a==null?void 0:a.id)||Jf++;return Wn.addToast({title:r,...a,id:o}),o},hy=r=>r&&typeof r=="object"&&"ok"in r&&typeof r.ok=="boolean"&&"status"in r&&typeof r.status=="number",py=fy,my=()=>Wn.toasts,gy=()=>Wn.getActiveToasts(),bt=Object.assign(py,{success:Wn.success,info:Wn.info,warning:Wn.warning,error:Wn.error,custom:Wn.custom,message:Wn.message,promise:Wn.promise,dismiss:Wn.dismiss,loading:Wn.loading},{getHistory:my,getToasts:gy});ty("[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 Tu(r){return r.label!==void 0}const Ay=3,xy="24px",vy="16px",Op=4e3,yy=356,_y=14,wy=45,by=200;function Kr(...r){return r.filter(Boolean).join(" ")}function Cy(r){const[a,o]=r.split("-"),l=[];return a&&l.push(a),o&&l.push(o),l}const Ey=r=>{var a,o,l,d,f,p,h,g,m;const{invert:v,toast:y,unstyled:w,interacting:B,setHeights:T,visibleToasts:C,heights:k,index:D,toasts:P,expanded:S,removeToast:N,defaultRichColors:I,closeButton:z,style:H,cancelButtonStyle:j,actionButtonStyle:ee,className:Z="",descriptionClassName:V="",duration:ne,position:J,gap:ie,expandByDefault:he,classNames:ae,icons:pe,closeButtonAriaLabel:G="Close toast"}=r,[Y,q]=Ce.useState(null),[R,U]=Ce.useState(null),[K,$]=Ce.useState(!1),[de,fe]=Ce.useState(!1),[ke,Ae]=Ce.useState(!1),[We,$e]=Ce.useState(!1),[wt,ft]=Ce.useState(!1),[Be,Ze]=Ce.useState(0),[lt,Rt]=Ce.useState(0),vt=Ce.useRef(y.duration||ne||Op),ot=Ce.useRef(null),Qe=Ce.useRef(null),Xe=D===0,xe=D+1<=C,Te=y.type,pt=y.dismissible!==!1,Zt=y.className||"",tn=y.descriptionClassName||"",jt=Ce.useMemo(()=>k.findIndex(Ue=>Ue.toastId===y.id)||0,[k,y.id]),nn=Ce.useMemo(()=>{var Ue;return(Ue=y.closeButton)!=null?Ue:z},[y.closeButton,z]),mn=Ce.useMemo(()=>y.duration||ne||Op,[y.duration,ne]),Tn=Ce.useRef(0),Wt=Ce.useRef(0),Pt=Ce.useRef(0),qt=Ce.useRef(null),[qn,yn]=J.split("-"),ge=Ce.useMemo(()=>k.reduce((Ue,mt,Bt)=>Bt>=jt?Ue:Ue+mt.height,0),[k,jt]),be=cy(),De=y.invert||v,re=Te==="loading";Wt.current=Ce.useMemo(()=>jt*ie+ge,[jt,ge]),Ce.useEffect(()=>{vt.current=mn},[mn]),Ce.useEffect(()=>{$(!0)},[]),Ce.useEffect(()=>{const Ue=Qe.current;if(Ue){const mt=Ue.getBoundingClientRect().height;return Rt(mt),T(Bt=>[{toastId:y.id,height:mt,position:y.position},...Bt]),()=>T(Bt=>Bt.filter(Lt=>Lt.toastId!==y.id))}},[T,y.id]),Ce.useLayoutEffect(()=>{if(!K)return;const Ue=Qe.current,mt=Ue.style.height;Ue.style.height="auto";const Bt=Ue.getBoundingClientRect().height;Ue.style.height=mt,Rt(Bt),T(Lt=>Lt.find(it=>it.toastId===y.id)?Lt.map(it=>it.toastId===y.id?{...it,height:Bt}:it):[{toastId:y.id,height:Bt,position:y.position},...Lt])},[K,y.title,y.description,T,y.id,y.jsx,y.action,y.cancel]);const me=Ce.useCallback(()=>{fe(!0),Ze(Wt.current),T(Ue=>Ue.filter(mt=>mt.toastId!==y.id)),setTimeout(()=>{N(y)},by)},[y,N,T,Wt]);Ce.useEffect(()=>{if(y.promise&&Te==="loading"||y.duration===1/0||y.type==="loading")return;let Ue;return S||B||be?(()=>{if(Pt.current{vt.current!==1/0&&(Tn.current=new Date().getTime(),Ue=setTimeout(()=>{y.onAutoClose==null||y.onAutoClose.call(y,y),me()},vt.current))})(),()=>clearTimeout(Ue)},[S,B,y,Te,be,me]),Ce.useEffect(()=>{y.delete&&(me(),y.onDismiss==null||y.onDismiss.call(y,y))},[me,y.delete]);function Se(){var Ue;if(pe!=null&&pe.loading){var mt;return Ce.createElement("div",{className:Kr(ae==null?void 0:ae.loader,y==null||(mt=y.classNames)==null?void 0:mt.loader,"sonner-loader"),"data-visible":Te==="loading"},pe.loading)}return Ce.createElement(iy,{className:Kr(ae==null?void 0:ae.loader,y==null||(Ue=y.classNames)==null?void 0:Ue.loader),visible:Te==="loading"})}const Ne=y.icon||(pe==null?void 0:pe[Te])||ny(Te);var Ve,$t;return Ce.createElement("li",{tabIndex:0,ref:Qe,className:Kr(Z,Zt,ae==null?void 0:ae.toast,y==null||(a=y.classNames)==null?void 0:a.toast,ae==null?void 0:ae.default,ae==null?void 0:ae[Te],y==null||(o=y.classNames)==null?void 0:o[Te]),"data-sonner-toast":"","data-rich-colors":(Ve=y.richColors)!=null?Ve:I,"data-styled":!(y.jsx||y.unstyled||w),"data-mounted":K,"data-promise":!!y.promise,"data-swiped":wt,"data-removed":de,"data-visible":xe,"data-y-position":qn,"data-x-position":yn,"data-index":D,"data-front":Xe,"data-swiping":ke,"data-dismissible":pt,"data-type":Te,"data-invert":De,"data-swipe-out":We,"data-swipe-direction":R,"data-expanded":!!(S||he&&K),"data-testid":y.testId,style:{"--index":D,"--toasts-before":D,"--z-index":P.length-D,"--offset":`${de?Be:Wt.current}px`,"--initial-height":he?"auto":`${lt}px`,...H,...y.style},onDragEnd:()=>{Ae(!1),q(null),qt.current=null},onPointerDown:Ue=>{Ue.button!==2&&(re||!pt||(ot.current=new Date,Ze(Wt.current),Ue.target.setPointerCapture(Ue.pointerId),Ue.target.tagName!=="BUTTON"&&(Ae(!0),qt.current={x:Ue.clientX,y:Ue.clientY})))},onPointerUp:()=>{var Ue,mt,Bt;if(We||!pt)return;qt.current=null;const Lt=Number(((Ue=Qe.current)==null?void 0:Ue.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Mn=Number(((mt=Qe.current)==null?void 0:mt.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),it=new Date().getTime()-((Bt=ot.current)==null?void 0:Bt.getTime()),Et=Y==="x"?Lt:Mn,Gn=Math.abs(Et)/it;if(Math.abs(Et)>=wy||Gn>.11){Ze(Wt.current),y.onDismiss==null||y.onDismiss.call(y,y),U(Y==="x"?Lt>0?"right":"left":Mn>0?"down":"up"),me(),$e(!0);return}else{var gt,Mt;(gt=Qe.current)==null||gt.style.setProperty("--swipe-amount-x","0px"),(Mt=Qe.current)==null||Mt.style.setProperty("--swipe-amount-y","0px")}ft(!1),Ae(!1),q(null)},onPointerMove:Ue=>{var mt,Bt,Lt;if(!qt.current||!pt||((mt=window.getSelection())==null?void 0:mt.toString().length)>0)return;const it=Ue.clientY-qt.current.y,Et=Ue.clientX-qt.current.x;var Gn;const gt=(Gn=r.swipeDirections)!=null?Gn:Cy(J);!Y&&(Math.abs(Et)>1||Math.abs(it)>1)&&q(Math.abs(Et)>Math.abs(it)?"x":"y");let Mt={x:0,y:0};const Gt=Re=>1/(1.5+Math.abs(Re)/20);if(Y==="y"){if(gt.includes("top")||gt.includes("bottom"))if(gt.includes("top")&&it<0||gt.includes("bottom")&&it>0)Mt.y=it;else{const Re=it*Gt(it);Mt.y=Math.abs(Re)0)Mt.x=Et;else{const Re=Et*Gt(Et);Mt.x=Math.abs(Re)0||Math.abs(Mt.y)>0)&&ft(!0),(Bt=Qe.current)==null||Bt.style.setProperty("--swipe-amount-x",`${Mt.x}px`),(Lt=Qe.current)==null||Lt.style.setProperty("--swipe-amount-y",`${Mt.y}px`)}},nn&&!y.jsx&&Te!=="loading"?Ce.createElement("button",{"aria-label":G,"data-disabled":re,"data-close-button":!0,onClick:re||!pt?()=>{}:()=>{me(),y.onDismiss==null||y.onDismiss.call(y,y)},className:Kr(ae==null?void 0:ae.closeButton,y==null||(l=y.classNames)==null?void 0:l.closeButton)},($t=pe==null?void 0:pe.close)!=null?$t:uy):null,(Te||y.icon||y.promise)&&y.icon!==null&&((pe==null?void 0:pe[Te])!==null||y.icon)?Ce.createElement("div",{"data-icon":"",className:Kr(ae==null?void 0:ae.icon,y==null||(d=y.classNames)==null?void 0:d.icon)},y.promise||y.type==="loading"&&!y.icon?y.icon||Se():null,y.type!=="loading"?Ne:null):null,Ce.createElement("div",{"data-content":"",className:Kr(ae==null?void 0:ae.content,y==null||(f=y.classNames)==null?void 0:f.content)},Ce.createElement("div",{"data-title":"",className:Kr(ae==null?void 0:ae.title,y==null||(p=y.classNames)==null?void 0:p.title)},y.jsx?y.jsx:typeof y.title=="function"?y.title():y.title),y.description?Ce.createElement("div",{"data-description":"",className:Kr(V,tn,ae==null?void 0:ae.description,y==null||(h=y.classNames)==null?void 0:h.description)},typeof y.description=="function"?y.description():y.description):null),Ce.isValidElement(y.cancel)?y.cancel:y.cancel&&Tu(y.cancel)?Ce.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||j,onClick:Ue=>{Tu(y.cancel)&&pt&&(y.cancel.onClick==null||y.cancel.onClick.call(y.cancel,Ue),me())},className:Kr(ae==null?void 0:ae.cancelButton,y==null||(g=y.classNames)==null?void 0:g.cancelButton)},y.cancel.label):null,Ce.isValidElement(y.action)?y.action:y.action&&Tu(y.action)?Ce.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||ee,onClick:Ue=>{Tu(y.action)&&(y.action.onClick==null||y.action.onClick.call(y.action,Ue),!Ue.defaultPrevented&&me())},className:Kr(ae==null?void 0:ae.actionButton,y==null||(m=y.classNames)==null?void 0:m.actionButton)},y.action.label):null)};function jp(){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 ky(r,a){const o={};return[r,a].forEach((l,d)=>{const f=d===1,p=f?"--mobile-offset":"--offset",h=f?vy:xy;function g(m){["top","right","bottom","left"].forEach(v=>{o[`${p}-${v}`]=typeof m=="number"?`${m}px`:m})}typeof l=="number"||typeof l=="string"?g(l):typeof l=="object"?["top","right","bottom","left"].forEach(m=>{l[m]===void 0?o[`${p}-${m}`]=h:o[`${p}-${m}`]=typeof l[m]=="number"?`${l[m]}px`:l[m]}):g(h)}),o}const Sy=Ce.forwardRef(function(a,o){const{id:l,invert:d,position:f="bottom-right",hotkey:p=["altKey","KeyT"],expand:h,closeButton:g,className:m,offset:v,mobileOffset:y,theme:w="light",richColors:B,duration:T,style:C,visibleToasts:k=Ay,toastOptions:D,dir:P=jp(),gap:S=_y,icons:N,containerAriaLabel:I="Notifications"}=a,[z,H]=Ce.useState([]),j=Ce.useMemo(()=>l?z.filter(K=>K.toasterId===l):z.filter(K=>!K.toasterId),[z,l]),ee=Ce.useMemo(()=>Array.from(new Set([f].concat(j.filter(K=>K.position).map(K=>K.position)))),[j,f]),[Z,V]=Ce.useState([]),[ne,J]=Ce.useState(!1),[ie,he]=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),Y=p.join("+").replace(/Key/g,"").replace(/Digit/g,""),q=Ce.useRef(null),R=Ce.useRef(!1),U=Ce.useCallback(K=>{H($=>{var de;return(de=$.find(fe=>fe.id===K.id))!=null&&de.delete||Wn.dismiss(K.id),$.filter(({id:fe})=>fe!==K.id)})},[]);return Ce.useEffect(()=>Wn.subscribe(K=>{if(K.dismiss){requestAnimationFrame(()=>{H($=>$.map(de=>de.id===K.id?{...de,delete:!0}:de))});return}setTimeout(()=>{jg.flushSync(()=>{H($=>{const de=$.findIndex(fe=>fe.id===K.id);return de!==-1?[...$.slice(0,de),{...$[de],...K},...$.slice(de+1)]:[K,...$]})})})}),[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 K=window.matchMedia("(prefers-color-scheme: dark)");try{K.addEventListener("change",({matches:$})=>{pe($?"dark":"light")})}catch{K.addListener(({matches:de})=>{try{pe(de?"dark":"light")}catch(fe){console.error(fe)}})}},[w]),Ce.useEffect(()=>{z.length<=1&&J(!1)},[z]),Ce.useEffect(()=>{const K=$=>{var de;if(p.every(Ae=>$[Ae]||$.code===Ae)){var ke;J(!0),(ke=G.current)==null||ke.focus()}$.code==="Escape"&&(document.activeElement===G.current||(de=G.current)!=null&&de.contains(document.activeElement))&&J(!1)};return document.addEventListener("keydown",K),()=>document.removeEventListener("keydown",K)},[p]),Ce.useEffect(()=>{if(G.current)return()=>{q.current&&(q.current.focus({preventScroll:!0}),q.current=null,R.current=!1)}},[G.current]),Ce.createElement("section",{ref:o,"aria-label":`${I} ${Y}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},ee.map((K,$)=>{var de;const[fe,ke]=K.split("-");return j.length?Ce.createElement("ol",{key:K,dir:P==="auto"?jp():P,tabIndex:-1,ref:G,className:m,"data-sonner-toaster":!0,"data-sonner-theme":ae,"data-y-position":fe,"data-x-position":ke,style:{"--front-toast-height":`${((de=Z[0])==null?void 0:de.height)||0}px`,"--width":`${yy}px`,"--gap":`${S}px`,...C,...ky(v,y)},onBlur:Ae=>{R.current&&!Ae.currentTarget.contains(Ae.relatedTarget)&&(R.current=!1,q.current&&(q.current.focus({preventScroll:!0}),q.current=null))},onFocus:Ae=>{Ae.target instanceof HTMLElement&&Ae.target.dataset.dismissible==="false"||R.current||(R.current=!0,q.current=Ae.relatedTarget)},onMouseEnter:()=>J(!0),onMouseMove:()=>J(!0),onMouseLeave:()=>{ie||J(!1)},onDragEnd:()=>J(!1),onPointerDown:Ae=>{Ae.target instanceof HTMLElement&&Ae.target.dataset.dismissible==="false"||he(!0)},onPointerUp:()=>he(!1)},j.filter(Ae=>!Ae.position&&$===0||Ae.position===K).map((Ae,We)=>{var $e,wt;return Ce.createElement(Ey,{key:Ae.id,icons:N,index:We,toast:Ae,defaultRichColors:B,duration:($e=D==null?void 0:D.duration)!=null?$e:T,className:D==null?void 0:D.className,descriptionClassName:D==null?void 0:D.descriptionClassName,invert:d,visibleToasts:k,closeButton:(wt=D==null?void 0:D.closeButton)!=null?wt:g,interacting:ie,position:K,style:D==null?void 0:D.style,unstyled:D==null?void 0:D.unstyled,classNames:D==null?void 0:D.classNames,cancelButtonStyle:D==null?void 0:D.cancelButtonStyle,actionButtonStyle:D==null?void 0:D.actionButtonStyle,closeButtonAriaLabel:D==null?void 0:D.closeButtonAriaLabel,removeToast:U,toasts:j.filter(ft=>ft.position==Ae.position),heights:Z.filter(ft=>ft.position==Ae.position),setHeights:V,expandByDefault:h,gap:S,expanded:ne,swipeDirections:a.swipeDirections})})):null}))}),By=({...r})=>b.jsx(Sy,{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}),Du=200;function Vu(r){return`${r.type}-${r.conversation_key}-${r.text}-${r.sender_timestamp}`}function Py(r){const[a,o]=F.useState([]),[l,d]=F.useState(!1),[f,p]=F.useState(!1),[h,g]=F.useState(!1),m=F.useRef(new Set),v=F.useCallback(async(T=!1)=>{if(!r||r.type==="raw"){o([]),g(!1);return}T&&(d(!0),o([]));try{const C=await rt.getMessages({type:r.type==="channel"?"CHAN":"PRIV",conversation_key:r.id,limit:Du});o(C),m.current.clear();for(const k of C)m.current.add(Vu(k));g(C.length>=Du)}catch(C){console.error("Failed to fetch messages:",C),bt.error("Failed to load messages",{description:C instanceof Error?C.message:"Check your connection"})}finally{T&&d(!1)}},[r]),y=F.useCallback(async()=>{if(!(!r||r.type==="raw"||f||!h)){p(!0);try{const T=await rt.getMessages({type:r.type==="channel"?"CHAN":"PRIV",conversation_key:r.id,limit:Du,offset:a.length});if(T.length>0){o(C=>[...C,...T]);for(const C of T)m.current.add(Vu(C))}g(T.length>=Du)}catch(T){console.error("Failed to fetch older messages:",T),bt.error("Failed to load older messages",{description:T instanceof Error?T.message:"Check your connection"})}finally{p(!1)}}},[r,f,h,a.length]);F.useEffect(()=>{v(!0)},[v]);const w=F.useCallback(T=>{const C=Vu(T);if(m.current.has(C))return console.debug("Duplicate message content ignored:",C.slice(0,50)),!1;if(m.current.add(C),m.current.size>1e3){const k=Array.from(m.current);m.current=new Set(k.slice(-500))}return o(k=>k.some(D=>D.id===T.id)?k:[...k,T]),!0},[]),B=F.useCallback((T,C,k)=>{o(D=>{const P=D.findIndex(S=>S.id===T);if(P>=0){const S=[...D];return S[P]={...D[P],acked:C,...k!==void 0&&{paths:k}},S}return D})},[]);return{messages:a,messagesLoading:l,loadingOlder:f,hasOlderMessages:h,setMessages:o,fetchMessages:v,fetchOlderMessages:y,addMessageIfNew:w,updateMessageAck:B}}/** +`)}function jo(r,a,o,l=0){const d=Math.floor(Date.now()/1e3);return{id:-Date.now()-l,type:"PRIV",conversation_key:r,text:a,sender_timestamp:d,received_at:d,paths:null,txt_type:0,signature:null,outgoing:o,acked:1}}function Yv(r,a,o){const[l,d]=F.useState(!1),{handleAirtimeCommand:f,stopTracking:p}=Gv(o);F.useEffect(()=>{d(!1),p()},[r==null?void 0:r.id,p]);const h=F.useMemo(()=>{if(!r||r.type!=="contact")return!1;const v=a.find(y=>y.public_key===r.id);return(v==null?void 0:v.type)===Oc},[r,a]),g=F.useCallback(async v=>{if(!(!r||r.type!=="contact")&&h)try{const y=await rt.requestTelemetry(r.id,v),w=jo(r.id,Kv(y),!1,0),B=jo(r.id,Qv(y.neighbors),!1,1),T=jo(r.id,$v(y.acl),!1,2);o(C=>[...C,w,B,T]),d(!0)}catch(y){const w=jo(r.id,`Telemetry request failed: ${y instanceof Error?y.message:"Unknown error"}`,!1,0);o(B=>[...B,w])}},[r,h,o]),m=F.useCallback(async v=>{if(!r||r.type!=="contact"||!h||!l||await f(v,r.id))return;const w=jo(r.id,`> ${v}`,!0,0);o(B=>[...B,w]);try{const B=await rt.sendRepeaterCommand(r.id,v),T=jo(r.id,B.response,!1,1);B.sender_timestamp&&(T.sender_timestamp=B.sender_timestamp),o(C=>[...C,T])}catch(B){const T=jo(r.id,`Command failed: ${B instanceof Error?B.message:"Unknown error"}`,!1,1);o(C=>[...C,T])}},[r,h,l,o,f]);return{repeaterLoggedIn:l,activeContactIsRepeater:h,handleTelemetryRequest:g,handleRepeaterCommand:m}}const Xv=12;function Ks(r){return r.slice(0,Xv)}function x0(r,a){return!r||!a?!1:Ks(r)===Ks(a)}function Ei(r,a){return r||Ks(a)}const Xf="remoteterm-lastMessageTime";function Og(r){try{const a=localStorage.getItem(r);return a?JSON.parse(a):{}}catch{return{}}}function Jv(r,a){try{localStorage.setItem(r,JSON.stringify(a))}catch{}}function Mp(){return Og(Xf)}function Lf(r,a){const o=Og(Xf);return(!o[r]||a>o[r])&&(o[r]=a,Jv(Xf,o)),o}function Rr(r,a){return r==="channel"?`channel-${a}`:`contact-${Ks(a)}`}function Ip(r,a){if(!a)return!1;const o=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`@\\[${o}\\]`,"i").test(r)}function ey(r,a,o,l=null){const[d,f]=F.useState({}),[p,h]=F.useState({}),[g,m]=F.useState(Mp),v=F.useRef(l);F.useEffect(()=>{v.current=l},[l]);const y=F.useRef(new Set),w=F.useRef(new Set);F.useEffect(()=>{const D=r.filter(N=>!y.current.has(N.key)),P=a.filter(N=>N.public_key&&!w.current.has(N.public_key));if(D.length===0&&P.length===0)return;D.forEach(N=>y.current.add(N.key)),P.forEach(N=>w.current.add(N.public_key)),(async()=>{const N=[...D.map(I=>({type:"CHAN",conversation_key:I.key})),...P.map(I=>({type:"PRIV",conversation_key:I.public_key}))];if(N.length!==0)try{const I=await rt.getMessagesBulk(N,A0),z={},H={},j={};for(const ee of D){const Z=I[`CHAN:${ee.key}`]||[];if(Z.length>0){const V=Rr("channel",ee.key),ne=ee.last_read_at||0,J=Z.filter(he=>!he.outgoing&&he.received_at>ne);J.length>0&&(z[V]=J.length,J.some(he=>Ip(he.text,v.current))&&(H[V]=!0));const ie=Math.max(...Z.map(he=>he.received_at));j[V]=ie,Lf(V,ie)}}for(const ee of P){const Z=I[`PRIV:${ee.public_key}`]||[];if(Z.length>0){const V=Rr("contact",ee.public_key),ne=ee.last_read_at||0,J=Z.filter(he=>!he.outgoing&&he.received_at>ne);J.length>0&&(z[V]=J.length,J.some(he=>Ip(he.text,v.current))&&(H[V]=!0));const ie=Math.max(...Z.map(he=>he.received_at));j[V]=ie,Lf(V,ie)}}Object.keys(z).length>0&&f(ee=>({...ee,...z})),Object.keys(H).length>0&&h(ee=>({...ee,...H})),m(Mp())}catch(I){console.error("Failed to fetch messages bulk:",I)}})()},[r,a]),F.useEffect(()=>{if(o&&o.type!=="raw"&&o.type!=="map"){const D=Rr(o.type,o.id);f(P=>{if(P[D]){const S={...P};return delete S[D],S}return P}),h(P=>{if(P[D]){const S={...P};return delete S[D],S}return P}),o.type==="channel"?rt.markChannelRead(o.id).catch(P=>{console.error("Failed to mark channel as read on server:",P)}):o.type==="contact"&&rt.markContactRead(o.id).catch(P=>{console.error("Failed to mark contact as read on server:",P)})}},[o]);const B=F.useCallback((D,P)=>{f(S=>({...S,[D]:(S[D]||0)+1})),P&&h(S=>({...S,[D]:!0}))},[]),T=F.useCallback(()=>{f({}),h({}),rt.markAllRead().catch(D=>{console.error("Failed to mark all as read on server:",D)})},[]),C=F.useCallback(D=>{if(D.type==="raw"||D.type==="map")return;const P=Rr(D.type,D.id);f(S=>{if(S[P]){const N={...S};return delete N[P],N}return S}),h(S=>{if(S[P]){const N={...S};return delete N[P],N}return S}),D.type==="channel"?rt.markChannelRead(D.id).catch(S=>{console.error("Failed to mark channel as read on server:",S)}):D.type==="contact"&&rt.markContactRead(D.id).catch(S=>{console.error("Failed to mark contact as read on server:",S)})},[]),k=F.useCallback(D=>{let P=null;if(D.type==="CHAN"&&D.conversation_key?P=Rr("channel",D.conversation_key):D.type==="PRIV"&&D.conversation_key&&(P=Rr("contact",D.conversation_key)),P){const S=D.received_at||Math.floor(Date.now()/1e3),N=Lf(P,S);m(N)}},[]);return{unreadCounts:d,mentions:p,lastMessageTimes:g,incrementUnread:B,markAllRead:T,markConversationRead:C,trackNewMessage:k}}var v0=Ig();const jg=Xs(v0);function ty(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 ny=r=>{switch(r){case"success":return oy;case"info":return ay;case"warning":return sy;case"error":return ly;default:return null}},ry=Array(12).fill(0),iy=({visible:r,className:a})=>Ce.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":r},Ce.createElement("div",{className:"sonner-spinner"},ry.map((o,l)=>Ce.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${l}`})))),oy=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"})),sy=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"})),ay=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"})),ly=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"})),uy=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"})),cy=()=>{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 Jf=1;class dy{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,...d}=a,f=typeof(a==null?void 0:a.id)=="number"||((o=a.id)==null?void 0:o.length)>0?a.id:Jf++,p=this.toasts.find(g=>g.id===f),h=a.dismissible===void 0?!0:a.dismissible;return this.dismissedToasts.has(f)&&this.dismissedToasts.delete(f),p?this.toasts=this.toasts.map(g=>g.id===f?(this.publish({...g,...a,id:f,title:l}),{...g,...a,id:f,dismissible:h,title:l}):g):this.addToast({title:l,...d,dismissible:h,id:f}),f},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 d=Promise.resolve(a instanceof Function?a():a);let f=l!==void 0,p;const h=d.then(async m=>{if(p=["resolve",m],Ce.isValidElement(m))f=!1,this.create({id:l,type:"default",message:m});else if(hy(m)&&!m.ok){f=!1;const y=typeof o.error=="function"?await o.error(`HTTP error! status: ${m.status}`):o.error,w=typeof o.description=="function"?await o.description(`HTTP error! status: ${m.status}`):o.description,T=typeof y=="object"&&!Ce.isValidElement(y)?y:{message:y};this.create({id:l,type:"error",description:w,...T})}else if(m instanceof Error){f=!1;const y=typeof o.error=="function"?await o.error(m):o.error,w=typeof o.description=="function"?await o.description(m):o.description,T=typeof y=="object"&&!Ce.isValidElement(y)?y:{message:y};this.create({id:l,type:"error",description:w,...T})}else if(o.success!==void 0){f=!1;const y=typeof o.success=="function"?await o.success(m):o.success,w=typeof o.description=="function"?await o.description(m):o.description,T=typeof y=="object"&&!Ce.isValidElement(y)?y:{message:y};this.create({id:l,type:"success",description:w,...T})}}).catch(async m=>{if(p=["reject",m],o.error!==void 0){f=!1;const v=typeof o.error=="function"?await o.error(m):o.error,y=typeof o.description=="function"?await o.description(m):o.description,B=typeof v=="object"&&!Ce.isValidElement(v)?v:{message:v};this.create({id:l,type:"error",description:y,...B})}}).finally(()=>{f&&(this.dismiss(l),l=void 0),o.finally==null||o.finally.call(o)}),g=()=>new Promise((m,v)=>h.then(()=>p[0]==="reject"?v(p[1]):m(p[1])).catch(v));return typeof l!="string"&&typeof l!="number"?{unwrap:g}:Object.assign(l,{unwrap:g})},this.custom=(a,o)=>{const l=(o==null?void 0:o.id)||Jf++;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 Wn=new dy,fy=(r,a)=>{const o=(a==null?void 0:a.id)||Jf++;return Wn.addToast({title:r,...a,id:o}),o},hy=r=>r&&typeof r=="object"&&"ok"in r&&typeof r.ok=="boolean"&&"status"in r&&typeof r.status=="number",py=fy,my=()=>Wn.toasts,gy=()=>Wn.getActiveToasts(),wt=Object.assign(py,{success:Wn.success,info:Wn.info,warning:Wn.warning,error:Wn.error,custom:Wn.custom,message:Wn.message,promise:Wn.promise,dismiss:Wn.dismiss,loading:Wn.loading},{getHistory:my,getToasts:gy});ty("[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 Tu(r){return r.label!==void 0}const Ay=3,xy="24px",vy="16px",Op=4e3,yy=356,_y=14,wy=45,by=200;function Kr(...r){return r.filter(Boolean).join(" ")}function Cy(r){const[a,o]=r.split("-"),l=[];return a&&l.push(a),o&&l.push(o),l}const Ey=r=>{var a,o,l,d,f,p,h,g,m;const{invert:v,toast:y,unstyled:w,interacting:B,setHeights:T,visibleToasts:C,heights:k,index:D,toasts:P,expanded:S,removeToast:N,defaultRichColors:I,closeButton:z,style:H,cancelButtonStyle:j,actionButtonStyle:ee,className:Z="",descriptionClassName:V="",duration:ne,position:J,gap:ie,expandByDefault:he,classNames:ae,icons:pe,closeButtonAriaLabel:G="Close toast"}=r,[Y,q]=Ce.useState(null),[R,U]=Ce.useState(null),[K,$]=Ce.useState(!1),[de,fe]=Ce.useState(!1),[ke,Ae]=Ce.useState(!1),[We,$e]=Ce.useState(!1),[bt,ft]=Ce.useState(!1),[Be,Ze]=Ce.useState(0),[lt,Rt]=Ce.useState(0),vt=Ce.useRef(y.duration||ne||Op),ot=Ce.useRef(null),Qe=Ce.useRef(null),Xe=D===0,xe=D+1<=C,Te=y.type,pt=y.dismissible!==!1,Zt=y.className||"",tn=y.descriptionClassName||"",jt=Ce.useMemo(()=>k.findIndex(Ue=>Ue.toastId===y.id)||0,[k,y.id]),nn=Ce.useMemo(()=>{var Ue;return(Ue=y.closeButton)!=null?Ue:z},[y.closeButton,z]),mn=Ce.useMemo(()=>y.duration||ne||Op,[y.duration,ne]),Tn=Ce.useRef(0),Wt=Ce.useRef(0),Pt=Ce.useRef(0),qt=Ce.useRef(null),[qn,yn]=J.split("-"),ge=Ce.useMemo(()=>k.reduce((Ue,mt,Bt)=>Bt>=jt?Ue:Ue+mt.height,0),[k,jt]),be=cy(),De=y.invert||v,re=Te==="loading";Wt.current=Ce.useMemo(()=>jt*ie+ge,[jt,ge]),Ce.useEffect(()=>{vt.current=mn},[mn]),Ce.useEffect(()=>{$(!0)},[]),Ce.useEffect(()=>{const Ue=Qe.current;if(Ue){const mt=Ue.getBoundingClientRect().height;return Rt(mt),T(Bt=>[{toastId:y.id,height:mt,position:y.position},...Bt]),()=>T(Bt=>Bt.filter(Lt=>Lt.toastId!==y.id))}},[T,y.id]),Ce.useLayoutEffect(()=>{if(!K)return;const Ue=Qe.current,mt=Ue.style.height;Ue.style.height="auto";const Bt=Ue.getBoundingClientRect().height;Ue.style.height=mt,Rt(Bt),T(Lt=>Lt.find(it=>it.toastId===y.id)?Lt.map(it=>it.toastId===y.id?{...it,height:Bt}:it):[{toastId:y.id,height:Bt,position:y.position},...Lt])},[K,y.title,y.description,T,y.id,y.jsx,y.action,y.cancel]);const me=Ce.useCallback(()=>{fe(!0),Ze(Wt.current),T(Ue=>Ue.filter(mt=>mt.toastId!==y.id)),setTimeout(()=>{N(y)},by)},[y,N,T,Wt]);Ce.useEffect(()=>{if(y.promise&&Te==="loading"||y.duration===1/0||y.type==="loading")return;let Ue;return S||B||be?(()=>{if(Pt.current{vt.current!==1/0&&(Tn.current=new Date().getTime(),Ue=setTimeout(()=>{y.onAutoClose==null||y.onAutoClose.call(y,y),me()},vt.current))})(),()=>clearTimeout(Ue)},[S,B,y,Te,be,me]),Ce.useEffect(()=>{y.delete&&(me(),y.onDismiss==null||y.onDismiss.call(y,y))},[me,y.delete]);function Se(){var Ue;if(pe!=null&&pe.loading){var mt;return Ce.createElement("div",{className:Kr(ae==null?void 0:ae.loader,y==null||(mt=y.classNames)==null?void 0:mt.loader,"sonner-loader"),"data-visible":Te==="loading"},pe.loading)}return Ce.createElement(iy,{className:Kr(ae==null?void 0:ae.loader,y==null||(Ue=y.classNames)==null?void 0:Ue.loader),visible:Te==="loading"})}const Ne=y.icon||(pe==null?void 0:pe[Te])||ny(Te);var Ve,$t;return Ce.createElement("li",{tabIndex:0,ref:Qe,className:Kr(Z,Zt,ae==null?void 0:ae.toast,y==null||(a=y.classNames)==null?void 0:a.toast,ae==null?void 0:ae.default,ae==null?void 0:ae[Te],y==null||(o=y.classNames)==null?void 0:o[Te]),"data-sonner-toast":"","data-rich-colors":(Ve=y.richColors)!=null?Ve:I,"data-styled":!(y.jsx||y.unstyled||w),"data-mounted":K,"data-promise":!!y.promise,"data-swiped":bt,"data-removed":de,"data-visible":xe,"data-y-position":qn,"data-x-position":yn,"data-index":D,"data-front":Xe,"data-swiping":ke,"data-dismissible":pt,"data-type":Te,"data-invert":De,"data-swipe-out":We,"data-swipe-direction":R,"data-expanded":!!(S||he&&K),"data-testid":y.testId,style:{"--index":D,"--toasts-before":D,"--z-index":P.length-D,"--offset":`${de?Be:Wt.current}px`,"--initial-height":he?"auto":`${lt}px`,...H,...y.style},onDragEnd:()=>{Ae(!1),q(null),qt.current=null},onPointerDown:Ue=>{Ue.button!==2&&(re||!pt||(ot.current=new Date,Ze(Wt.current),Ue.target.setPointerCapture(Ue.pointerId),Ue.target.tagName!=="BUTTON"&&(Ae(!0),qt.current={x:Ue.clientX,y:Ue.clientY})))},onPointerUp:()=>{var Ue,mt,Bt;if(We||!pt)return;qt.current=null;const Lt=Number(((Ue=Qe.current)==null?void 0:Ue.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Mn=Number(((mt=Qe.current)==null?void 0:mt.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),it=new Date().getTime()-((Bt=ot.current)==null?void 0:Bt.getTime()),Et=Y==="x"?Lt:Mn,Gn=Math.abs(Et)/it;if(Math.abs(Et)>=wy||Gn>.11){Ze(Wt.current),y.onDismiss==null||y.onDismiss.call(y,y),U(Y==="x"?Lt>0?"right":"left":Mn>0?"down":"up"),me(),$e(!0);return}else{var gt,Mt;(gt=Qe.current)==null||gt.style.setProperty("--swipe-amount-x","0px"),(Mt=Qe.current)==null||Mt.style.setProperty("--swipe-amount-y","0px")}ft(!1),Ae(!1),q(null)},onPointerMove:Ue=>{var mt,Bt,Lt;if(!qt.current||!pt||((mt=window.getSelection())==null?void 0:mt.toString().length)>0)return;const it=Ue.clientY-qt.current.y,Et=Ue.clientX-qt.current.x;var Gn;const gt=(Gn=r.swipeDirections)!=null?Gn:Cy(J);!Y&&(Math.abs(Et)>1||Math.abs(it)>1)&&q(Math.abs(Et)>Math.abs(it)?"x":"y");let Mt={x:0,y:0};const Gt=Re=>1/(1.5+Math.abs(Re)/20);if(Y==="y"){if(gt.includes("top")||gt.includes("bottom"))if(gt.includes("top")&&it<0||gt.includes("bottom")&&it>0)Mt.y=it;else{const Re=it*Gt(it);Mt.y=Math.abs(Re)0)Mt.x=Et;else{const Re=Et*Gt(Et);Mt.x=Math.abs(Re)0||Math.abs(Mt.y)>0)&&ft(!0),(Bt=Qe.current)==null||Bt.style.setProperty("--swipe-amount-x",`${Mt.x}px`),(Lt=Qe.current)==null||Lt.style.setProperty("--swipe-amount-y",`${Mt.y}px`)}},nn&&!y.jsx&&Te!=="loading"?Ce.createElement("button",{"aria-label":G,"data-disabled":re,"data-close-button":!0,onClick:re||!pt?()=>{}:()=>{me(),y.onDismiss==null||y.onDismiss.call(y,y)},className:Kr(ae==null?void 0:ae.closeButton,y==null||(l=y.classNames)==null?void 0:l.closeButton)},($t=pe==null?void 0:pe.close)!=null?$t:uy):null,(Te||y.icon||y.promise)&&y.icon!==null&&((pe==null?void 0:pe[Te])!==null||y.icon)?Ce.createElement("div",{"data-icon":"",className:Kr(ae==null?void 0:ae.icon,y==null||(d=y.classNames)==null?void 0:d.icon)},y.promise||y.type==="loading"&&!y.icon?y.icon||Se():null,y.type!=="loading"?Ne:null):null,Ce.createElement("div",{"data-content":"",className:Kr(ae==null?void 0:ae.content,y==null||(f=y.classNames)==null?void 0:f.content)},Ce.createElement("div",{"data-title":"",className:Kr(ae==null?void 0:ae.title,y==null||(p=y.classNames)==null?void 0:p.title)},y.jsx?y.jsx:typeof y.title=="function"?y.title():y.title),y.description?Ce.createElement("div",{"data-description":"",className:Kr(V,tn,ae==null?void 0:ae.description,y==null||(h=y.classNames)==null?void 0:h.description)},typeof y.description=="function"?y.description():y.description):null),Ce.isValidElement(y.cancel)?y.cancel:y.cancel&&Tu(y.cancel)?Ce.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||j,onClick:Ue=>{Tu(y.cancel)&&pt&&(y.cancel.onClick==null||y.cancel.onClick.call(y.cancel,Ue),me())},className:Kr(ae==null?void 0:ae.cancelButton,y==null||(g=y.classNames)==null?void 0:g.cancelButton)},y.cancel.label):null,Ce.isValidElement(y.action)?y.action:y.action&&Tu(y.action)?Ce.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||ee,onClick:Ue=>{Tu(y.action)&&(y.action.onClick==null||y.action.onClick.call(y.action,Ue),!Ue.defaultPrevented&&me())},className:Kr(ae==null?void 0:ae.actionButton,y==null||(m=y.classNames)==null?void 0:m.actionButton)},y.action.label):null)};function jp(){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 ky(r,a){const o={};return[r,a].forEach((l,d)=>{const f=d===1,p=f?"--mobile-offset":"--offset",h=f?vy:xy;function g(m){["top","right","bottom","left"].forEach(v=>{o[`${p}-${v}`]=typeof m=="number"?`${m}px`:m})}typeof l=="number"||typeof l=="string"?g(l):typeof l=="object"?["top","right","bottom","left"].forEach(m=>{l[m]===void 0?o[`${p}-${m}`]=h:o[`${p}-${m}`]=typeof l[m]=="number"?`${l[m]}px`:l[m]}):g(h)}),o}const Sy=Ce.forwardRef(function(a,o){const{id:l,invert:d,position:f="bottom-right",hotkey:p=["altKey","KeyT"],expand:h,closeButton:g,className:m,offset:v,mobileOffset:y,theme:w="light",richColors:B,duration:T,style:C,visibleToasts:k=Ay,toastOptions:D,dir:P=jp(),gap:S=_y,icons:N,containerAriaLabel:I="Notifications"}=a,[z,H]=Ce.useState([]),j=Ce.useMemo(()=>l?z.filter(K=>K.toasterId===l):z.filter(K=>!K.toasterId),[z,l]),ee=Ce.useMemo(()=>Array.from(new Set([f].concat(j.filter(K=>K.position).map(K=>K.position)))),[j,f]),[Z,V]=Ce.useState([]),[ne,J]=Ce.useState(!1),[ie,he]=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),Y=p.join("+").replace(/Key/g,"").replace(/Digit/g,""),q=Ce.useRef(null),R=Ce.useRef(!1),U=Ce.useCallback(K=>{H($=>{var de;return(de=$.find(fe=>fe.id===K.id))!=null&&de.delete||Wn.dismiss(K.id),$.filter(({id:fe})=>fe!==K.id)})},[]);return Ce.useEffect(()=>Wn.subscribe(K=>{if(K.dismiss){requestAnimationFrame(()=>{H($=>$.map(de=>de.id===K.id?{...de,delete:!0}:de))});return}setTimeout(()=>{jg.flushSync(()=>{H($=>{const de=$.findIndex(fe=>fe.id===K.id);return de!==-1?[...$.slice(0,de),{...$[de],...K},...$.slice(de+1)]:[K,...$]})})})}),[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 K=window.matchMedia("(prefers-color-scheme: dark)");try{K.addEventListener("change",({matches:$})=>{pe($?"dark":"light")})}catch{K.addListener(({matches:de})=>{try{pe(de?"dark":"light")}catch(fe){console.error(fe)}})}},[w]),Ce.useEffect(()=>{z.length<=1&&J(!1)},[z]),Ce.useEffect(()=>{const K=$=>{var de;if(p.every(Ae=>$[Ae]||$.code===Ae)){var ke;J(!0),(ke=G.current)==null||ke.focus()}$.code==="Escape"&&(document.activeElement===G.current||(de=G.current)!=null&&de.contains(document.activeElement))&&J(!1)};return document.addEventListener("keydown",K),()=>document.removeEventListener("keydown",K)},[p]),Ce.useEffect(()=>{if(G.current)return()=>{q.current&&(q.current.focus({preventScroll:!0}),q.current=null,R.current=!1)}},[G.current]),Ce.createElement("section",{ref:o,"aria-label":`${I} ${Y}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},ee.map((K,$)=>{var de;const[fe,ke]=K.split("-");return j.length?Ce.createElement("ol",{key:K,dir:P==="auto"?jp():P,tabIndex:-1,ref:G,className:m,"data-sonner-toaster":!0,"data-sonner-theme":ae,"data-y-position":fe,"data-x-position":ke,style:{"--front-toast-height":`${((de=Z[0])==null?void 0:de.height)||0}px`,"--width":`${yy}px`,"--gap":`${S}px`,...C,...ky(v,y)},onBlur:Ae=>{R.current&&!Ae.currentTarget.contains(Ae.relatedTarget)&&(R.current=!1,q.current&&(q.current.focus({preventScroll:!0}),q.current=null))},onFocus:Ae=>{Ae.target instanceof HTMLElement&&Ae.target.dataset.dismissible==="false"||R.current||(R.current=!0,q.current=Ae.relatedTarget)},onMouseEnter:()=>J(!0),onMouseMove:()=>J(!0),onMouseLeave:()=>{ie||J(!1)},onDragEnd:()=>J(!1),onPointerDown:Ae=>{Ae.target instanceof HTMLElement&&Ae.target.dataset.dismissible==="false"||he(!0)},onPointerUp:()=>he(!1)},j.filter(Ae=>!Ae.position&&$===0||Ae.position===K).map((Ae,We)=>{var $e,bt;return Ce.createElement(Ey,{key:Ae.id,icons:N,index:We,toast:Ae,defaultRichColors:B,duration:($e=D==null?void 0:D.duration)!=null?$e:T,className:D==null?void 0:D.className,descriptionClassName:D==null?void 0:D.descriptionClassName,invert:d,visibleToasts:k,closeButton:(bt=D==null?void 0:D.closeButton)!=null?bt:g,interacting:ie,position:K,style:D==null?void 0:D.style,unstyled:D==null?void 0:D.unstyled,classNames:D==null?void 0:D.classNames,cancelButtonStyle:D==null?void 0:D.cancelButtonStyle,actionButtonStyle:D==null?void 0:D.actionButtonStyle,closeButtonAriaLabel:D==null?void 0:D.closeButtonAriaLabel,removeToast:U,toasts:j.filter(ft=>ft.position==Ae.position),heights:Z.filter(ft=>ft.position==Ae.position),setHeights:V,expandByDefault:h,gap:S,expanded:ne,swipeDirections:a.swipeDirections})})):null}))}),By=({...r})=>b.jsx(Sy,{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}),Du=200;function Vu(r){return`${r.type}-${r.conversation_key}-${r.text}-${r.sender_timestamp}`}function Py(r){const[a,o]=F.useState([]),[l,d]=F.useState(!1),[f,p]=F.useState(!1),[h,g]=F.useState(!1),m=F.useRef(new Set),v=F.useCallback(async(T=!1)=>{if(!r||r.type==="raw"){o([]),g(!1);return}T&&(d(!0),o([]));try{const C=await rt.getMessages({type:r.type==="channel"?"CHAN":"PRIV",conversation_key:r.id,limit:Du});o(C),m.current.clear();for(const k of C)m.current.add(Vu(k));g(C.length>=Du)}catch(C){console.error("Failed to fetch messages:",C),wt.error("Failed to load messages",{description:C instanceof Error?C.message:"Check your connection"})}finally{T&&d(!1)}},[r]),y=F.useCallback(async()=>{if(!(!r||r.type==="raw"||f||!h)){p(!0);try{const T=await rt.getMessages({type:r.type==="channel"?"CHAN":"PRIV",conversation_key:r.id,limit:Du,offset:a.length});if(T.length>0){o(C=>[...C,...T]);for(const C of T)m.current.add(Vu(C))}g(T.length>=Du)}catch(T){console.error("Failed to fetch older messages:",T),wt.error("Failed to load older messages",{description:T instanceof Error?T.message:"Check your connection"})}finally{p(!1)}}},[r,f,h,a.length]);F.useEffect(()=>{v(!0)},[v]);const w=F.useCallback(T=>{const C=Vu(T);if(m.current.has(C))return console.debug("Duplicate message content ignored:",C.slice(0,50)),!1;if(m.current.add(C),m.current.size>1e3){const k=Array.from(m.current);m.current=new Set(k.slice(-500))}return o(k=>k.some(D=>D.id===T.id)?k:[...k,T]),!0},[]),B=F.useCallback((T,C,k)=>{o(D=>{const P=D.findIndex(S=>S.id===T);if(P>=0){const S=[...D];return S[P]={...D[P],acked:C,...k!==void 0&&{paths:k}},S}return D})},[]);return{messages:a,messagesLoading:l,loadingOlder:f,hasOlderMessages:h,setMessages:o,fetchMessages:v,fetchOlderMessages:y,addMessageIfNew:w,updateMessageAck:B}}/** * @license lucide-react v0.562.0 - ISC * * This source code is licensed under the ISC license. @@ -78,7 +78,7 @@ No ACL entries`;const a=[`ACL (${r.length})`];for(const o of r){const l=o.name|| * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const jy=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Hg=y0("x",jy);function zy({health:r,config:a,onSettingsClick:o,onMenuClick:l}){const d=(r==null?void 0:r.radio_connected)??!1,[f,p]=F.useState(!1),h=async()=>{p(!0);try{const g=await rt.reconnectRadio();g.connected&&bt.success("Reconnected",{description:g.message})}catch(g){bt.error("Reconnection failed",{description:g instanceof Error?g.message:"Check radio connection and power"})}finally{p(!1)}};return b.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 bg-[#252525] border-b border-[#333] text-xs",children:[l&&b.jsx("button",{onClick:l,className:"md:hidden p-1 bg-transparent border-none text-[#e0e0e0] cursor-pointer","aria-label":"Open menu",children:b.jsx(Oy,{className:"h-5 w-5"})}),b.jsx("h1",{className:"hidden lg:block text-base font-semibold mr-auto",children:"RemoteTerm"}),b.jsxs("div",{className:"flex items-center gap-1 text-[#888]",children:[b.jsx("div",{className:`w-2 h-2 rounded-full ${d?"bg-[#4caf50]":"bg-[#666]"}`}),b.jsx("span",{className:"hidden lg:inline text-[#e0e0e0]",children:d?"Connected":"Disconnected"})]}),a&&b.jsx("div",{className:"hidden lg:flex items-center gap-1 text-[#888]",children:b.jsx("span",{className:"text-[#e0e0e0]",children:a.name||"Unnamed"})}),b.jsx("div",{className:"flex-1 lg:hidden"}),!d&&b.jsx("button",{onClick:h,disabled:f,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:f?"Reconnecting...":"Reconnect"}),b.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:[b.jsx("span",{role:"img","aria-label":"Settings",children:"🔧"})," ","Radio & Config"]})]})}const e0=2,Hy={text:"🛜",background:"#444444",textColor:"#ffffff"};function Vy(r){let a=0;for(let o=0;o>8)%30,d=35+(a>>16)%20,f=`hsl(${o}, ${l}%, ${d}%)`,p=d<45?"#ffffff":"#000000";return{background:f,text:p}}function qy(r,a,o){if(o===e0)return Hy;const l=Zy(r,a),d=Wy(a);return{text:l,background:d.background,textColor:d.text}}function t0({name:r,publicKey:a,size:o=28,contactType:l}){const d=qy(r,a,l);return b.jsx("div",{className:"flex items-center justify-center rounded-full font-semibold flex-shrink-0 select-none",style:{backgroundColor:d.background,color:d.textColor,width:o,height:o,fontSize:o*.45},children:d.text})}const Vg="remoteterm-favorites";function jc(){try{const r=localStorage.getItem(Vg);return r?JSON.parse(r):[]}catch{return[]}}function Ug(r){try{localStorage.setItem(Vg,JSON.stringify(r))}catch{}}function Gy(r,a){const o=jc();if(o.some(d=>d.type===r&&d.id===a))return o;const l=[...o,{type:r,id:a}];return Ug(l),l}function Ky(r,a){const l=jc().filter(d=>!(d.type===r&&d.id===a));return Ug(l),l}function Zs(r,a,o){return r.some(l=>l.type===a&&l.id===o)}function Qy(r,a){return jc().some(l=>l.type===r&&l.id===a)?Ky(r,a):Gy(r,a)}function Zg(r){var a,o,l="";if(typeof r=="string"||typeof r=="number")l+=r;else if(typeof r=="object")if(Array.isArray(r)){var d=r.length;for(a=0;a{const o=new Array(r.length+a.length);for(let l=0;l({classGroupId:r,validator:a}),qg=(r=new Map,a=null,o)=>({nextPart:r,validators:a,classGroupId:o}),Dc="-",Hp=[],Xy="arbitrary..",Jy=r=>{const a=t_(r),{conflictingClassGroups:o,conflictingClassGroupModifiers:l}=r;return{getClassGroupId:p=>{if(p.startsWith("[")&&p.endsWith("]"))return e_(p);const h=p.split(Dc),g=h[0]===""&&h.length>1?1:0;return Gg(h,g,a)},getConflictingClassGroupIds:(p,h)=>{if(h){const g=l[p],m=o[p];return g?m?$y(m,g):g:m||Hp}return o[p]||Hp}}},Gg=(r,a,o)=>{if(r.length-a===0)return o.classGroupId;const d=r[a],f=o.nextPart.get(d);if(f){const m=Gg(r,a+1,f);if(m)return m}const p=o.validators;if(p===null)return;const h=a===0?r.join(Dc):r.slice(a).join(Dc),g=p.length;for(let m=0;mr.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=r.slice(1,-1),o=a.indexOf(":"),l=a.slice(0,o);return l?Xy+l:void 0})(),t_=r=>{const{theme:a,classGroups:o}=r;return n_(o,a)},n_=(r,a)=>{const o=qg();for(const l in r){const d=r[l];_0(d,o,l,a)}return o},_0=(r,a,o,l)=>{const d=r.length;for(let f=0;f{if(typeof r=="string"){i_(r,a,o);return}if(typeof r=="function"){o_(r,a,o,l);return}s_(r,a,o,l)},i_=(r,a,o)=>{const l=r===""?a:Kg(a,r);l.classGroupId=o},o_=(r,a,o,l)=>{if(a_(r)){_0(r(l),a,o,l);return}a.validators===null&&(a.validators=[]),a.validators.push(Yy(o,r))},s_=(r,a,o,l)=>{const d=Object.entries(r),f=d.length;for(let p=0;p{let o=r;const l=a.split(Dc),d=l.length;for(let f=0;f"isThemeGetter"in r&&r.isThemeGetter===!0,l_=r=>{if(r<1)return{get:()=>{},set:()=>{}};let a=0,o=Object.create(null),l=Object.create(null);const d=(f,p)=>{o[f]=p,a++,a>r&&(a=0,l=o,o=Object.create(null))};return{get(f){let p=o[f];if(p!==void 0)return p;if((p=l[f])!==void 0)return d(f,p),p},set(f,p){f in o?o[f]=p:d(f,p)}}},n0="!",Vp=":",u_=[],Up=(r,a,o,l,d)=>({modifiers:r,hasImportantModifier:a,baseClassName:o,maybePostfixModifierPosition:l,isExternal:d}),c_=r=>{const{prefix:a,experimentalParseClassName:o}=r;let l=d=>{const f=[];let p=0,h=0,g=0,m;const v=d.length;for(let C=0;Cg?m-g:void 0;return Up(f,B,w,T)};if(a){const d=a+Vp,f=l;l=p=>p.startsWith(d)?f(p.slice(d.length)):Up(u_,!1,p,void 0,!0)}if(o){const d=l;l=f=>o({className:f,parseClassName:d})}return l},d_=r=>{const a=new Map;return r.orderSensitiveModifiers.forEach((o,l)=>{a.set(o,1e6+l)}),o=>{const l=[];let d=[];for(let f=0;f0&&(d.sort(),l.push(...d),d=[]),l.push(p)):d.push(p)}return d.length>0&&(d.sort(),l.push(...d)),l}},f_=r=>({cache:l_(r.cacheSize),parseClassName:c_(r),sortModifiers:d_(r),...Jy(r)}),h_=/\s+/,p_=(r,a)=>{const{parseClassName:o,getClassGroupId:l,getConflictingClassGroupIds:d,sortModifiers:f}=a,p=[],h=r.trim().split(h_);let g="";for(let m=h.length-1;m>=0;m-=1){const v=h[m],{isExternal:y,modifiers:w,hasImportantModifier:B,baseClassName:T,maybePostfixModifierPosition:C}=o(v);if(y){g=v+(g.length>0?" "+g:g);continue}let k=!!C,D=l(k?T.substring(0,C):T);if(!D){if(!k){g=v+(g.length>0?" "+g:g);continue}if(D=l(T),!D){g=v+(g.length>0?" "+g:g);continue}k=!1}const P=w.length===0?"":w.length===1?w[0]:f(w).join(":"),S=B?P+n0:P,N=S+D;if(p.indexOf(N)>-1)continue;p.push(N);const I=d(D,k);for(let z=0;z0?" "+g:g)}return g},m_=(...r)=>{let a=0,o,l,d="";for(;a{if(typeof r=="string")return r;let a,o="";for(let l=0;l{let o,l,d,f;const p=g=>{const m=a.reduce((v,y)=>y(v),r());return o=f_(m),l=o.cache.get,d=o.cache.set,f=h,h(g)},h=g=>{const m=l(g);if(m)return m;const v=p_(g,o);return d(g,v),v};return f=p,(...g)=>f(m_(...g))},A_=[],ln=r=>{const a=o=>o[r]||A_;return a.isThemeGetter=!0,a},$g=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Yg=/^\((?:(\w[\w-]*):)?(.+)\)$/i,x_=/^\d+\/\d+$/,v_=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,y_=/\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$/,__=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,w_=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,b_=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,js=r=>x_.test(r),st=r=>!!r&&!Number.isNaN(Number(r)),ao=r=>!!r&&Number.isInteger(Number(r)),Mf=r=>r.endsWith("%")&&st(r.slice(0,-1)),_i=r=>v_.test(r),C_=()=>!0,E_=r=>y_.test(r)&&!__.test(r),Xg=()=>!1,k_=r=>w_.test(r),S_=r=>b_.test(r),B_=r=>!Ie(r)&&!Oe(r),P_=r=>Js(r,tA,Xg),Ie=r=>$g.test(r),zo=r=>Js(r,nA,E_),If=r=>Js(r,N_,st),Zp=r=>Js(r,Jg,Xg),T_=r=>Js(r,eA,S_),Ru=r=>Js(r,rA,k_),Oe=r=>Yg.test(r),qa=r=>ea(r,nA),D_=r=>ea(r,L_),Wp=r=>ea(r,Jg),R_=r=>ea(r,tA),F_=r=>ea(r,eA),Fu=r=>ea(r,rA,!0),Js=(r,a,o)=>{const l=$g.exec(r);return l?l[1]?a(l[1]):o(l[2]):!1},ea=(r,a,o=!1)=>{const l=Yg.exec(r);return l?l[1]?a(l[1]):o:!1},Jg=r=>r==="position"||r==="percentage",eA=r=>r==="image"||r==="url",tA=r=>r==="length"||r==="size"||r==="bg-size",nA=r=>r==="length",N_=r=>r==="number",L_=r=>r==="family-name",rA=r=>r==="shadow",M_=()=>{const r=ln("color"),a=ln("font"),o=ln("text"),l=ln("font-weight"),d=ln("tracking"),f=ln("leading"),p=ln("breakpoint"),h=ln("container"),g=ln("spacing"),m=ln("radius"),v=ln("shadow"),y=ln("inset-shadow"),w=ln("text-shadow"),B=ln("drop-shadow"),T=ln("blur"),C=ln("perspective"),k=ln("aspect"),D=ln("ease"),P=ln("animate"),S=()=>["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(),Oe,Ie],z=()=>["auto","hidden","clip","visible","scroll"],H=()=>["auto","contain","none"],j=()=>[Oe,Ie,g],ee=()=>[js,"full","auto",...j()],Z=()=>[ao,"none","subgrid",Oe,Ie],V=()=>["auto",{span:["full",ao,Oe,Ie]},ao,Oe,Ie],ne=()=>[ao,"auto",Oe,Ie],J=()=>["auto","min","max","fr",Oe,Ie],ie=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],he=()=>["start","end","center","stretch","center-safe","end-safe"],ae=()=>["auto",...j()],pe=()=>[js,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...j()],G=()=>[r,Oe,Ie],Y=()=>[...N(),Wp,Zp,{position:[Oe,Ie]}],q=()=>["no-repeat",{repeat:["","x","y","space","round"]}],R=()=>["auto","cover","contain",R_,P_,{size:[Oe,Ie]}],U=()=>[Mf,qa,zo],K=()=>["","none","full",m,Oe,Ie],$=()=>["",st,qa,zo],de=()=>["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,Mf,Wp,Zp],Ae=()=>["","none",T,Oe,Ie],We=()=>["none",st,Oe,Ie],$e=()=>["none",st,Oe,Ie],wt=()=>[st,Oe,Ie],ft=()=>[js,"full",...j()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[_i],breakpoint:[_i],color:[C_],container:[_i],"drop-shadow":[_i],ease:["in","out","in-out"],font:[B_],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[_i],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[_i],shadow:[_i],spacing:["px",st],text:[_i],"text-shadow":[_i],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",js,Ie,Oe,k]}],container:["container"],columns:[{columns:[st,Ie,Oe,h]}],"break-after":[{"break-after":S()}],"break-before":[{"break-before":S()}],"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:H()}],"overscroll-x":[{"overscroll-x":H()}],"overscroll-y":[{"overscroll-y":H()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:ee()}],"inset-x":[{"inset-x":ee()}],"inset-y":[{"inset-y":ee()}],start:[{start:ee()}],end:[{end:ee()}],top:[{top:ee()}],right:[{right:ee()}],bottom:[{bottom:ee()}],left:[{left:ee()}],visibility:["visible","invisible","collapse"],z:[{z:[ao,"auto",Oe,Ie]}],basis:[{basis:[js,"full","auto",h,...j()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[st,js,"auto","initial","none",Ie]}],grow:[{grow:["",st,Oe,Ie]}],shrink:[{shrink:["",st,Oe,Ie]}],order:[{order:[ao,"first","last","none",Oe,Ie]}],"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":J()}],"auto-rows":[{"auto-rows":J()}],gap:[{gap:j()}],"gap-x":[{"gap-x":j()}],"gap-y":[{"gap-y":j()}],"justify-content":[{justify:[...ie(),"normal"]}],"justify-items":[{"justify-items":[...he(),"normal"]}],"justify-self":[{"justify-self":["auto",...he()]}],"align-content":[{content:["normal",...ie()]}],"align-items":[{items:[...he(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...he(),{baseline:["","last"]}]}],"place-content":[{"place-content":ie()}],"place-items":[{"place-items":[...he(),"baseline"]}],"place-self":[{"place-self":["auto",...he()]}],p:[{p:j()}],px:[{px:j()}],py:[{py:j()}],ps:[{ps:j()}],pe:[{pe:j()}],pt:[{pt:j()}],pr:[{pr:j()}],pb:[{pb:j()}],pl:[{pl:j()}],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":j()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":j()}],"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:[p]},...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,qa,zo]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[l,Oe,If]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Mf,Ie]}],"font-family":[{font:[D_,Ie,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:[d,Oe,Ie]}],"line-clamp":[{"line-clamp":[st,"none",Oe,If]}],leading:[{leading:[f,...j()]}],"list-image":[{"list-image":["none",Oe,Ie]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Oe,Ie]}],"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:[...de(),"wavy"]}],"text-decoration-thickness":[{decoration:[st,"from-font","auto",Oe,zo]}],"text-decoration-color":[{decoration:G()}],"underline-offset":[{"underline-offset":[st,"auto",Oe,Ie]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Oe,Ie]}],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",Oe,Ie]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Y()}],"bg-repeat":[{bg:q()}],"bg-size":[{bg:R()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ao,Oe,Ie],radial:["",Oe,Ie],conic:[ao,Oe,Ie]},F_,T_]}],"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:K()}],"rounded-s":[{"rounded-s":K()}],"rounded-e":[{"rounded-e":K()}],"rounded-t":[{"rounded-t":K()}],"rounded-r":[{"rounded-r":K()}],"rounded-b":[{"rounded-b":K()}],"rounded-l":[{"rounded-l":K()}],"rounded-ss":[{"rounded-ss":K()}],"rounded-se":[{"rounded-se":K()}],"rounded-ee":[{"rounded-ee":K()}],"rounded-es":[{"rounded-es":K()}],"rounded-tl":[{"rounded-tl":K()}],"rounded-tr":[{"rounded-tr":K()}],"rounded-br":[{"rounded-br":K()}],"rounded-bl":[{"rounded-bl":K()}],"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:[...de(),"hidden","none"]}],"divide-style":[{divide:[...de(),"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:[...de(),"none","hidden"]}],"outline-offset":[{"outline-offset":[st,Oe,Ie]}],"outline-w":[{outline:["",st,qa,zo]}],"outline-color":[{outline:G()}],shadow:[{shadow:["","none",v,Fu,Ru]}],"shadow-color":[{shadow:G()}],"inset-shadow":[{"inset-shadow":["none",y,Fu,Ru]}],"inset-shadow-color":[{"inset-shadow":G()}],"ring-w":[{ring:$()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:G()}],"ring-offset-w":[{"ring-offset":[st,zo]}],"ring-offset-color":[{"ring-offset":G()}],"inset-ring-w":[{"inset-ring":$()}],"inset-ring-color":[{"inset-ring":G()}],"text-shadow":[{"text-shadow":["none",w,Fu,Ru]}],"text-shadow-color":[{"text-shadow":G()}],opacity:[{opacity:[st,Oe,Ie]}],"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":[Oe,Ie]}],"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:Y()}],"mask-repeat":[{mask:q()}],"mask-size":[{mask:R()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Oe,Ie]}],filter:[{filter:["","none",Oe,Ie]}],blur:[{blur:Ae()}],brightness:[{brightness:[st,Oe,Ie]}],contrast:[{contrast:[st,Oe,Ie]}],"drop-shadow":[{"drop-shadow":["","none",B,Fu,Ru]}],"drop-shadow-color":[{"drop-shadow":G()}],grayscale:[{grayscale:["",st,Oe,Ie]}],"hue-rotate":[{"hue-rotate":[st,Oe,Ie]}],invert:[{invert:["",st,Oe,Ie]}],saturate:[{saturate:[st,Oe,Ie]}],sepia:[{sepia:["",st,Oe,Ie]}],"backdrop-filter":[{"backdrop-filter":["","none",Oe,Ie]}],"backdrop-blur":[{"backdrop-blur":Ae()}],"backdrop-brightness":[{"backdrop-brightness":[st,Oe,Ie]}],"backdrop-contrast":[{"backdrop-contrast":[st,Oe,Ie]}],"backdrop-grayscale":[{"backdrop-grayscale":["",st,Oe,Ie]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[st,Oe,Ie]}],"backdrop-invert":[{"backdrop-invert":["",st,Oe,Ie]}],"backdrop-opacity":[{"backdrop-opacity":[st,Oe,Ie]}],"backdrop-saturate":[{"backdrop-saturate":[st,Oe,Ie]}],"backdrop-sepia":[{"backdrop-sepia":["",st,Oe,Ie]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":j()}],"border-spacing-x":[{"border-spacing-x":j()}],"border-spacing-y":[{"border-spacing-y":j()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Oe,Ie]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[st,"initial",Oe,Ie]}],ease:[{ease:["linear","initial",D,Oe,Ie]}],delay:[{delay:[st,Oe,Ie]}],animate:[{animate:["none",P,Oe,Ie]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[C,Oe,Ie]}],"perspective-origin":[{"perspective-origin":I()}],rotate:[{rotate:We()}],"rotate-x":[{"rotate-x":We()}],"rotate-y":[{"rotate-y":We()}],"rotate-z":[{"rotate-z":We()}],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:[Oe,Ie,"","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",Oe,Ie]}],"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":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"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",Oe,Ie]}],fill:[{fill:["none",...G()]}],"stroke-w":[{stroke:[st,qa,zo,If]}],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"]}},I_=g_(M_);function at(...r){return I_(Wg(r))}const Xt=F.forwardRef(({className:r,type:a,...o},l)=>b.jsx("input",{type:a,className:at("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}));Xt.displayName="Input";function qp(r,a){if(typeof r=="function")return r(a);r!=null&&(r.current=a)}function fl(...r){return a=>{let o=!1;const l=r.map(d=>{const f=qp(d,a);return!o&&typeof f=="function"&&(o=!0),f});if(o)return()=>{for(let d=0;d{let{children:f,...p}=l;iA(f)&&typeof Rc=="function"&&(f=Rc(f._payload));const h=F.Children.toArray(f),g=h.find(U_);if(g){const m=g.props.children,v=h.map(y=>y===g?F.Children.count(m)>1?F.Children.only(null):F.isValidElement(m)?m.props.children:null:y);return b.jsx(a,{...p,ref:d,children:F.isValidElement(m)?F.cloneElement(m,void 0,v):null})}return b.jsx(a,{...p,ref:d,children:f})});return o.displayName=`${r}.Slot`,o}var z_=w0("Slot");function H_(r){const a=F.forwardRef((o,l)=>{let{children:d,...f}=o;if(iA(d)&&typeof Rc=="function"&&(d=Rc(d._payload)),F.isValidElement(d)){const p=W_(d),h=Z_(f,d.props);return d.type!==F.Fragment&&(h.ref=l?fl(l,p):p),F.cloneElement(d,h)}return F.Children.count(d)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var V_=Symbol("radix.slottable");function U_(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===V_}function Z_(r,a){const o={...a};for(const l in a){const d=r[l],f=a[l];/^on[A-Z]/.test(l)?d&&f?o[l]=(...h)=>{const g=f(...h);return d(...h),g}:d&&(o[l]=d):l==="style"?o[l]={...d,...f}:l==="className"&&(o[l]=[d,f].filter(Boolean).join(" "))}return{...r,...o}}function W_(r){var l,d;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=(d=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:d.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}const Gp=r=>typeof r=="boolean"?`${r}`:r===0?"0":r,Kp=Wg,b0=(r,a)=>o=>{var l;if((a==null?void 0:a.variants)==null)return Kp(r,o==null?void 0:o.class,o==null?void 0:o.className);const{variants:d,defaultVariants:f}=a,p=Object.keys(d).map(m=>{const v=o==null?void 0:o[m],y=f==null?void 0:f[m];if(v===null)return null;const w=Gp(v)||Gp(y);return d[m][w]}),h=o&&Object.entries(o).reduce((m,v)=>{let[y,w]=v;return w===void 0||(m[y]=w),m},{}),g=a==null||(l=a.compoundVariants)===null||l===void 0?void 0:l.reduce((m,v)=>{let{class:y,className:w,...B}=v;return Object.entries(B).every(T=>{let[C,k]=T;return Array.isArray(k)?k.includes({...f,...h}[C]):{...f,...h}[C]===k})?[...m,y,w]:m},[]);return Kp(r,p,g,o==null?void 0:o.class,o==null?void 0:o.className)},q_=b0("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"}}),Pn=F.forwardRef(({className:r,variant:a,size:o,asChild:l=!1,...d},f)=>{const p=l?z_:"button";return b.jsx(p,{className:at(q_({variant:a,size:o,className:r})),ref:f,...d})});Pn.displayName="Button";function Nu(r){return r>=A0?`${r}+`:`${r}`}function G_(){try{return localStorage.getItem("remoteterm-sortOrder")==="alpha"?"alpha":"recent"}catch{return"recent"}}function K_(r){try{localStorage.setItem("remoteterm-sortOrder",r)}catch{}}function Q_({contacts:r,channels:a,activeConversation:o,onSelectConversation:l,onNewMessage:d,lastMessageTimes:f,unreadCounts:p,mentions:h,showCracker:g,crackerRunning:m,onToggleCracker:v,onMarkAllRead:y,favorites:w}){const[B,T]=F.useState(G_),[C,k]=F.useState(""),D=()=>{const Y=B==="alpha"?"recent":"alpha";T(Y),K_(Y)},P=Y=>{k(""),l(Y)},S=(Y,q)=>(o==null?void 0:o.type)===Y&&(o==null?void 0:o.id)===q,N=(Y,q)=>{const R=Rr(Y,q);return p[R]||0},I=(Y,q)=>{const R=Rr(Y,q);return h[R]||!1},z=(Y,q)=>{const R=Rr(Y,q);return f[R]||0},H=a.reduce((Y,q)=>(Y.some(R=>R.name===q.name)||Y.push(q),Y),[]),j=r.filter(Y=>Y.public_key&&Y.public_key.length>0).sort((Y,q)=>Y.name&&!q.name?-1:!Y.name&&q.name?1:(Y.name||"").localeCompare(q.name||"")).reduce((Y,q)=>{const R=Ks(q.public_key);return Y.some(U=>Ks(U.public_key)===R)||Y.push(q),Y},[]),ee=[...H].sort((Y,q)=>{if(Y.name==="Public")return-1;if(q.name==="Public")return 1;if(B==="recent"){const R=z("channel",Y.key),U=z("channel",q.key);if(R&&U)return U-R;if(R&&!U)return-1;if(!R&&U)return 1}return Y.name.localeCompare(q.name)}),Z=[...j].sort((Y,q)=>{const R=Y.type===e0,U=q.type===e0;if(R&&!U)return 1;if(!R&&U)return-1;if(R&&U)return(Y.name||Y.public_key).localeCompare(q.name||q.public_key);if(B==="recent"){const K=z("contact",Y.public_key),$=z("contact",q.public_key);if(K&&$)return $-K;if(K&&!$)return-1;if(!K&&$)return 1}return(Y.name||Y.public_key).localeCompare(q.name||q.public_key)}),V=C.toLowerCase().trim(),ne=V?ee.filter(Y=>Y.name.toLowerCase().includes(V)||Y.key.toLowerCase().includes(V)):ee,J=V?Z.filter(Y=>{var q;return((q=Y.name)==null?void 0:q.toLowerCase().includes(V))||Y.public_key.toLowerCase().includes(V)}):Z,ie=ne.filter(Y=>Zs(w,"channel",Y.key)),he=J.filter(Y=>Zs(w,"contact",Y.public_key)),ae=ne.filter(Y=>!Zs(w,"channel",Y.key)),pe=J.filter(Y=>!Zs(w,"contact",Y.public_key)),G=[...ie.map(Y=>({type:"channel",channel:Y})),...he.map(Y=>({type:"contact",contact:Y}))].sort((Y,q)=>{const R=Y.type==="channel"?z("channel",Y.channel.key):z("contact",Y.contact.public_key),U=q.type==="channel"?z("channel",q.channel.key):z("contact",q.contact.public_key);if(R&&U)return U-R;if(R&&!U)return-1;if(!R&&U)return 1;const K=Y.type==="channel"?Y.channel.name:Y.contact.name||Y.contact.public_key,$=q.type==="channel"?q.channel.name:q.contact.name||q.contact.public_key;return K.localeCompare($)});return b.jsxs("div",{className:"sidebar w-60 h-full min-h-0 bg-card border-r border-border flex flex-col",children:[b.jsxs("div",{className:"flex justify-between items-center px-3 py-3 border-b border-border",children:[b.jsx("h2",{className:"text-xs uppercase text-muted-foreground font-medium",children:"Conversations"}),b.jsx(Pn,{variant:"ghost",size:"sm",onClick:d,title:"New Message",className:"h-6 w-6 p-0 text-muted-foreground hover:text-foreground",children:"+"})]}),b.jsxs("div",{className:"relative px-3 py-2 border-b border-border",children:[b.jsx(Xt,{type:"text",placeholder:"Search...",value:C,onChange:Y=>k(Y.target.value),className:"h-8 text-sm pr-8"}),C&&b.jsx("button",{className:"absolute right-4 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground text-lg leading-none",onClick:()=>k(""),title:"Clear search",children:"×"})]}),b.jsxs("div",{className:"flex-1 overflow-y-auto",children:[!V&&b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("raw","raw")&&"bg-accent border-l-primary"),onClick:()=>P({type:"raw",id:"raw",name:"Raw Packet Feed"}),children:[b.jsx("span",{className:"text-muted-foreground text-xs",children:"📡"}),b.jsx("span",{className:"flex-1 truncate",children:"Packet Feed"})]}),!V&&b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("map","map")&&"bg-accent border-l-primary"),onClick:()=>P({type:"map",id:"map",name:"Node Map"}),children:[b.jsx("span",{className:"text-muted-foreground text-xs",children:"🗺️"}),b.jsx("span",{className:"flex-1 truncate",children:"Node Map"})]}),!V&&b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",g&&"bg-accent border-l-primary"),onClick:v,children:[b.jsx("span",{className:"text-muted-foreground text-xs",children:"🔓"}),b.jsxs("span",{className:"flex-1 truncate",children:[g?"Hide":"Show"," Room Finder",b.jsxs("span",{className:at("ml-1 text-xs",m?"text-green-500":"text-muted-foreground"),children:["(",m?"running":"stopped",")"]})]})]}),!V&&Object.keys(p).length>0&&b.jsxs("div",{className:"px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",onClick:y,children:[b.jsx("span",{className:"text-muted-foreground text-xs",children:"✓"}),b.jsx("span",{className:"flex-1 truncate text-muted-foreground",children:"Mark all as read"})]}),G.length>0&&b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:b.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Favorites"})}),G.map(Y=>{if(Y.type==="channel"){const q=Y.channel,R=N("channel",q.key),U=I("channel",q.key);return b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("channel",q.key)&&"bg-accent border-l-primary",R>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>P({type:"channel",id:q.key,name:q.name}),children:[b.jsx("span",{className:"name flex-1 truncate",children:q.name}),R>0&&b.jsx("span",{className:at("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:Nu(R)})]},`fav-chan-${q.key}`)}else{const q=Y.contact,R=N("contact",q.public_key),U=I("contact",q.public_key);return b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("contact",q.public_key)&&"bg-accent border-l-primary",R>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>P({type:"contact",id:q.public_key,name:Ei(q.name,q.public_key)}),children:[b.jsx(t0,{name:q.name,publicKey:q.public_key,size:24,contactType:q.type}),b.jsx("span",{className:"name flex-1 truncate",children:Ei(q.name,q.public_key)}),R>0&&b.jsx("span",{className:at("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:Nu(R)})]},`fav-contact-${q.public_key}`)}})]}),ae.length>0&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[b.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Channels"}),b.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:D,title:B==="alpha"?"Sort by recent":"Sort alphabetically",children:B==="alpha"?"A-Z":"⏱"})]}),ae.map(Y=>{const q=N("channel",Y.key),R=I("channel",Y.key);return b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("channel",Y.key)&&"bg-accent border-l-primary",q>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>P({type:"channel",id:Y.key,name:Y.name}),children:[b.jsx("span",{className:"name flex-1 truncate",children:Y.name}),q>0&&b.jsx("span",{className:at("text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",R?"bg-destructive text-destructive-foreground":"bg-primary text-primary-foreground"),children:Nu(q)})]},`chan-${Y.key}`)})]}),pe.length>0&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[b.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Contacts"}),ae.length===0&&b.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:D,title:B==="alpha"?"Sort by recent":"Sort alphabetically",children:B==="alpha"?"A-Z":"⏱"})]}),pe.map(Y=>{const q=N("contact",Y.public_key),R=I("contact",Y.public_key);return b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("contact",Y.public_key)&&"bg-accent border-l-primary",q>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>P({type:"contact",id:Y.public_key,name:Ei(Y.name,Y.public_key)}),children:[b.jsx(t0,{name:Y.name,publicKey:Y.public_key,size:24,contactType:Y.type}),b.jsx("span",{className:"name flex-1 truncate",children:Ei(Y.name,Y.public_key)}),q>0&&b.jsx("span",{className:at("text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",R?"bg-destructive text-destructive-foreground":"bg-primary text-primary-foreground"),children:Nu(q)})]},Y.public_key)})]}),pe.length===0&&ae.length===0&&G.length===0&&b.jsx("div",{className:"p-5 text-center text-muted-foreground",children:V?"No matches found":"No conversations yet"})]})]})}function Qp(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 Qs(r){const a=new Date(r*1e3),o=new Date,l=a.toDateString()===o.toDateString(),d=a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return l?d:`${a.toLocaleDateString([],{month:"short",day:"numeric"})} ${d}`}function $_(r){if(!r||r.length===0)return[];const a=r.toUpperCase(),o=[];for(let l=0;lo&&d.type!==Oc?!1:d.public_key.toUpperCase().startsWith(l))}function Fr(r,a,o,l){if(r===null||a===null||o===null||l===null)return null;const d=6371,f=Lu(o-r),p=Lu(l-a),h=Math.sin(f/2)*Math.sin(f/2)+Math.cos(Lu(r))*Math.cos(Lu(o))*Math.sin(p/2)*Math.sin(p/2),g=2*Math.atan2(Math.sqrt(h),Math.sqrt(1-h));return d*g}function Lu(r){return r*Math.PI/180}function Ct(r,a){return!(r===null||a===null||r===0&&a===0)}function Go(r){return r<1?`${Math.round(r*1e3)}m`:`${r.toFixed(1)}km`}function X_(r,a,o){return a===null||o===null?r:[...r].sort((l,d)=>{const f=Fr(a,o,l.lat,l.lon),p=Fr(a,o,d.lat,d.lon);return f===null&&p===null?0:f===null?1:p===null?-1:f-p})}function J_(r){return!r||r.length===0?0:Math.floor(r.length/2)}function e1(r){if(!r||r.length===0)return{display:"",allDirect:!0,hasMultiple:!1};const a=r.map(p=>J_(p.path)).sort((p,h)=>p-h),o=a.every(p=>p===0),l=r.length>1;return{display:a.map(p=>p===0?"d":p.toString()).join("/"),allDirect:o,hasMultiple:l}}function t1(r,a,o,l){var C;const d=$_(r),f=a.publicKeyOrPrefix.toUpperCase().slice(0,2),p={name:a.name,prefix:f,lat:a.lat,lon:a.lon},h=((C=l==null?void 0:l.public_key)==null?void 0:C.toUpperCase().slice(0,2))||"??",g={name:(l==null?void 0:l.name)||"Unknown",prefix:h,lat:(l==null?void 0:l.lat)??null,lon:(l==null?void 0:l.lon)??null,publicKey:(l==null?void 0:l.public_key)??null},m=[];let v=a.lat,y=a.lon,w=!Ct(a.lat,a.lon);for(const k of d){const D=Y_(k,o,!0),P=X_(D,v,y);let S=null;const N=P.length===1&&Ct(P[0].lat,P[0].lon);!w&&N&&(S=Fr(v,y,P[0].lat,P[0].lon)),m.push({prefix:k,matches:P,distanceFromPrev:S}),P.length===0?(w=!0,v=null,y=null):P.length>1?(w=!0,Ct(P[0].lat,P[0].lon)?(v=P[0].lat,y=P[0].lon):(v=null,y=null)):Ct(P[0].lat,P[0].lon)?(w=!1,v=P[0].lat,y=P[0].lon):(w=!0,v=null,y=null)}const B=n1(p,m,g),T=!Ct(p.lat,p.lon)||!Ct(g.lat,g.lon)||m.some(k=>k.matches.length!==1||!Ct(k.matches[0].lat,k.matches[0].lon));return{sender:p,hops:m,receiver:g,totalDistances:B,hasGaps:T}}function n1(r,a,o){if(a.length===0){if(!Ct(r.lat,r.lon)||!Ct(o.lat,o.lon))return null;const m=Fr(r.lat,r.lon,o.lat,o.lon);return m!==null?[m]:null}let l=r.lat,d=r.lon,f=0;if(!Ct(l,d)){for(let m=0;m{const{children:p,...h}=f,g=F.useMemo(()=>h,Object.values(h));return b.jsx(o.Provider,{value:g,children:p})};l.displayName=r+"Provider";function d(f){const p=F.useContext(o);if(p)return p;if(a!==void 0)return a;throw new Error(`\`${f}\` must be used within \`${r}\``)}return[l,d]}function hl(r,a=[]){let o=[];function l(f,p){const h=F.createContext(p),g=o.length;o=[...o,p];const m=y=>{var D;const{scope:w,children:B,...T}=y,C=((D=w==null?void 0:w[r])==null?void 0:D[g])||h,k=F.useMemo(()=>T,Object.values(T));return b.jsx(C.Provider,{value:k,children:B})};m.displayName=f+"Provider";function v(y,w){var C;const B=((C=w==null?void 0:w[r])==null?void 0:C[g])||h,T=F.useContext(B);if(T)return T;if(p!==void 0)return p;throw new Error(`\`${y}\` must be used within \`${f}\``)}return[m,v]}const d=()=>{const f=o.map(p=>F.createContext(p));return function(h){const g=(h==null?void 0:h[r])||f;return F.useMemo(()=>({[`__scope${r}`]:{...h,[r]:g}}),[h,g])}};return d.scopeName=r,[l,i1(d,...a)]}function i1(...r){const a=r[0];if(r.length===1)return a;const o=()=>{const l=r.map(d=>({useScope:d(),scopeName:d.scopeName}));return function(f){const p=l.reduce((h,{useScope:g,scopeName:m})=>{const y=g(f)[`__scope${m}`];return{...h,...y}},{});return F.useMemo(()=>({[`__scope${a.scopeName}`]:p}),[p])}};return o.scopeName=a.scopeName,o}var $s=globalThis!=null&&globalThis.document?F.useLayoutEffect:()=>{},o1=g0[" useId ".trim().toString()]||(()=>{}),s1=0;function ll(r){const[a,o]=F.useState(o1());return $s(()=>{o(l=>l??String(s1++))},[r]),a?`radix-${a}`:""}var a1=g0[" useInsertionEffect ".trim().toString()]||$s;function zc({prop:r,defaultProp:a,onChange:o=()=>{},caller:l}){const[d,f,p]=l1({defaultProp:a,onChange:o}),h=r!==void 0,g=h?r:d;{const v=F.useRef(r!==void 0);F.useEffect(()=>{const y=v.current;y!==h&&console.warn(`${l} is changing from ${y?"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.`),v.current=h},[h,l])}const m=F.useCallback(v=>{var y;if(h){const w=u1(v)?v(r):v;w!==r&&((y=p.current)==null||y.call(p,w))}else f(v)},[h,r,f,p]);return[g,m]}function l1({defaultProp:r,onChange:a}){const[o,l]=F.useState(r),d=F.useRef(o),f=F.useRef(a);return a1(()=>{f.current=a},[a]),F.useEffect(()=>{var p;d.current!==o&&((p=f.current)==null||p.call(f,o),d.current=o)},[o,d]),[o,l,f]}function u1(r){return typeof r=="function"}function c1(r){const a=d1(r),o=F.forwardRef((l,d)=>{const{children:f,...p}=l,h=F.Children.toArray(f),g=h.find(h1);if(g){const m=g.props.children,v=h.map(y=>y===g?F.Children.count(m)>1?F.Children.only(null):F.isValidElement(m)?m.props.children:null:y);return b.jsx(a,{...p,ref:d,children:F.isValidElement(m)?F.cloneElement(m,void 0,v):null})}return b.jsx(a,{...p,ref:d,children:f})});return o.displayName=`${r}.Slot`,o}function d1(r){const a=F.forwardRef((o,l)=>{const{children:d,...f}=o;if(F.isValidElement(d)){const p=m1(d),h=p1(f,d.props);return d.type!==F.Fragment&&(h.ref=l?fl(l,p):p),F.cloneElement(d,h)}return F.Children.count(d)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var f1=Symbol("radix.slottable");function h1(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===f1}function p1(r,a){const o={...a};for(const l in a){const d=r[l],f=a[l];/^on[A-Z]/.test(l)?d&&f?o[l]=(...h)=>{const g=f(...h);return d(...h),g}:d&&(o[l]=d):l==="style"?o[l]={...d,...f}:l==="className"&&(o[l]=[d,f].filter(Boolean).join(" "))}return{...r,...o}}function m1(r){var l,d;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=(d=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:d.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}var g1=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],hn=g1.reduce((r,a)=>{const o=c1(`Primitive.${a}`),l=F.forwardRef((d,f)=>{const{asChild:p,...h}=d,g=p?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),b.jsx(g,{...h,ref:f})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{});function A1(r,a){r&&v0.flushSync(()=>r.dispatchEvent(a))}function Ys(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 x1(r,a=globalThis==null?void 0:globalThis.document){const o=Ys(r);F.useEffect(()=>{const l=d=>{d.key==="Escape"&&o(d)};return a.addEventListener("keydown",l,{capture:!0}),()=>a.removeEventListener("keydown",l,{capture:!0})},[o,a])}var v1="DismissableLayer",r0="dismissableLayer.update",y1="dismissableLayer.pointerDownOutside",_1="dismissableLayer.focusOutside",$p,oA=F.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),sA=F.forwardRef((r,a)=>{const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:f,onInteractOutside:p,onDismiss:h,...g}=r,m=F.useContext(oA),[v,y]=F.useState(null),w=(v==null?void 0:v.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,B]=F.useState({}),T=vr(a,H=>y(H)),C=Array.from(m.layers),[k]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),D=C.indexOf(k),P=v?C.indexOf(v):-1,S=m.layersWithOutsidePointerEventsDisabled.size>0,N=P>=D,I=C1(H=>{const j=H.target,ee=[...m.branches].some(Z=>Z.contains(j));!N||ee||(d==null||d(H),p==null||p(H),H.defaultPrevented||h==null||h())},w),z=E1(H=>{const j=H.target;[...m.branches].some(Z=>Z.contains(j))||(f==null||f(H),p==null||p(H),H.defaultPrevented||h==null||h())},w);return x1(H=>{P===m.layers.size-1&&(l==null||l(H),!H.defaultPrevented&&h&&(H.preventDefault(),h()))},w),F.useEffect(()=>{if(v)return o&&(m.layersWithOutsidePointerEventsDisabled.size===0&&($p=w.body.style.pointerEvents,w.body.style.pointerEvents="none"),m.layersWithOutsidePointerEventsDisabled.add(v)),m.layers.add(v),Yp(),()=>{o&&m.layersWithOutsidePointerEventsDisabled.size===1&&(w.body.style.pointerEvents=$p)}},[v,w,o,m]),F.useEffect(()=>()=>{v&&(m.layers.delete(v),m.layersWithOutsidePointerEventsDisabled.delete(v),Yp())},[v,m]),F.useEffect(()=>{const H=()=>B({});return document.addEventListener(r0,H),()=>document.removeEventListener(r0,H)},[]),b.jsx(hn.div,{...g,ref:T,style:{pointerEvents:S?N?"auto":"none":void 0,...r.style},onFocusCapture:un(r.onFocusCapture,z.onFocusCapture),onBlurCapture:un(r.onBlurCapture,z.onBlurCapture),onPointerDownCapture:un(r.onPointerDownCapture,I.onPointerDownCapture)})});sA.displayName=v1;var w1="DismissableLayerBranch",b1=F.forwardRef((r,a)=>{const o=F.useContext(oA),l=F.useRef(null),d=vr(a,l);return F.useEffect(()=>{const f=l.current;if(f)return o.branches.add(f),()=>{o.branches.delete(f)}},[o.branches]),b.jsx(hn.div,{...r,ref:d})});b1.displayName=w1;function C1(r,a=globalThis==null?void 0:globalThis.document){const o=Ys(r),l=F.useRef(!1),d=F.useRef(()=>{});return F.useEffect(()=>{const f=h=>{if(h.target&&!l.current){let g=function(){aA(y1,o,m,{discrete:!0})};const m={originalEvent:h};h.pointerType==="touch"?(a.removeEventListener("click",d.current),d.current=g,a.addEventListener("click",d.current,{once:!0})):g()}else a.removeEventListener("click",d.current);l.current=!1},p=window.setTimeout(()=>{a.addEventListener("pointerdown",f)},0);return()=>{window.clearTimeout(p),a.removeEventListener("pointerdown",f),a.removeEventListener("click",d.current)}},[a,o]),{onPointerDownCapture:()=>l.current=!0}}function E1(r,a=globalThis==null?void 0:globalThis.document){const o=Ys(r),l=F.useRef(!1);return F.useEffect(()=>{const d=f=>{f.target&&!l.current&&aA(_1,o,{originalEvent:f},{discrete:!1})};return a.addEventListener("focusin",d),()=>a.removeEventListener("focusin",d)},[a,o]),{onFocusCapture:()=>l.current=!0,onBlurCapture:()=>l.current=!1}}function Yp(){const r=new CustomEvent(r0);document.dispatchEvent(r)}function aA(r,a,o,{discrete:l}){const d=o.originalEvent.target,f=new CustomEvent(r,{bubbles:!1,cancelable:!0,detail:o});a&&d.addEventListener(r,a,{once:!0}),l?A1(d,f):d.dispatchEvent(f)}var Of="focusScope.autoFocusOnMount",jf="focusScope.autoFocusOnUnmount",Xp={bubbles:!1,cancelable:!0},k1="FocusScope",lA=F.forwardRef((r,a)=>{const{loop:o=!1,trapped:l=!1,onMountAutoFocus:d,onUnmountAutoFocus:f,...p}=r,[h,g]=F.useState(null),m=Ys(d),v=Ys(f),y=F.useRef(null),w=vr(a,C=>g(C)),B=F.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;F.useEffect(()=>{if(l){let C=function(S){if(B.paused||!h)return;const N=S.target;h.contains(N)?y.current=N:lo(y.current,{select:!0})},k=function(S){if(B.paused||!h)return;const N=S.relatedTarget;N!==null&&(h.contains(N)||lo(y.current,{select:!0}))},D=function(S){if(document.activeElement===document.body)for(const I of S)I.removedNodes.length>0&&lo(h)};document.addEventListener("focusin",C),document.addEventListener("focusout",k);const P=new MutationObserver(D);return h&&P.observe(h,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",C),document.removeEventListener("focusout",k),P.disconnect()}}},[l,h,B.paused]),F.useEffect(()=>{if(h){em.add(B);const C=document.activeElement;if(!h.contains(C)){const D=new CustomEvent(Of,Xp);h.addEventListener(Of,m),h.dispatchEvent(D),D.defaultPrevented||(S1(R1(uA(h)),{select:!0}),document.activeElement===C&&lo(h))}return()=>{h.removeEventListener(Of,m),setTimeout(()=>{const D=new CustomEvent(jf,Xp);h.addEventListener(jf,v),h.dispatchEvent(D),D.defaultPrevented||lo(C??document.body,{select:!0}),h.removeEventListener(jf,v),em.remove(B)},0)}}},[h,m,v,B]);const T=F.useCallback(C=>{if(!o&&!l||B.paused)return;const k=C.key==="Tab"&&!C.altKey&&!C.ctrlKey&&!C.metaKey,D=document.activeElement;if(k&&D){const P=C.currentTarget,[S,N]=B1(P);S&&N?!C.shiftKey&&D===N?(C.preventDefault(),o&&lo(S,{select:!0})):C.shiftKey&&D===S&&(C.preventDefault(),o&&lo(N,{select:!0})):D===P&&C.preventDefault()}},[o,l,B.paused]);return b.jsx(hn.div,{tabIndex:-1,...p,ref:w,onKeyDown:T})});lA.displayName=k1;function S1(r,{select:a=!1}={}){const o=document.activeElement;for(const l of r)if(lo(l,{select:a}),document.activeElement!==o)return}function B1(r){const a=uA(r),o=Jp(a,r),l=Jp(a.reverse(),r);return[o,l]}function uA(r){const a=[],o=document.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const d=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||d?NodeFilter.FILTER_SKIP:l.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)a.push(o.currentNode);return a}function Jp(r,a){for(const o of r)if(!P1(o,{upTo:a}))return o}function P1(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 T1(r){return r instanceof HTMLInputElement&&"select"in r}function lo(r,{select:a=!1}={}){if(r&&r.focus){const o=document.activeElement;r.focus({preventScroll:!0}),r!==o&&T1(r)&&a&&r.select()}}var em=D1();function D1(){let r=[];return{add(a){const o=r[0];a!==o&&(o==null||o.pause()),r=tm(r,a),r.unshift(a)},remove(a){var o;r=tm(r,a),(o=r[0])==null||o.resume()}}}function tm(r,a){const o=[...r],l=o.indexOf(a);return l!==-1&&o.splice(l,1),o}function R1(r){return r.filter(a=>a.tagName!=="A")}var F1="Portal",cA=F.forwardRef((r,a)=>{var h;const{container:o,...l}=r,[d,f]=F.useState(!1);$s(()=>f(!0),[]);const p=o||d&&((h=globalThis==null?void 0:globalThis.document)==null?void 0:h.body);return p?jg.createPortal(b.jsx(hn.div,{...l,ref:a}),p):null});cA.displayName=F1;function N1(r,a){return F.useReducer((o,l)=>a[o][l]??o,r)}var ta=r=>{const{present:a,children:o}=r,l=L1(a),d=typeof o=="function"?o({present:l.isPresent}):F.Children.only(o),f=vr(l.ref,M1(d));return typeof o=="function"||l.isPresent?F.cloneElement(d,{ref:f}):null};ta.displayName="Presence";function L1(r){const[a,o]=F.useState(),l=F.useRef(null),d=F.useRef(r),f=F.useRef("none"),p=r?"mounted":"unmounted",[h,g]=N1(p,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return F.useEffect(()=>{const m=Mu(l.current);f.current=h==="mounted"?m:"none"},[h]),$s(()=>{const m=l.current,v=d.current;if(v!==r){const w=f.current,B=Mu(m);r?g("MOUNT"):B==="none"||(m==null?void 0:m.display)==="none"?g("UNMOUNT"):g(v&&w!==B?"ANIMATION_OUT":"UNMOUNT"),d.current=r}},[r,g]),$s(()=>{if(a){let m;const v=a.ownerDocument.defaultView??window,y=B=>{const C=Mu(l.current).includes(CSS.escape(B.animationName));if(B.target===a&&C&&(g("ANIMATION_END"),!d.current)){const k=a.style.animationFillMode;a.style.animationFillMode="forwards",m=v.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=k)})}},w=B=>{B.target===a&&(f.current=Mu(l.current))};return a.addEventListener("animationstart",w),a.addEventListener("animationcancel",y),a.addEventListener("animationend",y),()=>{v.clearTimeout(m),a.removeEventListener("animationstart",w),a.removeEventListener("animationcancel",y),a.removeEventListener("animationend",y)}}else g("ANIMATION_END")},[a,g]),{isPresent:["mounted","unmountSuspended"].includes(h),ref:F.useCallback(m=>{l.current=m?getComputedStyle(m):null,o(m)},[])}}function Mu(r){return(r==null?void 0:r.animationName)||"none"}function M1(r){var l,d;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=(d=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:d.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}var zf=0;function I1(){F.useEffect(()=>{const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",r[0]??nm()),document.body.insertAdjacentElement("beforeend",r[1]??nm()),zf++,()=>{zf===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),zf--}},[])}function nm(){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 Yr=function(){return Yr=Object.assign||function(a){for(var o,l=1,d=arguments.length;l"u")return ew;var a=tw(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])}},rw=pA(),qs="data-scroll-locked",iw=function(r,a,o,l){var d=r.left,f=r.top,p=r.right,h=r.gap;return o===void 0&&(o="margin"),` + */const jy=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Hg=y0("x",jy);function zy({health:r,config:a,onSettingsClick:o,onMenuClick:l}){const d=(r==null?void 0:r.radio_connected)??!1,[f,p]=F.useState(!1),h=async()=>{p(!0);try{const g=await rt.reconnectRadio();g.connected&&wt.success("Reconnected",{description:g.message})}catch(g){wt.error("Reconnection failed",{description:g instanceof Error?g.message:"Check radio connection and power"})}finally{p(!1)}};return b.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 bg-[#252525] border-b border-[#333] text-xs",children:[l&&b.jsx("button",{onClick:l,className:"md:hidden p-1 bg-transparent border-none text-[#e0e0e0] cursor-pointer","aria-label":"Open menu",children:b.jsx(Oy,{className:"h-5 w-5"})}),b.jsx("h1",{className:"text-base font-semibold mr-auto",children:"RemoteTerm"}),b.jsxs("div",{className:"flex items-center gap-1 text-[#888]",children:[b.jsx("div",{className:`w-2 h-2 rounded-full ${d?"bg-[#4caf50]":"bg-[#666]"}`}),b.jsx("span",{className:"hidden lg:inline text-[#e0e0e0]",children:d?"Connected":"Disconnected"})]}),a&&b.jsxs("div",{className:"hidden lg:flex items-center gap-2 text-[#888]",children:[b.jsx("span",{className:"text-[#e0e0e0]",children:a.name||"Unnamed"}),b.jsx("span",{className:"font-mono text-[#888] cursor-pointer hover:text-[#4a9eff]",onClick:()=>{navigator.clipboard.writeText(a.public_key),wt.success("Public key copied!")},title:"Click to copy public key",children:a.public_key.toLowerCase()})]}),!d&&b.jsx("button",{onClick:h,disabled:f,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:f?"Reconnecting...":"Reconnect"}),b.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:[b.jsx("span",{role:"img","aria-label":"Settings",children:"🔧"})," ","Radio & Config"]})]})}const e0=2,Hy={text:"🛜",background:"#444444",textColor:"#ffffff"};function Vy(r){let a=0;for(let o=0;o>8)%30,d=35+(a>>16)%20,f=`hsl(${o}, ${l}%, ${d}%)`,p=d<45?"#ffffff":"#000000";return{background:f,text:p}}function qy(r,a,o){if(o===e0)return Hy;const l=Zy(r,a),d=Wy(a);return{text:l,background:d.background,textColor:d.text}}function t0({name:r,publicKey:a,size:o=28,contactType:l}){const d=qy(r,a,l);return b.jsx("div",{className:"flex items-center justify-center rounded-full font-semibold flex-shrink-0 select-none",style:{backgroundColor:d.background,color:d.textColor,width:o,height:o,fontSize:o*.45},children:d.text})}const Vg="remoteterm-favorites";function jc(){try{const r=localStorage.getItem(Vg);return r?JSON.parse(r):[]}catch{return[]}}function Ug(r){try{localStorage.setItem(Vg,JSON.stringify(r))}catch{}}function Gy(r,a){const o=jc();if(o.some(d=>d.type===r&&d.id===a))return o;const l=[...o,{type:r,id:a}];return Ug(l),l}function Ky(r,a){const l=jc().filter(d=>!(d.type===r&&d.id===a));return Ug(l),l}function Zs(r,a,o){return r.some(l=>l.type===a&&l.id===o)}function Qy(r,a){return jc().some(l=>l.type===r&&l.id===a)?Ky(r,a):Gy(r,a)}function Zg(r){var a,o,l="";if(typeof r=="string"||typeof r=="number")l+=r;else if(typeof r=="object")if(Array.isArray(r)){var d=r.length;for(a=0;a{const o=new Array(r.length+a.length);for(let l=0;l({classGroupId:r,validator:a}),qg=(r=new Map,a=null,o)=>({nextPart:r,validators:a,classGroupId:o}),Dc="-",Hp=[],Xy="arbitrary..",Jy=r=>{const a=t_(r),{conflictingClassGroups:o,conflictingClassGroupModifiers:l}=r;return{getClassGroupId:p=>{if(p.startsWith("[")&&p.endsWith("]"))return e_(p);const h=p.split(Dc),g=h[0]===""&&h.length>1?1:0;return Gg(h,g,a)},getConflictingClassGroupIds:(p,h)=>{if(h){const g=l[p],m=o[p];return g?m?$y(m,g):g:m||Hp}return o[p]||Hp}}},Gg=(r,a,o)=>{if(r.length-a===0)return o.classGroupId;const d=r[a],f=o.nextPart.get(d);if(f){const m=Gg(r,a+1,f);if(m)return m}const p=o.validators;if(p===null)return;const h=a===0?r.join(Dc):r.slice(a).join(Dc),g=p.length;for(let m=0;mr.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=r.slice(1,-1),o=a.indexOf(":"),l=a.slice(0,o);return l?Xy+l:void 0})(),t_=r=>{const{theme:a,classGroups:o}=r;return n_(o,a)},n_=(r,a)=>{const o=qg();for(const l in r){const d=r[l];_0(d,o,l,a)}return o},_0=(r,a,o,l)=>{const d=r.length;for(let f=0;f{if(typeof r=="string"){i_(r,a,o);return}if(typeof r=="function"){o_(r,a,o,l);return}s_(r,a,o,l)},i_=(r,a,o)=>{const l=r===""?a:Kg(a,r);l.classGroupId=o},o_=(r,a,o,l)=>{if(a_(r)){_0(r(l),a,o,l);return}a.validators===null&&(a.validators=[]),a.validators.push(Yy(o,r))},s_=(r,a,o,l)=>{const d=Object.entries(r),f=d.length;for(let p=0;p{let o=r;const l=a.split(Dc),d=l.length;for(let f=0;f"isThemeGetter"in r&&r.isThemeGetter===!0,l_=r=>{if(r<1)return{get:()=>{},set:()=>{}};let a=0,o=Object.create(null),l=Object.create(null);const d=(f,p)=>{o[f]=p,a++,a>r&&(a=0,l=o,o=Object.create(null))};return{get(f){let p=o[f];if(p!==void 0)return p;if((p=l[f])!==void 0)return d(f,p),p},set(f,p){f in o?o[f]=p:d(f,p)}}},n0="!",Vp=":",u_=[],Up=(r,a,o,l,d)=>({modifiers:r,hasImportantModifier:a,baseClassName:o,maybePostfixModifierPosition:l,isExternal:d}),c_=r=>{const{prefix:a,experimentalParseClassName:o}=r;let l=d=>{const f=[];let p=0,h=0,g=0,m;const v=d.length;for(let C=0;Cg?m-g:void 0;return Up(f,B,w,T)};if(a){const d=a+Vp,f=l;l=p=>p.startsWith(d)?f(p.slice(d.length)):Up(u_,!1,p,void 0,!0)}if(o){const d=l;l=f=>o({className:f,parseClassName:d})}return l},d_=r=>{const a=new Map;return r.orderSensitiveModifiers.forEach((o,l)=>{a.set(o,1e6+l)}),o=>{const l=[];let d=[];for(let f=0;f0&&(d.sort(),l.push(...d),d=[]),l.push(p)):d.push(p)}return d.length>0&&(d.sort(),l.push(...d)),l}},f_=r=>({cache:l_(r.cacheSize),parseClassName:c_(r),sortModifiers:d_(r),...Jy(r)}),h_=/\s+/,p_=(r,a)=>{const{parseClassName:o,getClassGroupId:l,getConflictingClassGroupIds:d,sortModifiers:f}=a,p=[],h=r.trim().split(h_);let g="";for(let m=h.length-1;m>=0;m-=1){const v=h[m],{isExternal:y,modifiers:w,hasImportantModifier:B,baseClassName:T,maybePostfixModifierPosition:C}=o(v);if(y){g=v+(g.length>0?" "+g:g);continue}let k=!!C,D=l(k?T.substring(0,C):T);if(!D){if(!k){g=v+(g.length>0?" "+g:g);continue}if(D=l(T),!D){g=v+(g.length>0?" "+g:g);continue}k=!1}const P=w.length===0?"":w.length===1?w[0]:f(w).join(":"),S=B?P+n0:P,N=S+D;if(p.indexOf(N)>-1)continue;p.push(N);const I=d(D,k);for(let z=0;z0?" "+g:g)}return g},m_=(...r)=>{let a=0,o,l,d="";for(;a{if(typeof r=="string")return r;let a,o="";for(let l=0;l{let o,l,d,f;const p=g=>{const m=a.reduce((v,y)=>y(v),r());return o=f_(m),l=o.cache.get,d=o.cache.set,f=h,h(g)},h=g=>{const m=l(g);if(m)return m;const v=p_(g,o);return d(g,v),v};return f=p,(...g)=>f(m_(...g))},A_=[],ln=r=>{const a=o=>o[r]||A_;return a.isThemeGetter=!0,a},$g=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Yg=/^\((?:(\w[\w-]*):)?(.+)\)$/i,x_=/^\d+\/\d+$/,v_=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,y_=/\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$/,__=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,w_=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,b_=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,js=r=>x_.test(r),st=r=>!!r&&!Number.isNaN(Number(r)),ao=r=>!!r&&Number.isInteger(Number(r)),Mf=r=>r.endsWith("%")&&st(r.slice(0,-1)),_i=r=>v_.test(r),C_=()=>!0,E_=r=>y_.test(r)&&!__.test(r),Xg=()=>!1,k_=r=>w_.test(r),S_=r=>b_.test(r),B_=r=>!Ie(r)&&!Oe(r),P_=r=>Js(r,tA,Xg),Ie=r=>$g.test(r),zo=r=>Js(r,nA,E_),If=r=>Js(r,N_,st),Zp=r=>Js(r,Jg,Xg),T_=r=>Js(r,eA,S_),Ru=r=>Js(r,rA,k_),Oe=r=>Yg.test(r),qa=r=>ea(r,nA),D_=r=>ea(r,L_),Wp=r=>ea(r,Jg),R_=r=>ea(r,tA),F_=r=>ea(r,eA),Fu=r=>ea(r,rA,!0),Js=(r,a,o)=>{const l=$g.exec(r);return l?l[1]?a(l[1]):o(l[2]):!1},ea=(r,a,o=!1)=>{const l=Yg.exec(r);return l?l[1]?a(l[1]):o:!1},Jg=r=>r==="position"||r==="percentage",eA=r=>r==="image"||r==="url",tA=r=>r==="length"||r==="size"||r==="bg-size",nA=r=>r==="length",N_=r=>r==="number",L_=r=>r==="family-name",rA=r=>r==="shadow",M_=()=>{const r=ln("color"),a=ln("font"),o=ln("text"),l=ln("font-weight"),d=ln("tracking"),f=ln("leading"),p=ln("breakpoint"),h=ln("container"),g=ln("spacing"),m=ln("radius"),v=ln("shadow"),y=ln("inset-shadow"),w=ln("text-shadow"),B=ln("drop-shadow"),T=ln("blur"),C=ln("perspective"),k=ln("aspect"),D=ln("ease"),P=ln("animate"),S=()=>["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(),Oe,Ie],z=()=>["auto","hidden","clip","visible","scroll"],H=()=>["auto","contain","none"],j=()=>[Oe,Ie,g],ee=()=>[js,"full","auto",...j()],Z=()=>[ao,"none","subgrid",Oe,Ie],V=()=>["auto",{span:["full",ao,Oe,Ie]},ao,Oe,Ie],ne=()=>[ao,"auto",Oe,Ie],J=()=>["auto","min","max","fr",Oe,Ie],ie=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],he=()=>["start","end","center","stretch","center-safe","end-safe"],ae=()=>["auto",...j()],pe=()=>[js,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...j()],G=()=>[r,Oe,Ie],Y=()=>[...N(),Wp,Zp,{position:[Oe,Ie]}],q=()=>["no-repeat",{repeat:["","x","y","space","round"]}],R=()=>["auto","cover","contain",R_,P_,{size:[Oe,Ie]}],U=()=>[Mf,qa,zo],K=()=>["","none","full",m,Oe,Ie],$=()=>["",st,qa,zo],de=()=>["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,Mf,Wp,Zp],Ae=()=>["","none",T,Oe,Ie],We=()=>["none",st,Oe,Ie],$e=()=>["none",st,Oe,Ie],bt=()=>[st,Oe,Ie],ft=()=>[js,"full",...j()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[_i],breakpoint:[_i],color:[C_],container:[_i],"drop-shadow":[_i],ease:["in","out","in-out"],font:[B_],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[_i],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[_i],shadow:[_i],spacing:["px",st],text:[_i],"text-shadow":[_i],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",js,Ie,Oe,k]}],container:["container"],columns:[{columns:[st,Ie,Oe,h]}],"break-after":[{"break-after":S()}],"break-before":[{"break-before":S()}],"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:H()}],"overscroll-x":[{"overscroll-x":H()}],"overscroll-y":[{"overscroll-y":H()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:ee()}],"inset-x":[{"inset-x":ee()}],"inset-y":[{"inset-y":ee()}],start:[{start:ee()}],end:[{end:ee()}],top:[{top:ee()}],right:[{right:ee()}],bottom:[{bottom:ee()}],left:[{left:ee()}],visibility:["visible","invisible","collapse"],z:[{z:[ao,"auto",Oe,Ie]}],basis:[{basis:[js,"full","auto",h,...j()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[st,js,"auto","initial","none",Ie]}],grow:[{grow:["",st,Oe,Ie]}],shrink:[{shrink:["",st,Oe,Ie]}],order:[{order:[ao,"first","last","none",Oe,Ie]}],"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":J()}],"auto-rows":[{"auto-rows":J()}],gap:[{gap:j()}],"gap-x":[{"gap-x":j()}],"gap-y":[{"gap-y":j()}],"justify-content":[{justify:[...ie(),"normal"]}],"justify-items":[{"justify-items":[...he(),"normal"]}],"justify-self":[{"justify-self":["auto",...he()]}],"align-content":[{content:["normal",...ie()]}],"align-items":[{items:[...he(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...he(),{baseline:["","last"]}]}],"place-content":[{"place-content":ie()}],"place-items":[{"place-items":[...he(),"baseline"]}],"place-self":[{"place-self":["auto",...he()]}],p:[{p:j()}],px:[{px:j()}],py:[{py:j()}],ps:[{ps:j()}],pe:[{pe:j()}],pt:[{pt:j()}],pr:[{pr:j()}],pb:[{pb:j()}],pl:[{pl:j()}],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":j()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":j()}],"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:[p]},...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,qa,zo]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[l,Oe,If]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Mf,Ie]}],"font-family":[{font:[D_,Ie,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:[d,Oe,Ie]}],"line-clamp":[{"line-clamp":[st,"none",Oe,If]}],leading:[{leading:[f,...j()]}],"list-image":[{"list-image":["none",Oe,Ie]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Oe,Ie]}],"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:[...de(),"wavy"]}],"text-decoration-thickness":[{decoration:[st,"from-font","auto",Oe,zo]}],"text-decoration-color":[{decoration:G()}],"underline-offset":[{"underline-offset":[st,"auto",Oe,Ie]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Oe,Ie]}],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",Oe,Ie]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Y()}],"bg-repeat":[{bg:q()}],"bg-size":[{bg:R()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ao,Oe,Ie],radial:["",Oe,Ie],conic:[ao,Oe,Ie]},F_,T_]}],"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:K()}],"rounded-s":[{"rounded-s":K()}],"rounded-e":[{"rounded-e":K()}],"rounded-t":[{"rounded-t":K()}],"rounded-r":[{"rounded-r":K()}],"rounded-b":[{"rounded-b":K()}],"rounded-l":[{"rounded-l":K()}],"rounded-ss":[{"rounded-ss":K()}],"rounded-se":[{"rounded-se":K()}],"rounded-ee":[{"rounded-ee":K()}],"rounded-es":[{"rounded-es":K()}],"rounded-tl":[{"rounded-tl":K()}],"rounded-tr":[{"rounded-tr":K()}],"rounded-br":[{"rounded-br":K()}],"rounded-bl":[{"rounded-bl":K()}],"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:[...de(),"hidden","none"]}],"divide-style":[{divide:[...de(),"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:[...de(),"none","hidden"]}],"outline-offset":[{"outline-offset":[st,Oe,Ie]}],"outline-w":[{outline:["",st,qa,zo]}],"outline-color":[{outline:G()}],shadow:[{shadow:["","none",v,Fu,Ru]}],"shadow-color":[{shadow:G()}],"inset-shadow":[{"inset-shadow":["none",y,Fu,Ru]}],"inset-shadow-color":[{"inset-shadow":G()}],"ring-w":[{ring:$()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:G()}],"ring-offset-w":[{"ring-offset":[st,zo]}],"ring-offset-color":[{"ring-offset":G()}],"inset-ring-w":[{"inset-ring":$()}],"inset-ring-color":[{"inset-ring":G()}],"text-shadow":[{"text-shadow":["none",w,Fu,Ru]}],"text-shadow-color":[{"text-shadow":G()}],opacity:[{opacity:[st,Oe,Ie]}],"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":[Oe,Ie]}],"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:Y()}],"mask-repeat":[{mask:q()}],"mask-size":[{mask:R()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Oe,Ie]}],filter:[{filter:["","none",Oe,Ie]}],blur:[{blur:Ae()}],brightness:[{brightness:[st,Oe,Ie]}],contrast:[{contrast:[st,Oe,Ie]}],"drop-shadow":[{"drop-shadow":["","none",B,Fu,Ru]}],"drop-shadow-color":[{"drop-shadow":G()}],grayscale:[{grayscale:["",st,Oe,Ie]}],"hue-rotate":[{"hue-rotate":[st,Oe,Ie]}],invert:[{invert:["",st,Oe,Ie]}],saturate:[{saturate:[st,Oe,Ie]}],sepia:[{sepia:["",st,Oe,Ie]}],"backdrop-filter":[{"backdrop-filter":["","none",Oe,Ie]}],"backdrop-blur":[{"backdrop-blur":Ae()}],"backdrop-brightness":[{"backdrop-brightness":[st,Oe,Ie]}],"backdrop-contrast":[{"backdrop-contrast":[st,Oe,Ie]}],"backdrop-grayscale":[{"backdrop-grayscale":["",st,Oe,Ie]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[st,Oe,Ie]}],"backdrop-invert":[{"backdrop-invert":["",st,Oe,Ie]}],"backdrop-opacity":[{"backdrop-opacity":[st,Oe,Ie]}],"backdrop-saturate":[{"backdrop-saturate":[st,Oe,Ie]}],"backdrop-sepia":[{"backdrop-sepia":["",st,Oe,Ie]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":j()}],"border-spacing-x":[{"border-spacing-x":j()}],"border-spacing-y":[{"border-spacing-y":j()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Oe,Ie]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[st,"initial",Oe,Ie]}],ease:[{ease:["linear","initial",D,Oe,Ie]}],delay:[{delay:[st,Oe,Ie]}],animate:[{animate:["none",P,Oe,Ie]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[C,Oe,Ie]}],"perspective-origin":[{"perspective-origin":I()}],rotate:[{rotate:We()}],"rotate-x":[{"rotate-x":We()}],"rotate-y":[{"rotate-y":We()}],"rotate-z":[{"rotate-z":We()}],scale:[{scale:$e()}],"scale-x":[{"scale-x":$e()}],"scale-y":[{"scale-y":$e()}],"scale-z":[{"scale-z":$e()}],"scale-3d":["scale-3d"],skew:[{skew:bt()}],"skew-x":[{"skew-x":bt()}],"skew-y":[{"skew-y":bt()}],transform:[{transform:[Oe,Ie,"","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",Oe,Ie]}],"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":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"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",Oe,Ie]}],fill:[{fill:["none",...G()]}],"stroke-w":[{stroke:[st,qa,zo,If]}],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"]}},I_=g_(M_);function at(...r){return I_(Wg(r))}const Xt=F.forwardRef(({className:r,type:a,...o},l)=>b.jsx("input",{type:a,className:at("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}));Xt.displayName="Input";function qp(r,a){if(typeof r=="function")return r(a);r!=null&&(r.current=a)}function fl(...r){return a=>{let o=!1;const l=r.map(d=>{const f=qp(d,a);return!o&&typeof f=="function"&&(o=!0),f});if(o)return()=>{for(let d=0;d{let{children:f,...p}=l;iA(f)&&typeof Rc=="function"&&(f=Rc(f._payload));const h=F.Children.toArray(f),g=h.find(U_);if(g){const m=g.props.children,v=h.map(y=>y===g?F.Children.count(m)>1?F.Children.only(null):F.isValidElement(m)?m.props.children:null:y);return b.jsx(a,{...p,ref:d,children:F.isValidElement(m)?F.cloneElement(m,void 0,v):null})}return b.jsx(a,{...p,ref:d,children:f})});return o.displayName=`${r}.Slot`,o}var z_=w0("Slot");function H_(r){const a=F.forwardRef((o,l)=>{let{children:d,...f}=o;if(iA(d)&&typeof Rc=="function"&&(d=Rc(d._payload)),F.isValidElement(d)){const p=W_(d),h=Z_(f,d.props);return d.type!==F.Fragment&&(h.ref=l?fl(l,p):p),F.cloneElement(d,h)}return F.Children.count(d)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var V_=Symbol("radix.slottable");function U_(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===V_}function Z_(r,a){const o={...a};for(const l in a){const d=r[l],f=a[l];/^on[A-Z]/.test(l)?d&&f?o[l]=(...h)=>{const g=f(...h);return d(...h),g}:d&&(o[l]=d):l==="style"?o[l]={...d,...f}:l==="className"&&(o[l]=[d,f].filter(Boolean).join(" "))}return{...r,...o}}function W_(r){var l,d;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=(d=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:d.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}const Gp=r=>typeof r=="boolean"?`${r}`:r===0?"0":r,Kp=Wg,b0=(r,a)=>o=>{var l;if((a==null?void 0:a.variants)==null)return Kp(r,o==null?void 0:o.class,o==null?void 0:o.className);const{variants:d,defaultVariants:f}=a,p=Object.keys(d).map(m=>{const v=o==null?void 0:o[m],y=f==null?void 0:f[m];if(v===null)return null;const w=Gp(v)||Gp(y);return d[m][w]}),h=o&&Object.entries(o).reduce((m,v)=>{let[y,w]=v;return w===void 0||(m[y]=w),m},{}),g=a==null||(l=a.compoundVariants)===null||l===void 0?void 0:l.reduce((m,v)=>{let{class:y,className:w,...B}=v;return Object.entries(B).every(T=>{let[C,k]=T;return Array.isArray(k)?k.includes({...f,...h}[C]):{...f,...h}[C]===k})?[...m,y,w]:m},[]);return Kp(r,p,g,o==null?void 0:o.class,o==null?void 0:o.className)},q_=b0("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"}}),Pn=F.forwardRef(({className:r,variant:a,size:o,asChild:l=!1,...d},f)=>{const p=l?z_:"button";return b.jsx(p,{className:at(q_({variant:a,size:o,className:r})),ref:f,...d})});Pn.displayName="Button";function Nu(r){return r>=A0?`${r}+`:`${r}`}function G_(){try{return localStorage.getItem("remoteterm-sortOrder")==="alpha"?"alpha":"recent"}catch{return"recent"}}function K_(r){try{localStorage.setItem("remoteterm-sortOrder",r)}catch{}}function Q_({contacts:r,channels:a,activeConversation:o,onSelectConversation:l,onNewMessage:d,lastMessageTimes:f,unreadCounts:p,mentions:h,showCracker:g,crackerRunning:m,onToggleCracker:v,onMarkAllRead:y,favorites:w}){const[B,T]=F.useState(G_),[C,k]=F.useState(""),D=()=>{const Y=B==="alpha"?"recent":"alpha";T(Y),K_(Y)},P=Y=>{k(""),l(Y)},S=(Y,q)=>(o==null?void 0:o.type)===Y&&(o==null?void 0:o.id)===q,N=(Y,q)=>{const R=Rr(Y,q);return p[R]||0},I=(Y,q)=>{const R=Rr(Y,q);return h[R]||!1},z=(Y,q)=>{const R=Rr(Y,q);return f[R]||0},H=a.reduce((Y,q)=>(Y.some(R=>R.name===q.name)||Y.push(q),Y),[]),j=r.filter(Y=>Y.public_key&&Y.public_key.length>0).sort((Y,q)=>Y.name&&!q.name?-1:!Y.name&&q.name?1:(Y.name||"").localeCompare(q.name||"")).reduce((Y,q)=>{const R=Ks(q.public_key);return Y.some(U=>Ks(U.public_key)===R)||Y.push(q),Y},[]),ee=[...H].sort((Y,q)=>{if(Y.name==="Public")return-1;if(q.name==="Public")return 1;if(B==="recent"){const R=z("channel",Y.key),U=z("channel",q.key);if(R&&U)return U-R;if(R&&!U)return-1;if(!R&&U)return 1}return Y.name.localeCompare(q.name)}),Z=[...j].sort((Y,q)=>{const R=Y.type===e0,U=q.type===e0;if(R&&!U)return 1;if(!R&&U)return-1;if(R&&U)return(Y.name||Y.public_key).localeCompare(q.name||q.public_key);if(B==="recent"){const K=z("contact",Y.public_key),$=z("contact",q.public_key);if(K&&$)return $-K;if(K&&!$)return-1;if(!K&&$)return 1}return(Y.name||Y.public_key).localeCompare(q.name||q.public_key)}),V=C.toLowerCase().trim(),ne=V?ee.filter(Y=>Y.name.toLowerCase().includes(V)||Y.key.toLowerCase().includes(V)):ee,J=V?Z.filter(Y=>{var q;return((q=Y.name)==null?void 0:q.toLowerCase().includes(V))||Y.public_key.toLowerCase().includes(V)}):Z,ie=ne.filter(Y=>Zs(w,"channel",Y.key)),he=J.filter(Y=>Zs(w,"contact",Y.public_key)),ae=ne.filter(Y=>!Zs(w,"channel",Y.key)),pe=J.filter(Y=>!Zs(w,"contact",Y.public_key)),G=[...ie.map(Y=>({type:"channel",channel:Y})),...he.map(Y=>({type:"contact",contact:Y}))].sort((Y,q)=>{const R=Y.type==="channel"?z("channel",Y.channel.key):z("contact",Y.contact.public_key),U=q.type==="channel"?z("channel",q.channel.key):z("contact",q.contact.public_key);if(R&&U)return U-R;if(R&&!U)return-1;if(!R&&U)return 1;const K=Y.type==="channel"?Y.channel.name:Y.contact.name||Y.contact.public_key,$=q.type==="channel"?q.channel.name:q.contact.name||q.contact.public_key;return K.localeCompare($)});return b.jsxs("div",{className:"sidebar w-60 h-full min-h-0 bg-card border-r border-border flex flex-col",children:[b.jsxs("div",{className:"flex justify-between items-center px-3 py-3 border-b border-border",children:[b.jsx("h2",{className:"text-xs uppercase text-muted-foreground font-medium",children:"Conversations"}),b.jsx(Pn,{variant:"ghost",size:"sm",onClick:d,title:"New Message",className:"h-6 w-6 p-0 text-muted-foreground hover:text-foreground",children:"+"})]}),b.jsxs("div",{className:"relative px-3 py-2 border-b border-border",children:[b.jsx(Xt,{type:"text",placeholder:"Search...",value:C,onChange:Y=>k(Y.target.value),className:"h-8 text-sm pr-8"}),C&&b.jsx("button",{className:"absolute right-4 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground text-lg leading-none",onClick:()=>k(""),title:"Clear search",children:"×"})]}),b.jsxs("div",{className:"flex-1 overflow-y-auto",children:[!V&&b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("raw","raw")&&"bg-accent border-l-primary"),onClick:()=>P({type:"raw",id:"raw",name:"Raw Packet Feed"}),children:[b.jsx("span",{className:"text-muted-foreground text-xs",children:"📡"}),b.jsx("span",{className:"flex-1 truncate",children:"Packet Feed"})]}),!V&&b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("map","map")&&"bg-accent border-l-primary"),onClick:()=>P({type:"map",id:"map",name:"Node Map"}),children:[b.jsx("span",{className:"text-muted-foreground text-xs",children:"🗺️"}),b.jsx("span",{className:"flex-1 truncate",children:"Node Map"})]}),!V&&b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",g&&"bg-accent border-l-primary"),onClick:v,children:[b.jsx("span",{className:"text-muted-foreground text-xs",children:"🔓"}),b.jsxs("span",{className:"flex-1 truncate",children:[g?"Hide":"Show"," Room Finder",b.jsxs("span",{className:at("ml-1 text-xs",m?"text-green-500":"text-muted-foreground"),children:["(",m?"running":"stopped",")"]})]})]}),!V&&Object.keys(p).length>0&&b.jsxs("div",{className:"px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",onClick:y,children:[b.jsx("span",{className:"text-muted-foreground text-xs",children:"✓"}),b.jsx("span",{className:"flex-1 truncate text-muted-foreground",children:"Mark all as read"})]}),G.length>0&&b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:b.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Favorites"})}),G.map(Y=>{if(Y.type==="channel"){const q=Y.channel,R=N("channel",q.key),U=I("channel",q.key);return b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("channel",q.key)&&"bg-accent border-l-primary",R>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>P({type:"channel",id:q.key,name:q.name}),children:[b.jsx("span",{className:"name flex-1 truncate",children:q.name}),R>0&&b.jsx("span",{className:at("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:Nu(R)})]},`fav-chan-${q.key}`)}else{const q=Y.contact,R=N("contact",q.public_key),U=I("contact",q.public_key);return b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("contact",q.public_key)&&"bg-accent border-l-primary",R>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>P({type:"contact",id:q.public_key,name:Ei(q.name,q.public_key)}),children:[b.jsx(t0,{name:q.name,publicKey:q.public_key,size:24,contactType:q.type}),b.jsx("span",{className:"name flex-1 truncate",children:Ei(q.name,q.public_key)}),R>0&&b.jsx("span",{className:at("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:Nu(R)})]},`fav-contact-${q.public_key}`)}})]}),ae.length>0&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[b.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Channels"}),b.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:D,title:B==="alpha"?"Sort by recent":"Sort alphabetically",children:B==="alpha"?"A-Z":"⏱"})]}),ae.map(Y=>{const q=N("channel",Y.key),R=I("channel",Y.key);return b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("channel",Y.key)&&"bg-accent border-l-primary",q>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>P({type:"channel",id:Y.key,name:Y.name}),children:[b.jsx("span",{className:"name flex-1 truncate",children:Y.name}),q>0&&b.jsx("span",{className:at("text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",R?"bg-destructive text-destructive-foreground":"bg-primary text-primary-foreground"),children:Nu(q)})]},`chan-${Y.key}`)})]}),pe.length>0&&b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex justify-between items-center px-3 py-2 pt-3",children:[b.jsx("span",{className:"text-[11px] uppercase text-muted-foreground",children:"Contacts"}),ae.length===0&&b.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:D,title:B==="alpha"?"Sort by recent":"Sort alphabetically",children:B==="alpha"?"A-Z":"⏱"})]}),pe.map(Y=>{const q=N("contact",Y.public_key),R=I("contact",Y.public_key);return b.jsxs("div",{className:at("px-3 py-2.5 cursor-pointer flex items-center gap-2 border-l-2 border-transparent hover:bg-accent",S("contact",Y.public_key)&&"bg-accent border-l-primary",q>0&&"[&_.name]:font-bold [&_.name]:text-foreground"),onClick:()=>P({type:"contact",id:Y.public_key,name:Ei(Y.name,Y.public_key)}),children:[b.jsx(t0,{name:Y.name,publicKey:Y.public_key,size:24,contactType:Y.type}),b.jsx("span",{className:"name flex-1 truncate",children:Ei(Y.name,Y.public_key)}),q>0&&b.jsx("span",{className:at("text-[10px] font-semibold px-1.5 py-0.5 rounded-full min-w-[18px] text-center",R?"bg-destructive text-destructive-foreground":"bg-primary text-primary-foreground"),children:Nu(q)})]},Y.public_key)})]}),pe.length===0&&ae.length===0&&G.length===0&&b.jsx("div",{className:"p-5 text-center text-muted-foreground",children:V?"No matches found":"No conversations yet"})]})]})}function Qp(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 Qs(r){const a=new Date(r*1e3),o=new Date,l=a.toDateString()===o.toDateString(),d=a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return l?d:`${a.toLocaleDateString([],{month:"short",day:"numeric"})} ${d}`}function $_(r){if(!r||r.length===0)return[];const a=r.toUpperCase(),o=[];for(let l=0;lo&&d.type!==Oc?!1:d.public_key.toUpperCase().startsWith(l))}function Fr(r,a,o,l){if(r===null||a===null||o===null||l===null)return null;const d=6371,f=Lu(o-r),p=Lu(l-a),h=Math.sin(f/2)*Math.sin(f/2)+Math.cos(Lu(r))*Math.cos(Lu(o))*Math.sin(p/2)*Math.sin(p/2),g=2*Math.atan2(Math.sqrt(h),Math.sqrt(1-h));return d*g}function Lu(r){return r*Math.PI/180}function Ct(r,a){return!(r===null||a===null||r===0&&a===0)}function Go(r){return r<1?`${Math.round(r*1e3)}m`:`${r.toFixed(1)}km`}function X_(r,a,o){return a===null||o===null?r:[...r].sort((l,d)=>{const f=Fr(a,o,l.lat,l.lon),p=Fr(a,o,d.lat,d.lon);return f===null&&p===null?0:f===null?1:p===null?-1:f-p})}function J_(r){return!r||r.length===0?0:Math.floor(r.length/2)}function e1(r){if(!r||r.length===0)return{display:"",allDirect:!0,hasMultiple:!1};const a=r.map(p=>J_(p.path)).sort((p,h)=>p-h),o=a.every(p=>p===0),l=r.length>1;return{display:a.map(p=>p===0?"d":p.toString()).join("/"),allDirect:o,hasMultiple:l}}function t1(r,a,o,l){var C;const d=$_(r),f=a.publicKeyOrPrefix.toUpperCase().slice(0,2),p={name:a.name,prefix:f,lat:a.lat,lon:a.lon},h=((C=l==null?void 0:l.public_key)==null?void 0:C.toUpperCase().slice(0,2))||"??",g={name:(l==null?void 0:l.name)||"Unknown",prefix:h,lat:(l==null?void 0:l.lat)??null,lon:(l==null?void 0:l.lon)??null,publicKey:(l==null?void 0:l.public_key)??null},m=[];let v=a.lat,y=a.lon,w=!Ct(a.lat,a.lon);for(const k of d){const D=Y_(k,o,!0),P=X_(D,v,y);let S=null;const N=P.length===1&&Ct(P[0].lat,P[0].lon);!w&&N&&(S=Fr(v,y,P[0].lat,P[0].lon)),m.push({prefix:k,matches:P,distanceFromPrev:S}),P.length===0?(w=!0,v=null,y=null):P.length>1?(w=!0,Ct(P[0].lat,P[0].lon)?(v=P[0].lat,y=P[0].lon):(v=null,y=null)):Ct(P[0].lat,P[0].lon)?(w=!1,v=P[0].lat,y=P[0].lon):(w=!0,v=null,y=null)}const B=n1(p,m,g),T=!Ct(p.lat,p.lon)||!Ct(g.lat,g.lon)||m.some(k=>k.matches.length!==1||!Ct(k.matches[0].lat,k.matches[0].lon));return{sender:p,hops:m,receiver:g,totalDistances:B,hasGaps:T}}function n1(r,a,o){if(a.length===0){if(!Ct(r.lat,r.lon)||!Ct(o.lat,o.lon))return null;const m=Fr(r.lat,r.lon,o.lat,o.lon);return m!==null?[m]:null}let l=r.lat,d=r.lon,f=0;if(!Ct(l,d)){for(let m=0;m{const{children:p,...h}=f,g=F.useMemo(()=>h,Object.values(h));return b.jsx(o.Provider,{value:g,children:p})};l.displayName=r+"Provider";function d(f){const p=F.useContext(o);if(p)return p;if(a!==void 0)return a;throw new Error(`\`${f}\` must be used within \`${r}\``)}return[l,d]}function hl(r,a=[]){let o=[];function l(f,p){const h=F.createContext(p),g=o.length;o=[...o,p];const m=y=>{var D;const{scope:w,children:B,...T}=y,C=((D=w==null?void 0:w[r])==null?void 0:D[g])||h,k=F.useMemo(()=>T,Object.values(T));return b.jsx(C.Provider,{value:k,children:B})};m.displayName=f+"Provider";function v(y,w){var C;const B=((C=w==null?void 0:w[r])==null?void 0:C[g])||h,T=F.useContext(B);if(T)return T;if(p!==void 0)return p;throw new Error(`\`${y}\` must be used within \`${f}\``)}return[m,v]}const d=()=>{const f=o.map(p=>F.createContext(p));return function(h){const g=(h==null?void 0:h[r])||f;return F.useMemo(()=>({[`__scope${r}`]:{...h,[r]:g}}),[h,g])}};return d.scopeName=r,[l,i1(d,...a)]}function i1(...r){const a=r[0];if(r.length===1)return a;const o=()=>{const l=r.map(d=>({useScope:d(),scopeName:d.scopeName}));return function(f){const p=l.reduce((h,{useScope:g,scopeName:m})=>{const y=g(f)[`__scope${m}`];return{...h,...y}},{});return F.useMemo(()=>({[`__scope${a.scopeName}`]:p}),[p])}};return o.scopeName=a.scopeName,o}var $s=globalThis!=null&&globalThis.document?F.useLayoutEffect:()=>{},o1=g0[" useId ".trim().toString()]||(()=>{}),s1=0;function ll(r){const[a,o]=F.useState(o1());return $s(()=>{o(l=>l??String(s1++))},[r]),a?`radix-${a}`:""}var a1=g0[" useInsertionEffect ".trim().toString()]||$s;function zc({prop:r,defaultProp:a,onChange:o=()=>{},caller:l}){const[d,f,p]=l1({defaultProp:a,onChange:o}),h=r!==void 0,g=h?r:d;{const v=F.useRef(r!==void 0);F.useEffect(()=>{const y=v.current;y!==h&&console.warn(`${l} is changing from ${y?"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.`),v.current=h},[h,l])}const m=F.useCallback(v=>{var y;if(h){const w=u1(v)?v(r):v;w!==r&&((y=p.current)==null||y.call(p,w))}else f(v)},[h,r,f,p]);return[g,m]}function l1({defaultProp:r,onChange:a}){const[o,l]=F.useState(r),d=F.useRef(o),f=F.useRef(a);return a1(()=>{f.current=a},[a]),F.useEffect(()=>{var p;d.current!==o&&((p=f.current)==null||p.call(f,o),d.current=o)},[o,d]),[o,l,f]}function u1(r){return typeof r=="function"}function c1(r){const a=d1(r),o=F.forwardRef((l,d)=>{const{children:f,...p}=l,h=F.Children.toArray(f),g=h.find(h1);if(g){const m=g.props.children,v=h.map(y=>y===g?F.Children.count(m)>1?F.Children.only(null):F.isValidElement(m)?m.props.children:null:y);return b.jsx(a,{...p,ref:d,children:F.isValidElement(m)?F.cloneElement(m,void 0,v):null})}return b.jsx(a,{...p,ref:d,children:f})});return o.displayName=`${r}.Slot`,o}function d1(r){const a=F.forwardRef((o,l)=>{const{children:d,...f}=o;if(F.isValidElement(d)){const p=m1(d),h=p1(f,d.props);return d.type!==F.Fragment&&(h.ref=l?fl(l,p):p),F.cloneElement(d,h)}return F.Children.count(d)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var f1=Symbol("radix.slottable");function h1(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===f1}function p1(r,a){const o={...a};for(const l in a){const d=r[l],f=a[l];/^on[A-Z]/.test(l)?d&&f?o[l]=(...h)=>{const g=f(...h);return d(...h),g}:d&&(o[l]=d):l==="style"?o[l]={...d,...f}:l==="className"&&(o[l]=[d,f].filter(Boolean).join(" "))}return{...r,...o}}function m1(r){var l,d;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=(d=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:d.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}var g1=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],hn=g1.reduce((r,a)=>{const o=c1(`Primitive.${a}`),l=F.forwardRef((d,f)=>{const{asChild:p,...h}=d,g=p?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),b.jsx(g,{...h,ref:f})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{});function A1(r,a){r&&v0.flushSync(()=>r.dispatchEvent(a))}function Ys(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 x1(r,a=globalThis==null?void 0:globalThis.document){const o=Ys(r);F.useEffect(()=>{const l=d=>{d.key==="Escape"&&o(d)};return a.addEventListener("keydown",l,{capture:!0}),()=>a.removeEventListener("keydown",l,{capture:!0})},[o,a])}var v1="DismissableLayer",r0="dismissableLayer.update",y1="dismissableLayer.pointerDownOutside",_1="dismissableLayer.focusOutside",$p,oA=F.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),sA=F.forwardRef((r,a)=>{const{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:f,onInteractOutside:p,onDismiss:h,...g}=r,m=F.useContext(oA),[v,y]=F.useState(null),w=(v==null?void 0:v.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,B]=F.useState({}),T=vr(a,H=>y(H)),C=Array.from(m.layers),[k]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),D=C.indexOf(k),P=v?C.indexOf(v):-1,S=m.layersWithOutsidePointerEventsDisabled.size>0,N=P>=D,I=C1(H=>{const j=H.target,ee=[...m.branches].some(Z=>Z.contains(j));!N||ee||(d==null||d(H),p==null||p(H),H.defaultPrevented||h==null||h())},w),z=E1(H=>{const j=H.target;[...m.branches].some(Z=>Z.contains(j))||(f==null||f(H),p==null||p(H),H.defaultPrevented||h==null||h())},w);return x1(H=>{P===m.layers.size-1&&(l==null||l(H),!H.defaultPrevented&&h&&(H.preventDefault(),h()))},w),F.useEffect(()=>{if(v)return o&&(m.layersWithOutsidePointerEventsDisabled.size===0&&($p=w.body.style.pointerEvents,w.body.style.pointerEvents="none"),m.layersWithOutsidePointerEventsDisabled.add(v)),m.layers.add(v),Yp(),()=>{o&&m.layersWithOutsidePointerEventsDisabled.size===1&&(w.body.style.pointerEvents=$p)}},[v,w,o,m]),F.useEffect(()=>()=>{v&&(m.layers.delete(v),m.layersWithOutsidePointerEventsDisabled.delete(v),Yp())},[v,m]),F.useEffect(()=>{const H=()=>B({});return document.addEventListener(r0,H),()=>document.removeEventListener(r0,H)},[]),b.jsx(hn.div,{...g,ref:T,style:{pointerEvents:S?N?"auto":"none":void 0,...r.style},onFocusCapture:un(r.onFocusCapture,z.onFocusCapture),onBlurCapture:un(r.onBlurCapture,z.onBlurCapture),onPointerDownCapture:un(r.onPointerDownCapture,I.onPointerDownCapture)})});sA.displayName=v1;var w1="DismissableLayerBranch",b1=F.forwardRef((r,a)=>{const o=F.useContext(oA),l=F.useRef(null),d=vr(a,l);return F.useEffect(()=>{const f=l.current;if(f)return o.branches.add(f),()=>{o.branches.delete(f)}},[o.branches]),b.jsx(hn.div,{...r,ref:d})});b1.displayName=w1;function C1(r,a=globalThis==null?void 0:globalThis.document){const o=Ys(r),l=F.useRef(!1),d=F.useRef(()=>{});return F.useEffect(()=>{const f=h=>{if(h.target&&!l.current){let g=function(){aA(y1,o,m,{discrete:!0})};const m={originalEvent:h};h.pointerType==="touch"?(a.removeEventListener("click",d.current),d.current=g,a.addEventListener("click",d.current,{once:!0})):g()}else a.removeEventListener("click",d.current);l.current=!1},p=window.setTimeout(()=>{a.addEventListener("pointerdown",f)},0);return()=>{window.clearTimeout(p),a.removeEventListener("pointerdown",f),a.removeEventListener("click",d.current)}},[a,o]),{onPointerDownCapture:()=>l.current=!0}}function E1(r,a=globalThis==null?void 0:globalThis.document){const o=Ys(r),l=F.useRef(!1);return F.useEffect(()=>{const d=f=>{f.target&&!l.current&&aA(_1,o,{originalEvent:f},{discrete:!1})};return a.addEventListener("focusin",d),()=>a.removeEventListener("focusin",d)},[a,o]),{onFocusCapture:()=>l.current=!0,onBlurCapture:()=>l.current=!1}}function Yp(){const r=new CustomEvent(r0);document.dispatchEvent(r)}function aA(r,a,o,{discrete:l}){const d=o.originalEvent.target,f=new CustomEvent(r,{bubbles:!1,cancelable:!0,detail:o});a&&d.addEventListener(r,a,{once:!0}),l?A1(d,f):d.dispatchEvent(f)}var Of="focusScope.autoFocusOnMount",jf="focusScope.autoFocusOnUnmount",Xp={bubbles:!1,cancelable:!0},k1="FocusScope",lA=F.forwardRef((r,a)=>{const{loop:o=!1,trapped:l=!1,onMountAutoFocus:d,onUnmountAutoFocus:f,...p}=r,[h,g]=F.useState(null),m=Ys(d),v=Ys(f),y=F.useRef(null),w=vr(a,C=>g(C)),B=F.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;F.useEffect(()=>{if(l){let C=function(S){if(B.paused||!h)return;const N=S.target;h.contains(N)?y.current=N:lo(y.current,{select:!0})},k=function(S){if(B.paused||!h)return;const N=S.relatedTarget;N!==null&&(h.contains(N)||lo(y.current,{select:!0}))},D=function(S){if(document.activeElement===document.body)for(const I of S)I.removedNodes.length>0&&lo(h)};document.addEventListener("focusin",C),document.addEventListener("focusout",k);const P=new MutationObserver(D);return h&&P.observe(h,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",C),document.removeEventListener("focusout",k),P.disconnect()}}},[l,h,B.paused]),F.useEffect(()=>{if(h){em.add(B);const C=document.activeElement;if(!h.contains(C)){const D=new CustomEvent(Of,Xp);h.addEventListener(Of,m),h.dispatchEvent(D),D.defaultPrevented||(S1(R1(uA(h)),{select:!0}),document.activeElement===C&&lo(h))}return()=>{h.removeEventListener(Of,m),setTimeout(()=>{const D=new CustomEvent(jf,Xp);h.addEventListener(jf,v),h.dispatchEvent(D),D.defaultPrevented||lo(C??document.body,{select:!0}),h.removeEventListener(jf,v),em.remove(B)},0)}}},[h,m,v,B]);const T=F.useCallback(C=>{if(!o&&!l||B.paused)return;const k=C.key==="Tab"&&!C.altKey&&!C.ctrlKey&&!C.metaKey,D=document.activeElement;if(k&&D){const P=C.currentTarget,[S,N]=B1(P);S&&N?!C.shiftKey&&D===N?(C.preventDefault(),o&&lo(S,{select:!0})):C.shiftKey&&D===S&&(C.preventDefault(),o&&lo(N,{select:!0})):D===P&&C.preventDefault()}},[o,l,B.paused]);return b.jsx(hn.div,{tabIndex:-1,...p,ref:w,onKeyDown:T})});lA.displayName=k1;function S1(r,{select:a=!1}={}){const o=document.activeElement;for(const l of r)if(lo(l,{select:a}),document.activeElement!==o)return}function B1(r){const a=uA(r),o=Jp(a,r),l=Jp(a.reverse(),r);return[o,l]}function uA(r){const a=[],o=document.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const d=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||d?NodeFilter.FILTER_SKIP:l.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)a.push(o.currentNode);return a}function Jp(r,a){for(const o of r)if(!P1(o,{upTo:a}))return o}function P1(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 T1(r){return r instanceof HTMLInputElement&&"select"in r}function lo(r,{select:a=!1}={}){if(r&&r.focus){const o=document.activeElement;r.focus({preventScroll:!0}),r!==o&&T1(r)&&a&&r.select()}}var em=D1();function D1(){let r=[];return{add(a){const o=r[0];a!==o&&(o==null||o.pause()),r=tm(r,a),r.unshift(a)},remove(a){var o;r=tm(r,a),(o=r[0])==null||o.resume()}}}function tm(r,a){const o=[...r],l=o.indexOf(a);return l!==-1&&o.splice(l,1),o}function R1(r){return r.filter(a=>a.tagName!=="A")}var F1="Portal",cA=F.forwardRef((r,a)=>{var h;const{container:o,...l}=r,[d,f]=F.useState(!1);$s(()=>f(!0),[]);const p=o||d&&((h=globalThis==null?void 0:globalThis.document)==null?void 0:h.body);return p?jg.createPortal(b.jsx(hn.div,{...l,ref:a}),p):null});cA.displayName=F1;function N1(r,a){return F.useReducer((o,l)=>a[o][l]??o,r)}var ta=r=>{const{present:a,children:o}=r,l=L1(a),d=typeof o=="function"?o({present:l.isPresent}):F.Children.only(o),f=vr(l.ref,M1(d));return typeof o=="function"||l.isPresent?F.cloneElement(d,{ref:f}):null};ta.displayName="Presence";function L1(r){const[a,o]=F.useState(),l=F.useRef(null),d=F.useRef(r),f=F.useRef("none"),p=r?"mounted":"unmounted",[h,g]=N1(p,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return F.useEffect(()=>{const m=Mu(l.current);f.current=h==="mounted"?m:"none"},[h]),$s(()=>{const m=l.current,v=d.current;if(v!==r){const w=f.current,B=Mu(m);r?g("MOUNT"):B==="none"||(m==null?void 0:m.display)==="none"?g("UNMOUNT"):g(v&&w!==B?"ANIMATION_OUT":"UNMOUNT"),d.current=r}},[r,g]),$s(()=>{if(a){let m;const v=a.ownerDocument.defaultView??window,y=B=>{const C=Mu(l.current).includes(CSS.escape(B.animationName));if(B.target===a&&C&&(g("ANIMATION_END"),!d.current)){const k=a.style.animationFillMode;a.style.animationFillMode="forwards",m=v.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=k)})}},w=B=>{B.target===a&&(f.current=Mu(l.current))};return a.addEventListener("animationstart",w),a.addEventListener("animationcancel",y),a.addEventListener("animationend",y),()=>{v.clearTimeout(m),a.removeEventListener("animationstart",w),a.removeEventListener("animationcancel",y),a.removeEventListener("animationend",y)}}else g("ANIMATION_END")},[a,g]),{isPresent:["mounted","unmountSuspended"].includes(h),ref:F.useCallback(m=>{l.current=m?getComputedStyle(m):null,o(m)},[])}}function Mu(r){return(r==null?void 0:r.animationName)||"none"}function M1(r){var l,d;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=(d=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:d.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}var zf=0;function I1(){F.useEffect(()=>{const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",r[0]??nm()),document.body.insertAdjacentElement("beforeend",r[1]??nm()),zf++,()=>{zf===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),zf--}},[])}function nm(){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 Yr=function(){return Yr=Object.assign||function(a){for(var o,l=1,d=arguments.length;l"u")return ew;var a=tw(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])}},rw=pA(),qs="data-scroll-locked",iw=function(r,a,o,l){var d=r.left,f=r.top,p=r.right,h=r.gap;return o===void 0&&(o="margin"),` .`.concat(j1,` { overflow: hidden `).concat(l,`; padding-right: `).concat(h,"px ").concat(l,`; @@ -123,10 +123,10 @@ No ACL entries`;const a=[`ACL (${r.length})`];for(const o of r){const l=o.name|| 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},Ow="DialogDescriptionWarning",jw=({contentRef:r,descriptionId:a})=>{const l=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${NA(Ow).contentName}}.`;return F.useEffect(()=>{var f;const d=(f=r.current)==null?void 0:f.getAttribute("aria-describedby");a&&d&&(document.getElementById(a)||console.warn(l))},[l,r,a]),null},LA=_A,MA=CA,Uc=EA,Zc=kA,Wc=BA,qc=TA,IA=RA;const S0=LA,zw=MA,OA=F.forwardRef(({className:r,...a},o)=>b.jsx(Uc,{ref:o,className:at("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}));OA.displayName=Uc.displayName;const Gc=F.forwardRef(({className:r,children:a,...o},l)=>b.jsxs(zw,{children:[b.jsx(OA,{}),b.jsxs(Zc,{ref:l,className:at("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,b.jsxs(IA,{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:[b.jsx(Hg,{className:"h-4 w-4"}),b.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Gc.displayName=Zc.displayName;const Kc=({className:r,...a})=>b.jsx("div",{className:at("flex flex-col space-y-1.5 text-center sm:text-left",r),...a});Kc.displayName="DialogHeader";const B0=({className:r,...a})=>b.jsx("div",{className:at("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",r),...a});B0.displayName="DialogFooter";const Qc=F.forwardRef(({className:r,...a},o)=>b.jsx(Wc,{ref:o,className:at("text-lg font-semibold leading-none tracking-tight",r),...a}));Qc.displayName=Wc.displayName;const $c=F.forwardRef(({className:r,...a},o)=>b.jsx(qc,{ref:o,className:at("text-sm text-muted-foreground",r),...a}));$c.displayName=qc.displayName;function Hw(){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"};if(r.startsWith("map/focus/")){const d=r.slice(10);return d?{type:"map",name:"map",mapFocusKey:decodeURIComponent(d)}:{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 jA(r){return`#map/focus/${encodeURIComponent(r)}`}function Vw(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 Uw(r){const a=Vw(r);a!==window.location.hash&&window.history.replaceState(null,"",a||window.location.pathname)}function Zw({open:r,onClose:a,paths:o,senderInfo:l,contacts:d,config:f}){const p=o.map(g=>({...g,resolved:t1(g.path,l,d,f)})),h=o.length===1;return b.jsx(S0,{open:r,onOpenChange:g=>!g&&a(),children:b.jsxs(Gc,{className:"max-w-md max-h-[80vh] flex flex-col",children:[b.jsxs(Kc,{children:[b.jsxs(Qc,{children:["Message Path",!h&&`s (${o.length})`]}),b.jsx($c,{children:h?b.jsxs(b.Fragment,{children:["This shows ",b.jsx("em",{children:"one route"})," that this message traveled through the mesh network. Routers may be incorrectly identified due to prefix collisions between heard and non-heard router advertisements."]}):b.jsxs(b.Fragment,{children:["This message was received via ",b.jsxs("strong",{children:[o.length," different routes"]}),". Routers may be incorrectly identified due to prefix collisions."]})})]}),b.jsxs("div",{className:"flex-1 overflow-y-auto py-2 space-y-4",children:[p.map((g,m)=>b.jsxs("div",{children:[!h&&b.jsxs("div",{className:"text-xs text-muted-foreground font-medium mb-2 pb-1 border-b border-border",children:["Path ",m+1," — received ",Qs(g.received_at)]}),b.jsx(Ww,{resolved:g.resolved,senderInfo:l,hideStraightLine:!h})]},m)),!h&&p.length>0&&(()=>{const g=p[0].resolved;return Ct(g.sender.lat,g.sender.lon)&&Ct(g.receiver.lat,g.receiver.lon)?b.jsxs("div",{className:"pt-3 mt-1 border-t border-border",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"Straight-line distance: "}),b.jsx("span",{className:"text-sm font-medium",children:Go(Fr(g.sender.lat,g.sender.lon,g.receiver.lat,g.receiver.lon))})]}):null})()]}),b.jsx(B0,{children:b.jsx(Pn,{onClick:a,children:"Close"})})]})})}function Ww({resolved:r,senderInfo:a,hideStraightLine:o}){const l=d=>{if(d===0)return Ct(r.sender.lat,r.sender.lon)?{lat:r.sender.lat,lon:r.sender.lon}:null;const f=r.hops[d-1];return f.matches.length>1||f.matches.length===0?null:Ct(f.matches[0].lat,f.matches[0].lon)?{lat:f.matches[0].lat,lon:f.matches[0].lon}:null};return b.jsxs("div",{className:"space-y-0",children:[b.jsx(lm,{label:"Sender",name:r.sender.name,prefix:r.sender.prefix,distance:null,isFirst:!0,lat:r.sender.lat,lon:r.sender.lon,publicKey:a.publicKeyOrPrefix}),r.hops.map((d,f)=>b.jsx(qw,{hop:d,hopNumber:f+1,prevLocation:l(f)},f)),b.jsx(lm,{label:"Receiver (me)",name:r.receiver.name,prefix:r.receiver.prefix,distance:Gw(r),isLast:!0,lat:r.receiver.lat,lon:r.receiver.lon,publicKey:r.receiver.publicKey??void 0}),r.totalDistances&&r.totalDistances.length>0&&b.jsxs("div",{className:"pt-3 mt-3 border-t border-border",children:[b.jsxs("span",{className:"text-sm text-muted-foreground",children:["Presumed unambiguous distance covered:"," "]}),b.jsxs("span",{className:"text-sm font-medium",children:[r.hasGaps?">":"",Go(r.totalDistances[0])]})]}),!o&&Ct(r.sender.lat,r.sender.lon)&&Ct(r.receiver.lat,r.receiver.lon)&&b.jsxs("div",{className:r.totalDistances&&r.totalDistances.length>0?"pt-1":"pt-3 mt-3 border-t border-border",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"Straight-line distance: "}),b.jsx("span",{className:"text-sm font-medium",children:Go(Fr(r.sender.lat,r.sender.lon,r.receiver.lat,r.receiver.lon))})]})]})}function lm({label:r,name:a,prefix:o,distance:l,isFirst:d,isLast:f,lat:p,lon:h,publicKey:g}){const m=Ct(p??null,h??null)&&g;return b.jsxs("div",{className:"flex gap-3",children:[b.jsxs("div",{className:"flex flex-col items-center w-4 flex-shrink-0",children:[!d&&b.jsx("div",{className:"w-0.5 h-3 bg-border"}),b.jsx("div",{className:"w-3 h-3 rounded-full bg-primary flex-shrink-0"}),!f&&b.jsx("div",{className:"w-0.5 flex-1 bg-border"})]}),b.jsxs("div",{className:"pb-3 flex-1 min-w-0",children:[b.jsx("div",{className:"text-xs text-muted-foreground font-medium",children:r}),b.jsxs("div",{className:"font-medium truncate",children:[a," ",b.jsxs("span",{className:"text-muted-foreground font-mono text-sm",children:["(",o,")"]}),l!==null&&b.jsxs("span",{className:"text-xs text-muted-foreground ml-1",children:["- ",Go(l)]}),m&&b.jsx(o0,{lat:p,lon:h,publicKey:g})]})]})]})}function qw({hop:r,hopNumber:a,prevLocation:o}){const l=r.matches.length>1,d=r.matches.length===0,f=p=>!o||o.lat===null||o.lon===null||!Ct(p.lat,p.lon)?null:Fr(o.lat,o.lon,p.lat,p.lon);return b.jsxs("div",{className:"flex gap-3",children:[b.jsxs("div",{className:"flex flex-col items-center w-4 flex-shrink-0",children:[b.jsx("div",{className:"w-0.5 h-3 bg-border"}),b.jsx("div",{className:"w-3 h-3 rounded-full bg-muted-foreground flex-shrink-0"}),b.jsx("div",{className:"w-0.5 flex-1 bg-border"})]}),b.jsxs("div",{className:"pb-3 flex-1 min-w-0",children:[b.jsxs("div",{className:"text-xs text-muted-foreground font-medium",children:["Hop ",a,l&&b.jsx("span",{className:"text-yellow-500 ml-1",children:"(ambiguous)"})]}),d?b.jsxs("div",{className:"font-medium text-muted-foreground/70",children:[""]}):l?b.jsx("div",{children:r.matches.map(p=>{const h=f(p),g=Ct(p.lat,p.lon);return b.jsxs("div",{className:"font-medium truncate",children:[p.name||p.public_key.slice(0,12)," ",b.jsxs("span",{className:"text-muted-foreground font-mono text-sm",children:["(",p.public_key.slice(0,2).toUpperCase(),")"]}),h!==null&&b.jsxs("span",{className:"text-xs text-muted-foreground ml-1",children:["- ",Go(h)]}),g&&b.jsx(o0,{lat:p.lat,lon:p.lon,publicKey:p.public_key})]},p.public_key)})}):b.jsxs("div",{className:"font-medium truncate",children:[r.matches[0].name||r.matches[0].public_key.slice(0,12)," ",b.jsxs("span",{className:"text-muted-foreground font-mono text-sm",children:["(",r.prefix,")"]}),r.distanceFromPrev!==null&&b.jsxs("span",{className:"text-xs text-muted-foreground ml-1",children:["- ",Go(r.distanceFromPrev)]}),Ct(r.matches[0].lat,r.matches[0].lon)&&b.jsx(o0,{lat:r.matches[0].lat,lon:r.matches[0].lon,publicKey:r.matches[0].public_key})]})]})]})}function o0({lat:r,lon:a,publicKey:o}){const l=d=>{d.preventDefault(),d.stopPropagation();const f=window.location.origin+window.location.pathname+jA(o);window.open(f,"_blank")};return b.jsxs("span",{className:"text-xs text-muted-foreground/70 font-mono cursor-pointer hover:text-primary hover:underline ml-1",onClick:l,title:"View on map",children:["(",r.toFixed(4),", ",a.toFixed(4),")"]})}function Gw(r){let a=null,o=null;if(r.hops.length>0){const l=r.hops[r.hops.length-1];l.matches.length===1&&Ct(l.matches[0].lat,l.matches[0].lon)&&(a=l.matches[0].lat,o=l.matches[0].lon)}else Ct(r.sender.lat,r.sender.lon)&&(a=r.sender.lat,o=r.sender.lon);return a===null||o===null||!Ct(r.receiver.lat,r.receiver.lon)?null:Fr(a,o,r.receiver.lat,r.receiver.lon)}function Kw(r,a){if(!a)return r;const o=/@\[([^\]]+)\]/g,l=[];let d=0,f,p=0;for(;(f=o.exec(r))!==null;){f.index>d&&l.push(r.slice(d,f.index));const h=f[1],g=h===a;l.push(b.jsxs("span",{className:at("rounded px-0.5",g?"bg-primary/30 text-primary font-medium":"bg-muted-foreground/20"),children:["@[",h,"]"]},p++)),d=f.index+f[0].length}return d0?l:r}function um({paths:r,onClick:a,variant:o}){const l=e1(r),d=l.allDirect&&!l.hasMultiple?`(${l.display})`:`(${l.display} hops)`,f=o==="header"?"font-normal text-muted-foreground/70 ml-1 text-[11px] cursor-pointer hover:text-primary hover:underline":"text-[10px] text-muted-foreground/50 ml-1 cursor-pointer hover:text-primary hover:underline";return b.jsx("span",{className:f,onClick:p=>{p.stopPropagation(),a()},title:"View message path",children:d})}function Qw({messages:r,contacts:a,loading:o,loadingOlder:l=!1,hasOlderMessages:d=!1,onSenderClick:f,onLoadOlder:p,radioName:h,config:g}){const m=F.useRef(null),v=F.useRef(0),y=F.useRef(!0),[w,B]=F.useState(!1),[T,C]=F.useState(null),k=F.useRef({scrollTop:0,scrollHeight:0,clientHeight:0,wasNearTop:!1,wasNearBottom:!0});F.useLayoutEffect(()=>{if(!m.current)return;const j=m.current,ee=r.length-v.current;if(y.current&&r.length>0)j.scrollTop=j.scrollHeight,y.current=!1;else if(ee>0&&v.current>0){const Z=j.scrollHeight-k.current.scrollHeight;k.current.wasNearTop&&Z>0?j.scrollTop=k.current.scrollTop+Z:k.current.wasNearBottom&&(j.scrollTop=j.scrollHeight)}v.current=r.length},[r]),F.useEffect(()=>{r.length===0&&(y.current=!0,v.current=0,k.current={scrollTop:0,scrollHeight:0,clientHeight:0,wasNearTop:!1,wasNearBottom:!0})},[r.length]);const D=F.useCallback(()=>{if(!m.current)return;const{scrollTop:j,scrollHeight:ee,clientHeight:Z}=m.current,V=ee-j-Z;k.current={scrollTop:j,scrollHeight:ee,clientHeight:Z,wasNearTop:j<150,wasNearBottom:V<100},B(V>100),!(!p||l||!d)&&j<100&&p()},[p,l,d]),P=F.useCallback(()=>{m.current&&(m.current.scrollTop=m.current.scrollHeight)},[]),S=j=>j&&a.find(ee=>x0(ee.public_key,j))||null,N=j=>a.find(ee=>ee.name===j)||null,I=(j,ee,Z)=>{if(j.type==="PRIV"&&ee)return{name:ee.name||ee.public_key.slice(0,12),publicKeyOrPrefix:ee.public_key,lat:ee.lat,lon:ee.lon};if(Z){const V=N(Z);if(V)return{name:Z,publicKeyOrPrefix:V.public_key,lat:V.lat,lon:V.lon}}return{name:Z||"Unknown",publicKeyOrPrefix:j.conversation_key||"",lat:null,lon:null}};if(o)return b.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"Loading messages..."});if(r.length===0)return b.jsx("div",{className:"flex-1 overflow-y-auto p-5 text-center text-muted-foreground",children:"No messages yet"});const z=[...r].sort((j,ee)=>j.received_at-ee.received_at),H=(j,ee)=>j.outgoing?"__outgoing__":j.type==="PRIV"&&j.conversation_key?j.conversation_key:ee||"__unknown__";return b.jsxs("div",{className:"flex-1 overflow-hidden relative",children:[b.jsxs("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-0.5",ref:m,onScroll:D,children:[l&&b.jsx("div",{className:"text-center py-2 text-muted-foreground text-sm",children:"Loading older messages..."}),!l&&d&&b.jsx("div",{className:"text-center py-2 text-muted-foreground text-xs",children:"Scroll up for older messages"}),z.map((j,ee)=>{var K;const Z=j.type==="PRIV"?S(j.conversation_key):null,V=(Z==null?void 0:Z.type)===Oc,{sender:ne,content:J}=V?{sender:null,content:j.text}:Qp(j.text),ie=j.outgoing?"You":(Z==null?void 0:Z.name)||ne||((K=j.conversation_key)==null?void 0:K.slice(0,8))||"Unknown",he=!j.outgoing&&f&&ie!=="Unknown",ae=H(j,ne),pe=z[ee-1],G=pe?H(pe,Qp(pe.text).sender):null,Y=!j.outgoing&&ae!==G,q=ee===0;let R=null,U="";if(!j.outgoing){if(j.type==="PRIV"&&j.conversation_key)R=(Z==null?void 0:Z.name)||null,U=j.conversation_key;else if(ne){const $=N(ne);R=ne,U=($==null?void 0:$.public_key)||`name:${ne}`}}return b.jsxs("div",{className:at("flex items-start max-w-[85%]",j.outgoing&&"flex-row-reverse self-end",Y&&!q&&"mt-3"),children:[!j.outgoing&&b.jsx("div",{className:"w-10 flex-shrink-0 flex items-start pt-0.5",children:Y&&U&&b.jsx(t0,{name:R,publicKey:U,size:32})}),b.jsxs("div",{className:at("py-1.5 px-3 rounded-lg min-w-0",j.outgoing?"bg-[#1e3a29]":"bg-muted"),children:[Y&&b.jsxs("div",{className:"text-[13px] font-semibold text-muted-foreground mb-0.5",children:[he?b.jsx("span",{className:"cursor-pointer hover:text-primary hover:underline",onClick:()=>f(ie),title:`Mention ${ie}`,children:ie}):ie,b.jsx("span",{className:"font-normal text-muted-foreground/70 ml-2 text-[11px]",children:Qs(j.sender_timestamp||j.received_at)}),!j.outgoing&&j.paths&&j.paths.length>0&&b.jsx(um,{paths:j.paths,variant:"header",onClick:()=>C({paths:j.paths,senderInfo:I(j,Z,ne)})})]}),b.jsxs("div",{className:"break-words whitespace-pre-wrap",children:[J.split(` -`).map(($,de,fe)=>b.jsxs("span",{children:[Kw($,h),de0&&b.jsx(um,{paths:j.paths,variant:"inline",onClick:()=>C({paths:j.paths,senderInfo:I(j,Z,ne)})})]}),j.outgoing&&(j.acked>0?` ✓${j.acked>1?j.acked:""}`:" ?")]})]})]},j.id)})]}),w&&b.jsx("button",{onClick:P,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:b.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:b.jsx("polyline",{points:"6 9 12 15 18 9"})})}),T&&b.jsx(Zw,{open:!0,onClose:()=>C(null),paths:T.paths,senderInfo:T.senderInfo,contacts:a,config:g??null})]})}const cm=156,$w=140,Yw=156,Xw=120,Jw=8,e2=F.forwardRef(function({onSend:a,disabled:o,placeholder:l,isRepeaterMode:d,conversationType:f,senderName:p},h){const[g,m]=F.useState(""),[v,y]=F.useState(!1),w=F.useRef(null);F.useImperativeHandle(h,()=>({appendText:I=>{var z;m(H=>H+I),(z=w.current)==null||z.focus()}}));const B=F.useMemo(()=>{if(f==="contact")return{warningAt:$w,dangerAt:cm,hardLimit:cm};if(f==="channel"){const I=(p==null?void 0:p.length)??10,z=Math.max(1,Yw-I-2);return{warningAt:Xw,dangerAt:Math.max(1,z-Jw),hardLimit:z}}return null},[f,p]),{limitState:T,warningMessage:C}=F.useMemo(()=>{if(!B)return{limitState:"normal",warningMessage:null};const I=g.length;return I>=B.hardLimit?{limitState:"error",warningMessage:"likely truncated by radio"}:I>=B.dangerAt?{limitState:"danger",warningMessage:"may impact multi-repeater hop delivery"}:I>=B.warningAt?{limitState:"warning",warningMessage:"may impact multi-repeater hop delivery"}:{limitState:"normal",warningMessage:null}},[g.length,B]),k=B?B.hardLimit-g.length:0,D=F.useCallback(async I=>{I.preventDefault();const z=g.trim();if(d){if(v||o)return;y(!0);try{await a(z),m("")}catch(H){console.error("Failed to request telemetry:",H),bt.error("Failed to request telemetry",{description:H instanceof Error?H.message:"Check radio connection"});return}finally{y(!1)}setTimeout(()=>{var H;return(H=w.current)==null?void 0:H.focus()},0)}else{if(!z||v||o)return;y(!0);try{await a(z),m("")}catch(H){console.error("Failed to send message:",H),bt.error("Failed to send message",{description:H instanceof Error?H.message:"Check radio connection"});return}finally{y(!1)}setTimeout(()=>{var H;return(H=w.current)==null?void 0:H.focus()},0)}},[g,v,o,a,d]),P=F.useCallback(I=>{I.key==="Enter"&&!I.shiftKey&&(I.preventDefault(),D(I))},[D]),S=d?!0:g.trim().length>0,N=!d&&B!==null;return b.jsxs("form",{className:"px-4 py-3 border-t border-border flex flex-col gap-1",onSubmit:D,children:[b.jsxs("div",{className:"flex gap-2",children:[b.jsx(Xt,{ref:w,type:d?"password":"text",autoComplete:d?"off":void 0,value:g,onChange:I=>m(I.target.value),onKeyDown:P,placeholder:l||(d?"Enter password for admin login...":"Type a message..."),disabled:o||v,className:"flex-1 min-w-0"}),b.jsx(Pn,{type:"submit",disabled:o||v||!S,className:"flex-shrink-0",children:v?d?"Logging in...":"Sending...":d?g.trim()?"Log in with password":"Log in as guest/use repeater ACLs":"Send"})]}),N&&b.jsxs("div",{className:"flex items-center justify-end gap-2 text-xs",children:[b.jsxs("span",{className:at("tabular-nums",T==="error"||T==="danger"?"text-red-500 font-medium":T==="warning"?"text-yellow-500":"text-muted-foreground"),children:[g.length,"/",B.hardLimit,k<0&&` (${k})`]}),C&&b.jsxs("span",{className:at(T==="error"?"text-red-500":"text-yellow-500"),children:["— ",C]})]})]})});function dm(r){const a=t2(r),o=F.forwardRef((l,d)=>{const{children:f,...p}=l,h=F.Children.toArray(f),g=h.find(r2);if(g){const m=g.props.children,v=h.map(y=>y===g?F.Children.count(m)>1?F.Children.only(null):F.isValidElement(m)?m.props.children:null:y);return b.jsx(a,{...p,ref:d,children:F.isValidElement(m)?F.cloneElement(m,void 0,v):null})}return b.jsx(a,{...p,ref:d,children:f})});return o.displayName=`${r}.Slot`,o}function t2(r){const a=F.forwardRef((o,l)=>{const{children:d,...f}=o;if(F.isValidElement(d)){const p=o2(d),h=i2(f,d.props);return d.type!==F.Fragment&&(h.ref=l?fl(l,p):p),F.cloneElement(d,h)}return F.Children.count(d)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var n2=Symbol("radix.slottable");function r2(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===n2}function i2(r,a){const o={...a};for(const l in a){const d=r[l],f=a[l];/^on[A-Z]/.test(l)?d&&f?o[l]=(...h)=>{const g=f(...h);return d(...h),g}:d&&(o[l]=d):l==="style"?o[l]={...d,...f}:l==="className"&&(o[l]=[d,f].filter(Boolean).join(" "))}return{...r,...o}}function o2(r){var l,d;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=(d=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:d.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}function s2(r){const a=r+"CollectionProvider",[o,l]=hl(a),[d,f]=o(a,{collectionRef:{current:null},itemMap:new Map}),p=C=>{const{scope:k,children:D}=C,P=Ce.useRef(null),S=Ce.useRef(new Map).current;return b.jsx(d,{scope:k,itemMap:S,collectionRef:P,children:D})};p.displayName=a;const h=r+"CollectionSlot",g=dm(h),m=Ce.forwardRef((C,k)=>{const{scope:D,children:P}=C,S=f(h,D),N=vr(k,S.collectionRef);return b.jsx(g,{ref:N,children:P})});m.displayName=h;const v=r+"CollectionItemSlot",y="data-radix-collection-item",w=dm(v),B=Ce.forwardRef((C,k)=>{const{scope:D,children:P,...S}=C,N=Ce.useRef(null),I=vr(k,N),z=f(v,D);return Ce.useEffect(()=>(z.itemMap.set(N,{ref:N,...S}),()=>void z.itemMap.delete(N))),b.jsx(w,{[y]:"",ref:I,children:P})});B.displayName=v;function T(C){const k=f(r+"CollectionConsumer",C);return Ce.useCallback(()=>{const P=k.collectionRef.current;if(!P)return[];const S=Array.from(P.querySelectorAll(`[${y}]`));return Array.from(k.itemMap.values()).sort((z,H)=>S.indexOf(z.ref.current)-S.indexOf(H.ref.current))},[k.collectionRef,k.itemMap])}return[{Provider:p,Slot:m,ItemSlot:B},T,l]}var a2=F.createContext(void 0);function zA(r){const a=F.useContext(a2);return r||a||"ltr"}var Wf="rovingFocusGroup.onEntryFocus",l2={bubbles:!1,cancelable:!0},pl="RovingFocusGroup",[s0,HA,u2]=s2(pl),[c2,VA]=hl(pl,[u2]),[d2,f2]=c2(pl),UA=F.forwardRef((r,a)=>b.jsx(s0.Provider,{scope:r.__scopeRovingFocusGroup,children:b.jsx(s0.Slot,{scope:r.__scopeRovingFocusGroup,children:b.jsx(h2,{...r,ref:a})})}));UA.displayName=pl;var h2=F.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:o,orientation:l,loop:d=!1,dir:f,currentTabStopId:p,defaultCurrentTabStopId:h,onCurrentTabStopIdChange:g,onEntryFocus:m,preventScrollOnEntryFocus:v=!1,...y}=r,w=F.useRef(null),B=vr(a,w),T=zA(f),[C,k]=zc({prop:p,defaultProp:h??null,onChange:g,caller:pl}),[D,P]=F.useState(!1),S=Ys(m),N=HA(o),I=F.useRef(!1),[z,H]=F.useState(0);return F.useEffect(()=>{const j=w.current;if(j)return j.addEventListener(Wf,S),()=>j.removeEventListener(Wf,S)},[S]),b.jsx(d2,{scope:o,orientation:l,dir:T,loop:d,currentTabStopId:C,onItemFocus:F.useCallback(j=>k(j),[k]),onItemShiftTab:F.useCallback(()=>P(!0),[]),onFocusableItemAdd:F.useCallback(()=>H(j=>j+1),[]),onFocusableItemRemove:F.useCallback(()=>H(j=>j-1),[]),children:b.jsx(hn.div,{tabIndex:D||z===0?-1:0,"data-orientation":l,...y,ref:B,style:{outline:"none",...r.style},onMouseDown:un(r.onMouseDown,()=>{I.current=!0}),onFocus:un(r.onFocus,j=>{const ee=!I.current;if(j.target===j.currentTarget&&ee&&!D){const Z=new CustomEvent(Wf,l2);if(j.currentTarget.dispatchEvent(Z),!Z.defaultPrevented){const V=N().filter(ae=>ae.focusable),ne=V.find(ae=>ae.active),J=V.find(ae=>ae.id===C),he=[ne,J,...V].filter(Boolean).map(ae=>ae.ref.current);qA(he,v)}}I.current=!1}),onBlur:un(r.onBlur,()=>P(!1))})})}),ZA="RovingFocusGroupItem",WA=F.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:o,focusable:l=!0,active:d=!1,tabStopId:f,children:p,...h}=r,g=ll(),m=f||g,v=f2(ZA,o),y=v.currentTabStopId===m,w=HA(o),{onFocusableItemAdd:B,onFocusableItemRemove:T,currentTabStopId:C}=v;return F.useEffect(()=>{if(l)return B(),()=>T()},[l,B,T]),b.jsx(s0.ItemSlot,{scope:o,id:m,focusable:l,active:d,children:b.jsx(hn.span,{tabIndex:y?0:-1,"data-orientation":v.orientation,...h,ref:a,onMouseDown:un(r.onMouseDown,k=>{l?v.onItemFocus(m):k.preventDefault()}),onFocus:un(r.onFocus,()=>v.onItemFocus(m)),onKeyDown:un(r.onKeyDown,k=>{if(k.key==="Tab"&&k.shiftKey){v.onItemShiftTab();return}if(k.target!==k.currentTarget)return;const D=g2(k,v.orientation,v.dir);if(D!==void 0){if(k.metaKey||k.ctrlKey||k.altKey||k.shiftKey)return;k.preventDefault();let S=w().filter(N=>N.focusable).map(N=>N.ref.current);if(D==="last")S.reverse();else if(D==="prev"||D==="next"){D==="prev"&&S.reverse();const N=S.indexOf(k.currentTarget);S=v.loop?A2(S,N+1):S.slice(N+1)}setTimeout(()=>qA(S))}}),children:typeof p=="function"?p({isCurrentTabStop:y,hasTabStop:C!=null}):p})})});WA.displayName=ZA;var p2={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function m2(r,a){return a!=="rtl"?r:r==="ArrowLeft"?"ArrowRight":r==="ArrowRight"?"ArrowLeft":r}function g2(r,a,o){const l=m2(r.key,o);if(!(a==="vertical"&&["ArrowLeft","ArrowRight"].includes(l))&&!(a==="horizontal"&&["ArrowUp","ArrowDown"].includes(l)))return p2[l]}function qA(r,a=!1){const o=document.activeElement;for(const l of r)if(l===o||(l.focus({preventScroll:a}),document.activeElement!==o))return}function A2(r,a){return r.map((o,l)=>r[(a+l)%r.length])}var x2=UA,v2=WA,Yc="Tabs",[y2]=hl(Yc,[VA]),GA=VA(),[_2,P0]=y2(Yc),KA=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,onValueChange:d,defaultValue:f,orientation:p="horizontal",dir:h,activationMode:g="automatic",...m}=r,v=zA(h),[y,w]=zc({prop:l,onChange:d,defaultProp:f??"",caller:Yc});return b.jsx(_2,{scope:o,baseId:ll(),value:y,onValueChange:w,orientation:p,dir:v,activationMode:g,children:b.jsx(hn.div,{dir:v,"data-orientation":p,...m,ref:a})})});KA.displayName=Yc;var QA="TabsList",$A=F.forwardRef((r,a)=>{const{__scopeTabs:o,loop:l=!0,...d}=r,f=P0(QA,o),p=GA(o);return b.jsx(x2,{asChild:!0,...p,orientation:f.orientation,dir:f.dir,loop:l,children:b.jsx(hn.div,{role:"tablist","aria-orientation":f.orientation,...d,ref:a})})});$A.displayName=QA;var YA="TabsTrigger",XA=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,disabled:d=!1,...f}=r,p=P0(YA,o),h=GA(o),g=tx(p.baseId,l),m=nx(p.baseId,l),v=l===p.value;return b.jsx(v2,{asChild:!0,...h,focusable:!d,active:v,children:b.jsx(hn.button,{type:"button",role:"tab","aria-selected":v,"aria-controls":m,"data-state":v?"active":"inactive","data-disabled":d?"":void 0,disabled:d,id:g,...f,ref:a,onMouseDown:un(r.onMouseDown,y=>{!d&&y.button===0&&y.ctrlKey===!1?p.onValueChange(l):y.preventDefault()}),onKeyDown:un(r.onKeyDown,y=>{[" ","Enter"].includes(y.key)&&p.onValueChange(l)}),onFocus:un(r.onFocus,()=>{const y=p.activationMode!=="manual";!v&&!d&&y&&p.onValueChange(l)})})})});XA.displayName=YA;var JA="TabsContent",ex=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,forceMount:d,children:f,...p}=r,h=P0(JA,o),g=tx(h.baseId,l),m=nx(h.baseId,l),v=l===h.value,y=F.useRef(v);return F.useEffect(()=>{const w=requestAnimationFrame(()=>y.current=!1);return()=>cancelAnimationFrame(w)},[]),b.jsx(ta,{present:d||v,children:({present:w})=>b.jsx(hn.div,{"data-state":v?"active":"inactive","data-orientation":h.orientation,role:"tabpanel","aria-labelledby":g,hidden:!w,id:m,tabIndex:0,...p,ref:a,style:{...r.style,animationDuration:y.current?"0s":void 0},children:w&&f})})});ex.displayName=JA;function tx(r,a){return`${r}-trigger-${a}`}function nx(r,a){return`${r}-content-${a}`}var w2=KA,rx=$A,ix=XA,ox=ex;const sx=w2,T0=F.forwardRef(({className:r,...a},o)=>b.jsx(rx,{ref:o,className:at("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",r),...a}));T0.displayName=rx.displayName;const Xr=F.forwardRef(({className:r,...a},o)=>b.jsx(ix,{ref:o,className:at("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}));Xr.displayName=ix.displayName;const Jr=F.forwardRef(({className:r,...a},o)=>b.jsx(ox,{ref:o,className:at("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r),...a}));Jr.displayName=ox.displayName;var b2=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],C2=b2.reduce((r,a)=>{const o=w0(`Primitive.${a}`),l=F.forwardRef((d,f)=>{const{asChild:p,...h}=d,g=p?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),b.jsx(g,{...h,ref:f})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{}),E2="Label",ax=F.forwardRef((r,a)=>b.jsx(C2.label,{...r,ref:a,onMouseDown:o=>{var d;o.target.closest("button, input, select, textarea")||((d=r.onMouseDown)==null||d.call(r,o),!o.defaultPrevented&&o.detail>1&&o.preventDefault())}}));ax.displayName=E2;var lx=ax;const k2=b0("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Ot=F.forwardRef(({className:r,...a},o)=>b.jsx(lx,{ref:o,className:at(k2(),r),...a}));Ot.displayName=lx.displayName;function S2(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 B2(r){const[a,o]=F.useState(void 0);return $s(()=>{if(r){o({width:r.offsetWidth,height:r.offsetHeight});const l=new ResizeObserver(d=>{if(!Array.isArray(d)||!d.length)return;const f=d[0];let p,h;if("borderBoxSize"in f){const g=f.borderBoxSize,m=Array.isArray(g)?g[0]:g;p=m.inlineSize,h=m.blockSize}else p=r.offsetWidth,h=r.offsetHeight;o({width:p,height:h})});return l.observe(r,{box:"border-box"}),()=>l.unobserve(r)}else o(void 0)},[r]),a}var Xc="Checkbox",[P2]=hl(Xc),[T2,D0]=P2(Xc);function D2(r){const{__scopeCheckbox:a,checked:o,children:l,defaultChecked:d,disabled:f,form:p,name:h,onCheckedChange:g,required:m,value:v="on",internal_do_not_use_render:y}=r,[w,B]=zc({prop:o,defaultProp:d??!1,onChange:g,caller:Xc}),[T,C]=F.useState(null),[k,D]=F.useState(null),P=F.useRef(!1),S=T?!!p||!!T.closest("form"):!0,N={checked:w,disabled:f,setChecked:B,control:T,setControl:C,name:h,form:p,value:v,hasConsumerStoppedPropagationRef:P,required:m,defaultChecked:uo(d)?!1:d,isFormControl:S,bubbleInput:k,setBubbleInput:D};return b.jsx(T2,{scope:a,...N,children:R2(y)?y(N):l})}var ux="CheckboxTrigger",cx=F.forwardRef(({__scopeCheckbox:r,onKeyDown:a,onClick:o,...l},d)=>{const{control:f,value:p,disabled:h,checked:g,required:m,setControl:v,setChecked:y,hasConsumerStoppedPropagationRef:w,isFormControl:B,bubbleInput:T}=D0(ux,r),C=vr(d,v),k=F.useRef(g);return F.useEffect(()=>{const D=f==null?void 0:f.form;if(D){const P=()=>y(k.current);return D.addEventListener("reset",P),()=>D.removeEventListener("reset",P)}},[f,y]),b.jsx(hn.button,{type:"button",role:"checkbox","aria-checked":uo(g)?"mixed":g,"aria-required":m,"data-state":mx(g),"data-disabled":h?"":void 0,disabled:h,value:p,...l,ref:C,onKeyDown:un(a,D=>{D.key==="Enter"&&D.preventDefault()}),onClick:un(o,D=>{y(P=>uo(P)?!0:!P),T&&B&&(w.current=D.isPropagationStopped(),w.current||D.stopPropagation())})})});cx.displayName=ux;var R0=F.forwardRef((r,a)=>{const{__scopeCheckbox:o,name:l,checked:d,defaultChecked:f,required:p,disabled:h,value:g,onCheckedChange:m,form:v,...y}=r;return b.jsx(D2,{__scopeCheckbox:o,checked:d,defaultChecked:f,disabled:h,required:p,onCheckedChange:m,name:l,form:v,value:g,internal_do_not_use_render:({isFormControl:w})=>b.jsxs(b.Fragment,{children:[b.jsx(cx,{...y,ref:a,__scopeCheckbox:o}),w&&b.jsx(px,{__scopeCheckbox:o})]})})});R0.displayName=Xc;var dx="CheckboxIndicator",fx=F.forwardRef((r,a)=>{const{__scopeCheckbox:o,forceMount:l,...d}=r,f=D0(dx,o);return b.jsx(ta,{present:l||uo(f.checked)||f.checked===!0,children:b.jsx(hn.span,{"data-state":mx(f.checked),"data-disabled":f.disabled?"":void 0,...d,ref:a,style:{pointerEvents:"none",...r.style}})})});fx.displayName=dx;var hx="CheckboxBubbleInput",px=F.forwardRef(({__scopeCheckbox:r,...a},o)=>{const{control:l,hasConsumerStoppedPropagationRef:d,checked:f,defaultChecked:p,required:h,disabled:g,name:m,value:v,form:y,bubbleInput:w,setBubbleInput:B}=D0(hx,r),T=vr(o,B),C=S2(f),k=B2(l);F.useEffect(()=>{const P=w;if(!P)return;const S=window.HTMLInputElement.prototype,I=Object.getOwnPropertyDescriptor(S,"checked").set,z=!d.current;if(C!==f&&I){const H=new Event("click",{bubbles:z});P.indeterminate=uo(f),I.call(P,uo(f)?!1:f),P.dispatchEvent(H)}},[w,C,f,d]);const D=F.useRef(uo(f)?!1:f);return b.jsx(hn.input,{type:"checkbox","aria-hidden":!0,defaultChecked:p??D.current,required:h,disabled:g,name:m,value:v,form:y,...a,tabIndex:-1,ref:T,style:{...a.style,...k,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});px.displayName=hx;function R2(r){return typeof r=="function"}function uo(r){return r==="indeterminate"}function mx(r){return uo(r)?"indeterminate":r?"checked":"unchecked"}const gx=F.forwardRef(({className:r,...a},o)=>b.jsx(R0,{ref:o,className:at("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:b.jsx(fx,{className:at("flex items-center justify-center text-current"),children:b.jsx(My,{className:"h-4 w-4"})})}));gx.displayName=R0.displayName;function F2({open:r,contacts:a,undecryptedCount:o,onClose:l,onSelectConversation:d,onCreateContact:f,onCreateChannel:p,onCreateHashtagChannel:h}){const[g,m]=F.useState("existing"),[v,y]=F.useState(""),[w,B]=F.useState(""),[T,C]=F.useState(""),[k,D]=F.useState(!1),[P,S]=F.useState(""),[N,I]=F.useState(!1),z=F.useRef(null),H=async()=>{S(""),I(!0);try{if(g==="new-contact"){if(!v.trim()||!w.trim()){S("Name and public key are required");return}await f(v.trim(),w.trim(),k),d({type:"contact",id:w.trim(),name:v.trim()})}else if(g==="new-room"){if(!v.trim()||!T.trim()){S("Room name and key are required");return}await p(v.trim(),T.trim(),k)}else if(g==="hashtag"){const V=v.trim(),ne=j(V);if(ne){S(ne);return}await h(`#${V}`,k)}l()}catch(V){S(V instanceof Error?V.message:"Failed to create")}finally{I(!1)}},j=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",ee=async()=>{var J;S("");const V=v.trim(),ne=j(V);if(ne){S(ne);return}I(!0);try{await h(`#${V}`,k),y(""),(J=z.current)==null||J.focus()}catch(ie){S(ie instanceof Error?ie.message:"Failed to create")}finally{I(!1)}},Z=g!=="existing"&&o>0;return b.jsx(S0,{open:r,onOpenChange:V=>!V&&l(),children:b.jsxs(Gc,{className:"sm:max-w-[500px]",children:[b.jsxs(Kc,{children:[b.jsx(Qc,{children:"New Conversation"}),b.jsxs($c,{className:"sr-only",children:[g==="existing"&&"Select an existing contact to start a conversation",g==="new-contact"&&"Add a new contact by entering their name and public key",g==="new-room"&&"Create a private room with a shared encryption key",g==="hashtag"&&"Join a public hashtag channel"]})]}),b.jsxs(sx,{value:g,onValueChange:V=>m(V),className:"w-full",children:[b.jsxs(T0,{className:"grid w-full grid-cols-4",children:[b.jsx(Xr,{value:"existing",children:"Existing"}),b.jsx(Xr,{value:"new-contact",children:"Contact"}),b.jsx(Xr,{value:"new-room",children:"Room"}),b.jsx(Xr,{value:"hashtag",children:"Hashtag"})]}),b.jsx(Jr,{value:"existing",className:"mt-4",children:b.jsx("div",{className:"max-h-[300px] overflow-y-auto rounded-md border",children:a.length===0?b.jsx("div",{className:"p-4 text-center text-muted-foreground",children:"No contacts available"}):a.map(V=>b.jsx("div",{className:"cursor-pointer px-4 py-2 hover:bg-accent",onClick:()=>{d({type:"contact",id:V.public_key,name:Ei(V.name,V.public_key)}),l()},children:Ei(V.name,V.public_key)},V.public_key))})}),b.jsxs(Jr,{value:"new-contact",className:"mt-4 space-y-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"contact-name",children:"Name"}),b.jsx(Xt,{id:"contact-name",value:v,onChange:V=>y(V.target.value),placeholder:"Contact name"})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"contact-key",children:"Public Key"}),b.jsx(Xt,{id:"contact-key",value:w,onChange:V=>B(V.target.value),placeholder:"64-character hex public key"})]})]}),b.jsxs(Jr,{value:"new-room",className:"mt-4 space-y-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"room-name",children:"Room Name"}),b.jsx(Xt,{id:"room-name",value:v,onChange:V=>y(V.target.value),placeholder:"Room name"})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"room-key",children:"Room Key"}),b.jsxs("div",{className:"flex gap-2",children:[b.jsx(Xt,{id:"room-key",value:T,onChange:V=>C(V.target.value),placeholder:"Pre-shared key (hex)",className:"flex-1"}),b.jsx(Pn,{type:"button",variant:"outline",size:"icon",onClick:()=>{const V=new Uint8Array(16);crypto.getRandomValues(V);const ne=Array.from(V).map(J=>J.toString(16).padStart(2,"0")).join("");C(ne)},title:"Generate random key",children:"🎲"})]})]})]}),b.jsx(Jr,{value:"hashtag",className:"mt-4",children:b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"hashtag-name",children:"Hashtag Channel"}),b.jsxs("div",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"#"}),b.jsx(Xt,{ref:z,id:"hashtag-name",value:v,onChange:V=>y(V.target.value),placeholder:"channel-name",className:"flex-1"})]})]})})]}),Z&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex items-center justify-end space-x-2",children:[b.jsxs(Ot,{htmlFor:"try-historical",className:"text-sm text-muted-foreground cursor-pointer",children:["Try decrypting ",o.toLocaleString()," stored packet",o!==1?"s":""]}),b.jsx(gx,{id:"try-historical",checked:k,onCheckedChange:V=>D(V===!0)})]}),k&&b.jsx("p",{className:"text-xs text-muted-foreground text-right",children:"Messages will stream in as they decrypt in the background"})]}),P&&b.jsx("div",{className:"text-sm text-destructive",children:P}),b.jsxs(B0,{children:[b.jsx(Pn,{variant:"outline",onClick:l,children:"Cancel"}),g==="hashtag"&&b.jsx(Pn,{variant:"secondary",onClick:ee,disabled:N,children:N?"Creating...":"Create & Add Another"}),g!=="existing"&&b.jsx(Pn,{onClick:H,disabled:N,children:N?"Creating...":"Create"})]})]})})}var N2=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],L2=N2.reduce((r,a)=>{const o=w0(`Primitive.${a}`),l=F.forwardRef((d,f)=>{const{asChild:p,...h}=d,g=p?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),b.jsx(g,{...h,ref:f})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{}),M2="Separator",fm="horizontal",I2=["horizontal","vertical"],Ax=F.forwardRef((r,a)=>{const{decorative:o,orientation:l=fm,...d}=r,f=O2(l)?l:fm,h=o?{role:"none"}:{"aria-orientation":f==="vertical"?f:void 0,role:"separator"};return b.jsx(L2.div,{"data-orientation":f,...h,...d,ref:a})});Ax.displayName=M2;function O2(r){return I2.includes(r)}var xx=Ax;const Us=F.forwardRef(({className:r,orientation:a="horizontal",decorative:o=!0,...l},d)=>b.jsx(xx,{ref:d,decorative:o,orientation:a,className:at("shrink-0 bg-border",a==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",r),...l}));Us.displayName=xx.displayName;const qf=[{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 j2({open:r,config:a,health:o,appSettings:l,onClose:d,onSave:f,onSaveAppSettings:p,onSetPrivateKey:h,onReboot:g,onAdvertise:m,onHealthRefresh:v}){const[y,w]=F.useState("radio"),[B,T]=F.useState(""),[C,k]=F.useState(""),[D,P]=F.useState(""),[S,N]=F.useState(""),[I,z]=F.useState(""),[H,j]=F.useState(""),[ee,Z]=F.useState(""),[V,ne]=F.useState(""),[J,ie]=F.useState(""),[he,ae]=F.useState(""),[pe,G]=F.useState(!1),[Y,q]=F.useState(!1),[R,U]=F.useState(!1),[K,$]=F.useState(!1),[de,fe]=F.useState(""),[ke,Ae]=F.useState("14"),[We,$e]=F.useState(!1);F.useEffect(()=>{a&&(T(a.name),k(String(a.lat)),P(String(a.lon)),N(String(a.tx_power)),z(String(a.radio.freq)),j(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(H),pt=parseInt(ee,10),Zt=parseInt(V,10);for(const tn of qf)if(tn.freq===xe&&tn.bw===Te&&tn.sf===pt&&tn.cr===Zt)return tn.name;return"custom"},[I,H,ee,V]),ft=xe=>{if(xe==="custom")return;const Te=qf.find(pt=>pt.name===xe);Te&&(z(String(Te.freq)),j(String(Te.bw)),Z(String(Te.sf)),ne(String(Te.cr)))},Be=()=>{if(!navigator.geolocation){bt.error("Geolocation not supported",{description:"Your browser does not support geolocation"});return}$(!0),navigator.geolocation.getCurrentPosition(xe=>{k(xe.coords.latitude.toFixed(6)),P(xe.coords.longitude.toFixed(6)),$(!1),bt.success("Location updated")},xe=>{$(!1),bt.error("Failed to get location",{description:xe.message})},{enableHighAccuracy:!0,timeout:1e4})},Ze=async()=>{fe(""),G(!0);try{const xe={lat:parseFloat(C),lon:parseFloat(D),tx_power:parseInt(S,10),radio:{freq:parseFloat(I),bw:parseFloat(H),sf:parseInt(ee,10),cr:parseInt(V,10)}};await f(xe),bt.success("Radio config saved, rebooting..."),G(!1),q(!0),await g(),d()}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save"),G(!1)}finally{q(!1)}},lt=async()=>{fe(""),G(!0);try{await f({name:B}),bt.success("Identity saved")}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save")}finally{G(!1)}},Rt=async()=>{fe(""),G(!0);try{const xe=parseInt(he,10);!isNaN(xe)&&xe!==(l==null?void 0:l.max_radio_contacts)&&await p({max_radio_contacts:xe}),bt.success("Serial settings saved")}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save")}finally{G(!1)}},vt=async()=>{if(!J.trim()){fe("Private key is required");return}fe(""),G(!0);try{await h(J.trim()),ie(""),bt.success("Private key set, rebooting..."),G(!1),q(!0),await g(),d()}catch(xe){fe(xe instanceof Error?xe.message:"Failed to set private key"),G(!1)}finally{q(!1)}},ot=async()=>{if(confirm("Are you sure you want to reboot the radio? The connection will drop temporarily.")){fe(""),q(!0);try{await g(),d()}catch(xe){fe(xe instanceof Error?xe.message:"Failed to reboot radio")}finally{q(!1)}}},Qe=async()=>{U(!0);try{await m()}finally{U(!1)}},Xe=async()=>{const xe=parseInt(ke,10);if(isNaN(xe)||xe<1){bt.error("Invalid retention days",{description:"Retention days must be at least 1"});return}$e(!0);try{const Te=await rt.runMaintenance(xe);bt.success("Database cleanup complete",{description:`Deleted ${Te.packets_deleted} old packet${Te.packets_deleted===1?"":"s"}`}),await v()}catch(Te){console.error("Failed to run maintenance:",Te),bt.error("Database cleanup failed",{description:Te instanceof Error?Te.message:"Unknown error"})}finally{$e(!1)}};return b.jsx(S0,{open:r,onOpenChange:xe=>!xe&&d(),children:b.jsxs(Gc,{className:"sm:max-w-[500px] max-h-[90vh] overflow-y-auto",children:[b.jsxs(Kc,{children:[b.jsx(Qc,{children:"Radio & Settings"}),b.jsxs($c,{className:"sr-only",children:[y==="radio"&&"Configure radio frequency, power, and location settings",y==="identity"&&"Manage radio name, public key, and private key",y==="serial"&&"View serial port connection and configure contact sync",y==="database"&&"View database statistics and clean up old packets",y==="advertise"&&"Send a flood advertisement to announce your presence"]})]}),a?b.jsxs(sx,{value:y,onValueChange:xe=>w(xe),className:"w-full",children:[b.jsxs(T0,{className:"grid w-full grid-cols-5",children:[b.jsx(Xr,{value:"radio",children:"Radio"}),b.jsx(Xr,{value:"identity",children:"Identity"}),b.jsx(Xr,{value:"serial",children:"Serial"}),b.jsx(Xr,{value:"database",children:"Database"}),b.jsx(Xr,{value:"advertise",children:"Advertise"})]}),b.jsxs(Jr,{value:"radio",className:"space-y-4 mt-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"preset",children:"Preset"}),b.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:[b.jsx("option",{value:"custom",children:"Custom"}),qf.map(xe=>b.jsx("option",{value:xe.name,children:xe.name},xe.name))]})]}),b.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"freq",children:"Frequency (MHz)"}),b.jsx(Xt,{id:"freq",type:"number",step:"any",value:I,onChange:xe=>z(xe.target.value)})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"bw",children:"Bandwidth (kHz)"}),b.jsx(Xt,{id:"bw",type:"number",step:"any",value:H,onChange:xe=>j(xe.target.value)})]})]}),b.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"sf",children:"Spreading Factor"}),b.jsx(Xt,{id:"sf",type:"number",min:"7",max:"12",value:ee,onChange:xe=>Z(xe.target.value)})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"cr",children:"Coding Rate"}),b.jsx(Xt,{id:"cr",type:"number",min:"5",max:"8",value:V,onChange:xe=>ne(xe.target.value)})]})]}),b.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"tx-power",children:"TX Power (dBm)"}),b.jsx(Xt,{id:"tx-power",type:"number",value:S,onChange:xe=>N(xe.target.value)})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"max-tx",children:"Max TX Power"}),b.jsx(Xt,{id:"max-tx",type:"number",value:a.max_tx_power,disabled:!0})]})]}),b.jsx(Us,{}),b.jsxs("div",{className:"space-y-2",children:[b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsx(Ot,{children:"Location"}),b.jsx(Pn,{type:"button",variant:"outline",size:"sm",onClick:Be,disabled:K,children:K?"Getting...":"📍 Use My Location"})]}),b.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"lat",className:"text-xs text-muted-foreground",children:"Latitude"}),b.jsx(Xt,{id:"lat",type:"number",step:"any",value:C,onChange:xe=>k(xe.target.value)})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"lon",className:"text-xs text-muted-foreground",children:"Longitude"}),b.jsx(Xt,{id:"lon",type:"number",step:"any",value:D,onChange:xe=>P(xe.target.value)})]})]})]}),de&&b.jsx("div",{className:"text-sm text-destructive",children:de}),b.jsx(Pn,{onClick:Ze,disabled:pe||Y,className:"w-full",children:pe||Y?"Saving & Rebooting...":"Save Radio Config & Reboot"})]}),b.jsxs(Jr,{value:"identity",className:"space-y-4 mt-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"public-key",children:"Public Key"}),b.jsx(Xt,{id:"public-key",value:a.public_key,disabled:!0,className:"font-mono text-xs"})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"name",children:"Radio Name"}),b.jsx(Xt,{id:"name",value:B,onChange:xe=>T(xe.target.value)})]}),b.jsx(Pn,{onClick:lt,disabled:pe,className:"w-full",children:pe?"Saving...":"Set Name"}),b.jsx(Us,{}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"private-key",children:"Set Private Key (write-only)"}),b.jsx(Xt,{id:"private-key",type:"password",autoComplete:"off",value:J,onChange:xe=>ie(xe.target.value),placeholder:"64-character hex private key"}),b.jsx(Pn,{onClick:vt,disabled:pe||Y||!J.trim(),className:"w-full",children:pe||Y?"Setting & Rebooting...":"Set Private Key & Reboot"})]}),de&&b.jsx("div",{className:"text-sm text-destructive",children:de})]}),b.jsxs(Jr,{value:"serial",className:"space-y-4 mt-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{children:"Serial Port"}),o!=null&&o.serial_port?b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("div",{className:"w-2 h-2 rounded-full bg-green-500"}),b.jsx("code",{className:"px-2 py-1 bg-muted rounded text-foreground text-sm",children:o.serial_port})]}):b.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[b.jsx("div",{className:"w-2 h-2 rounded-full bg-gray-500"}),b.jsx("span",{children:"Not connected"})]})]}),b.jsx(Us,{}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"max-contacts",children:"Max Contacts on Radio"}),b.jsx(Xt,{id:"max-contacts",type:"number",min:"1",max:"1000",value:he,onChange:xe=>ae(xe.target.value)}),b.jsx("p",{className:"text-xs text-muted-foreground",children:"Recent non-repeater contacts loaded to radio for DM auto-ACK (1-1000)"})]}),b.jsx(Pn,{onClick:Rt,disabled:pe,className:"w-full",children:pe?"Saving...":"Save Settings"}),b.jsx(Us,{}),b.jsx(Pn,{variant:"outline",onClick:ot,disabled:Y||pe,className:"w-full border-red-500/50 text-red-400 hover:bg-red-500/10",children:Y?"Rebooting...":"Reboot Radio"}),de&&b.jsx("div",{className:"text-sm text-destructive",children:de})]}),b.jsxs(Jr,{value:"database",className:"space-y-4 mt-4",children:[b.jsxs("div",{className:"space-y-3",children:[b.jsxs("div",{className:"flex justify-between items-center",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"Database size"}),b.jsxs("span",{className:"font-medium",children:[(o==null?void 0:o.database_size_mb)??"?"," MB"]})]}),o!=null&&o.oldest_undecrypted_timestamp?b.jsxs("div",{className:"flex justify-between items-center",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"Oldest undecrypted packet"}),b.jsxs("span",{className:"font-medium",children:[Qs(o.oldest_undecrypted_timestamp),b.jsxs("span",{className:"text-muted-foreground ml-1",children:["(",Math.floor((Date.now()/1e3-o.oldest_undecrypted_timestamp)/86400)," ","days old)"]})]})]}):b.jsxs("div",{className:"flex justify-between items-center",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"Oldest undecrypted packet"}),b.jsx("span",{className:"text-muted-foreground",children:"None"})]})]}),b.jsx(Us,{}),b.jsxs("div",{className:"space-y-3",children:[b.jsx(Ot,{children:"Cleanup Old Packets"}),b.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)."}),b.jsxs("div",{className:"flex gap-2 items-end",children:[b.jsxs("div",{className:"space-y-1",children:[b.jsx(Ot,{htmlFor:"retention-days",className:"text-xs",children:"Days to retain"}),b.jsx(Xt,{id:"retention-days",type:"number",min:"1",max:"365",value:ke,onChange:xe=>Ae(xe.target.value),className:"w-24"})]}),b.jsx(Pn,{variant:"outline",onClick:Xe,disabled:We,children:We?"Cleaning...":"Cleanup"})]})]})]}),b.jsx(Jr,{value:"advertise",className:"space-y-4 mt-4",children:b.jsxs("div",{className:"text-center py-8",children:[b.jsx("p",{className:"text-muted-foreground mb-6",children:"Send a flood advertisement to announce your presence on the mesh network."}),b.jsx(Pn,{size:"lg",onClick:Qe,disabled:R||!(o!=null&&o.radio_connected),className:"bg-green-600 hover:bg-green-700 text-white px-12 py-6 text-lg",children:R?"Sending...":"Send Advertisement"}),!(o!=null&&o.radio_connected)&&b.jsx("p",{className:"text-sm text-destructive mt-4",children:"Radio not connected"})]})})]}):b.jsx("div",{className:"py-8 text-center text-muted-foreground",children:"Loading configuration..."})]})})}function z2(r){return new Date(r*1e3).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function hm(r){return r.split("_").map(a=>a.charAt(0)+a.slice(1).toLowerCase()).join(" ")}function H2(r){if(!r.decrypted||!r.decrypted_info)return hm(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}`:hm(r.payload_type)}function V2(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 U2({packets:r}){const a=F.useRef(null);if(F.useEffect(()=>{a.current&&(a.current.scrollTop=a.current.scrollHeight)},[r]),r.length===0)return b.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,d)=>l.timestamp-d.timestamp);return b.jsx("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-3",ref:a,children:o.map(l=>b.jsxs("div",{className:"py-2 px-3 bg-muted rounded",children:[b.jsxs("div",{className:l.decrypted?"text-primary":"text-destructive",children:[!l.decrypted&&b.jsx("span",{className:"mr-1",children:"🔒"}),H2(l)," • ",z2(l.timestamp)]}),(l.snr!==null||l.rssi!==null)&&b.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:V2(l)}),b.jsx("div",{className:"font-mono text-[11px] break-all text-muted-foreground/70 mt-1",children:l.data.toUpperCase()})]},l.id))})}function vx(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 Z2(r,a,o){a.center!==o.center&&r.setLatLng(a.center),a.radius!=null&&a.radius!==o.radius&&r.setRadius(a.radius)}const W2=1;function q2(r){return Object.freeze({__version:W2,map:r})}function G2(r,a){return Object.freeze({...r,...a})}const yx=F.createContext(null),_x=yx.Provider;function Jc(){const r=F.useContext(yx);if(r==null)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of ");return r}function K2(r){function a(o,l){const{instance:d,context:f}=r(o).current;return F.useImperativeHandle(l,()=>d),o.children==null?null:Ce.createElement(_x,{value:f},o.children)}return F.forwardRef(a)}function Q2(r){function a(o,l){const[d,f]=F.useState(!1),{instance:p}=r(o,f).current;F.useImperativeHandle(l,()=>p),F.useEffect(function(){d&&p.update()},[p,d,o.children]);const h=p._contentNode;return h?v0.createPortal(o.children,h):null}return F.forwardRef(a)}function $2(r){function a(o,l){const{instance:d}=r(o).current;return F.useImperativeHandle(l,()=>d),null}return F.forwardRef(a)}function F0(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 ed(r,a){const o=r.pane??a.pane;return o?{...r,pane:o}:r}function Y2(r,a){return function(l,d){const f=Jc(),p=r(ed(l,f),f);return vx(f.map,l.attribution),F0(p.current,l.eventHandlers),a(p.current,f,l,d),p}}var sl={exports:{}};/* @preserve +`).map(($,de,fe)=>b.jsxs("span",{children:[Kw($,h),de0&&b.jsx(um,{paths:j.paths,variant:"inline",onClick:()=>C({paths:j.paths,senderInfo:I(j,Z,ne)})})]}),j.outgoing&&(j.acked>0?` ✓${j.acked>1?j.acked:""}`:" ?")]})]})]},j.id)})]}),w&&b.jsx("button",{onClick:P,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:b.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:b.jsx("polyline",{points:"6 9 12 15 18 9"})})}),T&&b.jsx(Zw,{open:!0,onClose:()=>C(null),paths:T.paths,senderInfo:T.senderInfo,contacts:a,config:g??null})]})}const cm=156,$w=140,Yw=156,Xw=120,Jw=8,e2=F.forwardRef(function({onSend:a,disabled:o,placeholder:l,isRepeaterMode:d,conversationType:f,senderName:p},h){const[g,m]=F.useState(""),[v,y]=F.useState(!1),w=F.useRef(null);F.useImperativeHandle(h,()=>({appendText:I=>{var z;m(H=>H+I),(z=w.current)==null||z.focus()}}));const B=F.useMemo(()=>{if(f==="contact")return{warningAt:$w,dangerAt:cm,hardLimit:cm};if(f==="channel"){const I=(p==null?void 0:p.length)??10,z=Math.max(1,Yw-I-2);return{warningAt:Xw,dangerAt:Math.max(1,z-Jw),hardLimit:z}}return null},[f,p]),{limitState:T,warningMessage:C}=F.useMemo(()=>{if(!B)return{limitState:"normal",warningMessage:null};const I=g.length;return I>=B.hardLimit?{limitState:"error",warningMessage:"likely truncated by radio"}:I>=B.dangerAt?{limitState:"danger",warningMessage:"may impact multi-repeater hop delivery"}:I>=B.warningAt?{limitState:"warning",warningMessage:"may impact multi-repeater hop delivery"}:{limitState:"normal",warningMessage:null}},[g.length,B]),k=B?B.hardLimit-g.length:0,D=F.useCallback(async I=>{I.preventDefault();const z=g.trim();if(d){if(v||o)return;y(!0);try{await a(z),m("")}catch(H){console.error("Failed to request telemetry:",H),wt.error("Failed to request telemetry",{description:H instanceof Error?H.message:"Check radio connection"});return}finally{y(!1)}setTimeout(()=>{var H;return(H=w.current)==null?void 0:H.focus()},0)}else{if(!z||v||o)return;y(!0);try{await a(z),m("")}catch(H){console.error("Failed to send message:",H),wt.error("Failed to send message",{description:H instanceof Error?H.message:"Check radio connection"});return}finally{y(!1)}setTimeout(()=>{var H;return(H=w.current)==null?void 0:H.focus()},0)}},[g,v,o,a,d]),P=F.useCallback(I=>{I.key==="Enter"&&!I.shiftKey&&(I.preventDefault(),D(I))},[D]),S=d?!0:g.trim().length>0,N=!d&&B!==null;return b.jsxs("form",{className:"px-4 py-3 border-t border-border flex flex-col gap-1",onSubmit:D,children:[b.jsxs("div",{className:"flex gap-2",children:[b.jsx(Xt,{ref:w,type:d?"password":"text",autoComplete:d?"off":void 0,value:g,onChange:I=>m(I.target.value),onKeyDown:P,placeholder:l||(d?"Enter password for admin login...":"Type a message..."),disabled:o||v,className:"flex-1 min-w-0"}),b.jsx(Pn,{type:"submit",disabled:o||v||!S,className:"flex-shrink-0",children:v?d?"Logging in...":"Sending...":d?g.trim()?"Log in with password":"Log in as guest/use repeater ACLs":"Send"})]}),N&&b.jsxs("div",{className:"flex items-center justify-end gap-2 text-xs",children:[b.jsxs("span",{className:at("tabular-nums",T==="error"||T==="danger"?"text-red-500 font-medium":T==="warning"?"text-yellow-500":"text-muted-foreground"),children:[g.length,"/",B.hardLimit,k<0&&` (${k})`]}),C&&b.jsxs("span",{className:at(T==="error"?"text-red-500":"text-yellow-500"),children:["— ",C]})]})]})});function dm(r){const a=t2(r),o=F.forwardRef((l,d)=>{const{children:f,...p}=l,h=F.Children.toArray(f),g=h.find(r2);if(g){const m=g.props.children,v=h.map(y=>y===g?F.Children.count(m)>1?F.Children.only(null):F.isValidElement(m)?m.props.children:null:y);return b.jsx(a,{...p,ref:d,children:F.isValidElement(m)?F.cloneElement(m,void 0,v):null})}return b.jsx(a,{...p,ref:d,children:f})});return o.displayName=`${r}.Slot`,o}function t2(r){const a=F.forwardRef((o,l)=>{const{children:d,...f}=o;if(F.isValidElement(d)){const p=o2(d),h=i2(f,d.props);return d.type!==F.Fragment&&(h.ref=l?fl(l,p):p),F.cloneElement(d,h)}return F.Children.count(d)>1?F.Children.only(null):null});return a.displayName=`${r}.SlotClone`,a}var n2=Symbol("radix.slottable");function r2(r){return F.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===n2}function i2(r,a){const o={...a};for(const l in a){const d=r[l],f=a[l];/^on[A-Z]/.test(l)?d&&f?o[l]=(...h)=>{const g=f(...h);return d(...h),g}:d&&(o[l]=d):l==="style"?o[l]={...d,...f}:l==="className"&&(o[l]=[d,f].filter(Boolean).join(" "))}return{...r,...o}}function o2(r){var l,d;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=(d=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:d.get,o=a&&"isReactWarning"in a&&a.isReactWarning,o?r.props.ref:r.props.ref||r.ref)}function s2(r){const a=r+"CollectionProvider",[o,l]=hl(a),[d,f]=o(a,{collectionRef:{current:null},itemMap:new Map}),p=C=>{const{scope:k,children:D}=C,P=Ce.useRef(null),S=Ce.useRef(new Map).current;return b.jsx(d,{scope:k,itemMap:S,collectionRef:P,children:D})};p.displayName=a;const h=r+"CollectionSlot",g=dm(h),m=Ce.forwardRef((C,k)=>{const{scope:D,children:P}=C,S=f(h,D),N=vr(k,S.collectionRef);return b.jsx(g,{ref:N,children:P})});m.displayName=h;const v=r+"CollectionItemSlot",y="data-radix-collection-item",w=dm(v),B=Ce.forwardRef((C,k)=>{const{scope:D,children:P,...S}=C,N=Ce.useRef(null),I=vr(k,N),z=f(v,D);return Ce.useEffect(()=>(z.itemMap.set(N,{ref:N,...S}),()=>void z.itemMap.delete(N))),b.jsx(w,{[y]:"",ref:I,children:P})});B.displayName=v;function T(C){const k=f(r+"CollectionConsumer",C);return Ce.useCallback(()=>{const P=k.collectionRef.current;if(!P)return[];const S=Array.from(P.querySelectorAll(`[${y}]`));return Array.from(k.itemMap.values()).sort((z,H)=>S.indexOf(z.ref.current)-S.indexOf(H.ref.current))},[k.collectionRef,k.itemMap])}return[{Provider:p,Slot:m,ItemSlot:B},T,l]}var a2=F.createContext(void 0);function zA(r){const a=F.useContext(a2);return r||a||"ltr"}var Wf="rovingFocusGroup.onEntryFocus",l2={bubbles:!1,cancelable:!0},pl="RovingFocusGroup",[s0,HA,u2]=s2(pl),[c2,VA]=hl(pl,[u2]),[d2,f2]=c2(pl),UA=F.forwardRef((r,a)=>b.jsx(s0.Provider,{scope:r.__scopeRovingFocusGroup,children:b.jsx(s0.Slot,{scope:r.__scopeRovingFocusGroup,children:b.jsx(h2,{...r,ref:a})})}));UA.displayName=pl;var h2=F.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:o,orientation:l,loop:d=!1,dir:f,currentTabStopId:p,defaultCurrentTabStopId:h,onCurrentTabStopIdChange:g,onEntryFocus:m,preventScrollOnEntryFocus:v=!1,...y}=r,w=F.useRef(null),B=vr(a,w),T=zA(f),[C,k]=zc({prop:p,defaultProp:h??null,onChange:g,caller:pl}),[D,P]=F.useState(!1),S=Ys(m),N=HA(o),I=F.useRef(!1),[z,H]=F.useState(0);return F.useEffect(()=>{const j=w.current;if(j)return j.addEventListener(Wf,S),()=>j.removeEventListener(Wf,S)},[S]),b.jsx(d2,{scope:o,orientation:l,dir:T,loop:d,currentTabStopId:C,onItemFocus:F.useCallback(j=>k(j),[k]),onItemShiftTab:F.useCallback(()=>P(!0),[]),onFocusableItemAdd:F.useCallback(()=>H(j=>j+1),[]),onFocusableItemRemove:F.useCallback(()=>H(j=>j-1),[]),children:b.jsx(hn.div,{tabIndex:D||z===0?-1:0,"data-orientation":l,...y,ref:B,style:{outline:"none",...r.style},onMouseDown:un(r.onMouseDown,()=>{I.current=!0}),onFocus:un(r.onFocus,j=>{const ee=!I.current;if(j.target===j.currentTarget&&ee&&!D){const Z=new CustomEvent(Wf,l2);if(j.currentTarget.dispatchEvent(Z),!Z.defaultPrevented){const V=N().filter(ae=>ae.focusable),ne=V.find(ae=>ae.active),J=V.find(ae=>ae.id===C),he=[ne,J,...V].filter(Boolean).map(ae=>ae.ref.current);qA(he,v)}}I.current=!1}),onBlur:un(r.onBlur,()=>P(!1))})})}),ZA="RovingFocusGroupItem",WA=F.forwardRef((r,a)=>{const{__scopeRovingFocusGroup:o,focusable:l=!0,active:d=!1,tabStopId:f,children:p,...h}=r,g=ll(),m=f||g,v=f2(ZA,o),y=v.currentTabStopId===m,w=HA(o),{onFocusableItemAdd:B,onFocusableItemRemove:T,currentTabStopId:C}=v;return F.useEffect(()=>{if(l)return B(),()=>T()},[l,B,T]),b.jsx(s0.ItemSlot,{scope:o,id:m,focusable:l,active:d,children:b.jsx(hn.span,{tabIndex:y?0:-1,"data-orientation":v.orientation,...h,ref:a,onMouseDown:un(r.onMouseDown,k=>{l?v.onItemFocus(m):k.preventDefault()}),onFocus:un(r.onFocus,()=>v.onItemFocus(m)),onKeyDown:un(r.onKeyDown,k=>{if(k.key==="Tab"&&k.shiftKey){v.onItemShiftTab();return}if(k.target!==k.currentTarget)return;const D=g2(k,v.orientation,v.dir);if(D!==void 0){if(k.metaKey||k.ctrlKey||k.altKey||k.shiftKey)return;k.preventDefault();let S=w().filter(N=>N.focusable).map(N=>N.ref.current);if(D==="last")S.reverse();else if(D==="prev"||D==="next"){D==="prev"&&S.reverse();const N=S.indexOf(k.currentTarget);S=v.loop?A2(S,N+1):S.slice(N+1)}setTimeout(()=>qA(S))}}),children:typeof p=="function"?p({isCurrentTabStop:y,hasTabStop:C!=null}):p})})});WA.displayName=ZA;var p2={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function m2(r,a){return a!=="rtl"?r:r==="ArrowLeft"?"ArrowRight":r==="ArrowRight"?"ArrowLeft":r}function g2(r,a,o){const l=m2(r.key,o);if(!(a==="vertical"&&["ArrowLeft","ArrowRight"].includes(l))&&!(a==="horizontal"&&["ArrowUp","ArrowDown"].includes(l)))return p2[l]}function qA(r,a=!1){const o=document.activeElement;for(const l of r)if(l===o||(l.focus({preventScroll:a}),document.activeElement!==o))return}function A2(r,a){return r.map((o,l)=>r[(a+l)%r.length])}var x2=UA,v2=WA,Yc="Tabs",[y2]=hl(Yc,[VA]),GA=VA(),[_2,P0]=y2(Yc),KA=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,onValueChange:d,defaultValue:f,orientation:p="horizontal",dir:h,activationMode:g="automatic",...m}=r,v=zA(h),[y,w]=zc({prop:l,onChange:d,defaultProp:f??"",caller:Yc});return b.jsx(_2,{scope:o,baseId:ll(),value:y,onValueChange:w,orientation:p,dir:v,activationMode:g,children:b.jsx(hn.div,{dir:v,"data-orientation":p,...m,ref:a})})});KA.displayName=Yc;var QA="TabsList",$A=F.forwardRef((r,a)=>{const{__scopeTabs:o,loop:l=!0,...d}=r,f=P0(QA,o),p=GA(o);return b.jsx(x2,{asChild:!0,...p,orientation:f.orientation,dir:f.dir,loop:l,children:b.jsx(hn.div,{role:"tablist","aria-orientation":f.orientation,...d,ref:a})})});$A.displayName=QA;var YA="TabsTrigger",XA=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,disabled:d=!1,...f}=r,p=P0(YA,o),h=GA(o),g=tx(p.baseId,l),m=nx(p.baseId,l),v=l===p.value;return b.jsx(v2,{asChild:!0,...h,focusable:!d,active:v,children:b.jsx(hn.button,{type:"button",role:"tab","aria-selected":v,"aria-controls":m,"data-state":v?"active":"inactive","data-disabled":d?"":void 0,disabled:d,id:g,...f,ref:a,onMouseDown:un(r.onMouseDown,y=>{!d&&y.button===0&&y.ctrlKey===!1?p.onValueChange(l):y.preventDefault()}),onKeyDown:un(r.onKeyDown,y=>{[" ","Enter"].includes(y.key)&&p.onValueChange(l)}),onFocus:un(r.onFocus,()=>{const y=p.activationMode!=="manual";!v&&!d&&y&&p.onValueChange(l)})})})});XA.displayName=YA;var JA="TabsContent",ex=F.forwardRef((r,a)=>{const{__scopeTabs:o,value:l,forceMount:d,children:f,...p}=r,h=P0(JA,o),g=tx(h.baseId,l),m=nx(h.baseId,l),v=l===h.value,y=F.useRef(v);return F.useEffect(()=>{const w=requestAnimationFrame(()=>y.current=!1);return()=>cancelAnimationFrame(w)},[]),b.jsx(ta,{present:d||v,children:({present:w})=>b.jsx(hn.div,{"data-state":v?"active":"inactive","data-orientation":h.orientation,role:"tabpanel","aria-labelledby":g,hidden:!w,id:m,tabIndex:0,...p,ref:a,style:{...r.style,animationDuration:y.current?"0s":void 0},children:w&&f})})});ex.displayName=JA;function tx(r,a){return`${r}-trigger-${a}`}function nx(r,a){return`${r}-content-${a}`}var w2=KA,rx=$A,ix=XA,ox=ex;const sx=w2,T0=F.forwardRef(({className:r,...a},o)=>b.jsx(rx,{ref:o,className:at("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",r),...a}));T0.displayName=rx.displayName;const Xr=F.forwardRef(({className:r,...a},o)=>b.jsx(ix,{ref:o,className:at("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}));Xr.displayName=ix.displayName;const Jr=F.forwardRef(({className:r,...a},o)=>b.jsx(ox,{ref:o,className:at("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r),...a}));Jr.displayName=ox.displayName;var b2=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],C2=b2.reduce((r,a)=>{const o=w0(`Primitive.${a}`),l=F.forwardRef((d,f)=>{const{asChild:p,...h}=d,g=p?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),b.jsx(g,{...h,ref:f})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{}),E2="Label",ax=F.forwardRef((r,a)=>b.jsx(C2.label,{...r,ref:a,onMouseDown:o=>{var d;o.target.closest("button, input, select, textarea")||((d=r.onMouseDown)==null||d.call(r,o),!o.defaultPrevented&&o.detail>1&&o.preventDefault())}}));ax.displayName=E2;var lx=ax;const k2=b0("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Ot=F.forwardRef(({className:r,...a},o)=>b.jsx(lx,{ref:o,className:at(k2(),r),...a}));Ot.displayName=lx.displayName;function S2(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 B2(r){const[a,o]=F.useState(void 0);return $s(()=>{if(r){o({width:r.offsetWidth,height:r.offsetHeight});const l=new ResizeObserver(d=>{if(!Array.isArray(d)||!d.length)return;const f=d[0];let p,h;if("borderBoxSize"in f){const g=f.borderBoxSize,m=Array.isArray(g)?g[0]:g;p=m.inlineSize,h=m.blockSize}else p=r.offsetWidth,h=r.offsetHeight;o({width:p,height:h})});return l.observe(r,{box:"border-box"}),()=>l.unobserve(r)}else o(void 0)},[r]),a}var Xc="Checkbox",[P2]=hl(Xc),[T2,D0]=P2(Xc);function D2(r){const{__scopeCheckbox:a,checked:o,children:l,defaultChecked:d,disabled:f,form:p,name:h,onCheckedChange:g,required:m,value:v="on",internal_do_not_use_render:y}=r,[w,B]=zc({prop:o,defaultProp:d??!1,onChange:g,caller:Xc}),[T,C]=F.useState(null),[k,D]=F.useState(null),P=F.useRef(!1),S=T?!!p||!!T.closest("form"):!0,N={checked:w,disabled:f,setChecked:B,control:T,setControl:C,name:h,form:p,value:v,hasConsumerStoppedPropagationRef:P,required:m,defaultChecked:uo(d)?!1:d,isFormControl:S,bubbleInput:k,setBubbleInput:D};return b.jsx(T2,{scope:a,...N,children:R2(y)?y(N):l})}var ux="CheckboxTrigger",cx=F.forwardRef(({__scopeCheckbox:r,onKeyDown:a,onClick:o,...l},d)=>{const{control:f,value:p,disabled:h,checked:g,required:m,setControl:v,setChecked:y,hasConsumerStoppedPropagationRef:w,isFormControl:B,bubbleInput:T}=D0(ux,r),C=vr(d,v),k=F.useRef(g);return F.useEffect(()=>{const D=f==null?void 0:f.form;if(D){const P=()=>y(k.current);return D.addEventListener("reset",P),()=>D.removeEventListener("reset",P)}},[f,y]),b.jsx(hn.button,{type:"button",role:"checkbox","aria-checked":uo(g)?"mixed":g,"aria-required":m,"data-state":mx(g),"data-disabled":h?"":void 0,disabled:h,value:p,...l,ref:C,onKeyDown:un(a,D=>{D.key==="Enter"&&D.preventDefault()}),onClick:un(o,D=>{y(P=>uo(P)?!0:!P),T&&B&&(w.current=D.isPropagationStopped(),w.current||D.stopPropagation())})})});cx.displayName=ux;var R0=F.forwardRef((r,a)=>{const{__scopeCheckbox:o,name:l,checked:d,defaultChecked:f,required:p,disabled:h,value:g,onCheckedChange:m,form:v,...y}=r;return b.jsx(D2,{__scopeCheckbox:o,checked:d,defaultChecked:f,disabled:h,required:p,onCheckedChange:m,name:l,form:v,value:g,internal_do_not_use_render:({isFormControl:w})=>b.jsxs(b.Fragment,{children:[b.jsx(cx,{...y,ref:a,__scopeCheckbox:o}),w&&b.jsx(px,{__scopeCheckbox:o})]})})});R0.displayName=Xc;var dx="CheckboxIndicator",fx=F.forwardRef((r,a)=>{const{__scopeCheckbox:o,forceMount:l,...d}=r,f=D0(dx,o);return b.jsx(ta,{present:l||uo(f.checked)||f.checked===!0,children:b.jsx(hn.span,{"data-state":mx(f.checked),"data-disabled":f.disabled?"":void 0,...d,ref:a,style:{pointerEvents:"none",...r.style}})})});fx.displayName=dx;var hx="CheckboxBubbleInput",px=F.forwardRef(({__scopeCheckbox:r,...a},o)=>{const{control:l,hasConsumerStoppedPropagationRef:d,checked:f,defaultChecked:p,required:h,disabled:g,name:m,value:v,form:y,bubbleInput:w,setBubbleInput:B}=D0(hx,r),T=vr(o,B),C=S2(f),k=B2(l);F.useEffect(()=>{const P=w;if(!P)return;const S=window.HTMLInputElement.prototype,I=Object.getOwnPropertyDescriptor(S,"checked").set,z=!d.current;if(C!==f&&I){const H=new Event("click",{bubbles:z});P.indeterminate=uo(f),I.call(P,uo(f)?!1:f),P.dispatchEvent(H)}},[w,C,f,d]);const D=F.useRef(uo(f)?!1:f);return b.jsx(hn.input,{type:"checkbox","aria-hidden":!0,defaultChecked:p??D.current,required:h,disabled:g,name:m,value:v,form:y,...a,tabIndex:-1,ref:T,style:{...a.style,...k,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});px.displayName=hx;function R2(r){return typeof r=="function"}function uo(r){return r==="indeterminate"}function mx(r){return uo(r)?"indeterminate":r?"checked":"unchecked"}const gx=F.forwardRef(({className:r,...a},o)=>b.jsx(R0,{ref:o,className:at("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:b.jsx(fx,{className:at("flex items-center justify-center text-current"),children:b.jsx(My,{className:"h-4 w-4"})})}));gx.displayName=R0.displayName;function F2({open:r,contacts:a,undecryptedCount:o,onClose:l,onSelectConversation:d,onCreateContact:f,onCreateChannel:p,onCreateHashtagChannel:h}){const[g,m]=F.useState("existing"),[v,y]=F.useState(""),[w,B]=F.useState(""),[T,C]=F.useState(""),[k,D]=F.useState(!1),[P,S]=F.useState(""),[N,I]=F.useState(!1),z=F.useRef(null),H=async()=>{S(""),I(!0);try{if(g==="new-contact"){if(!v.trim()||!w.trim()){S("Name and public key are required");return}await f(v.trim(),w.trim(),k),d({type:"contact",id:w.trim(),name:v.trim()})}else if(g==="new-room"){if(!v.trim()||!T.trim()){S("Room name and key are required");return}await p(v.trim(),T.trim(),k)}else if(g==="hashtag"){const V=v.trim(),ne=j(V);if(ne){S(ne);return}await h(`#${V}`,k)}l()}catch(V){S(V instanceof Error?V.message:"Failed to create")}finally{I(!1)}},j=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",ee=async()=>{var J;S("");const V=v.trim(),ne=j(V);if(ne){S(ne);return}I(!0);try{await h(`#${V}`,k),y(""),(J=z.current)==null||J.focus()}catch(ie){S(ie instanceof Error?ie.message:"Failed to create")}finally{I(!1)}},Z=g!=="existing"&&o>0;return b.jsx(S0,{open:r,onOpenChange:V=>!V&&l(),children:b.jsxs(Gc,{className:"sm:max-w-[500px]",children:[b.jsxs(Kc,{children:[b.jsx(Qc,{children:"New Conversation"}),b.jsxs($c,{className:"sr-only",children:[g==="existing"&&"Select an existing contact to start a conversation",g==="new-contact"&&"Add a new contact by entering their name and public key",g==="new-room"&&"Create a private room with a shared encryption key",g==="hashtag"&&"Join a public hashtag channel"]})]}),b.jsxs(sx,{value:g,onValueChange:V=>m(V),className:"w-full",children:[b.jsxs(T0,{className:"grid w-full grid-cols-4",children:[b.jsx(Xr,{value:"existing",children:"Existing"}),b.jsx(Xr,{value:"new-contact",children:"Contact"}),b.jsx(Xr,{value:"new-room",children:"Room"}),b.jsx(Xr,{value:"hashtag",children:"Hashtag"})]}),b.jsx(Jr,{value:"existing",className:"mt-4",children:b.jsx("div",{className:"max-h-[300px] overflow-y-auto rounded-md border",children:a.length===0?b.jsx("div",{className:"p-4 text-center text-muted-foreground",children:"No contacts available"}):a.map(V=>b.jsx("div",{className:"cursor-pointer px-4 py-2 hover:bg-accent",onClick:()=>{d({type:"contact",id:V.public_key,name:Ei(V.name,V.public_key)}),l()},children:Ei(V.name,V.public_key)},V.public_key))})}),b.jsxs(Jr,{value:"new-contact",className:"mt-4 space-y-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"contact-name",children:"Name"}),b.jsx(Xt,{id:"contact-name",value:v,onChange:V=>y(V.target.value),placeholder:"Contact name"})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"contact-key",children:"Public Key"}),b.jsx(Xt,{id:"contact-key",value:w,onChange:V=>B(V.target.value),placeholder:"64-character hex public key"})]})]}),b.jsxs(Jr,{value:"new-room",className:"mt-4 space-y-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"room-name",children:"Room Name"}),b.jsx(Xt,{id:"room-name",value:v,onChange:V=>y(V.target.value),placeholder:"Room name"})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"room-key",children:"Room Key"}),b.jsxs("div",{className:"flex gap-2",children:[b.jsx(Xt,{id:"room-key",value:T,onChange:V=>C(V.target.value),placeholder:"Pre-shared key (hex)",className:"flex-1"}),b.jsx(Pn,{type:"button",variant:"outline",size:"icon",onClick:()=>{const V=new Uint8Array(16);crypto.getRandomValues(V);const ne=Array.from(V).map(J=>J.toString(16).padStart(2,"0")).join("");C(ne)},title:"Generate random key",children:"🎲"})]})]})]}),b.jsx(Jr,{value:"hashtag",className:"mt-4",children:b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"hashtag-name",children:"Hashtag Channel"}),b.jsxs("div",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"#"}),b.jsx(Xt,{ref:z,id:"hashtag-name",value:v,onChange:V=>y(V.target.value),placeholder:"channel-name",className:"flex-1"})]})]})})]}),Z&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex items-center justify-end space-x-2",children:[b.jsxs(Ot,{htmlFor:"try-historical",className:"text-sm text-muted-foreground cursor-pointer",children:["Try decrypting ",o.toLocaleString()," stored packet",o!==1?"s":""]}),b.jsx(gx,{id:"try-historical",checked:k,onCheckedChange:V=>D(V===!0)})]}),k&&b.jsx("p",{className:"text-xs text-muted-foreground text-right",children:"Messages will stream in as they decrypt in the background"})]}),P&&b.jsx("div",{className:"text-sm text-destructive",children:P}),b.jsxs(B0,{children:[b.jsx(Pn,{variant:"outline",onClick:l,children:"Cancel"}),g==="hashtag"&&b.jsx(Pn,{variant:"secondary",onClick:ee,disabled:N,children:N?"Creating...":"Create & Add Another"}),g!=="existing"&&b.jsx(Pn,{onClick:H,disabled:N,children:N?"Creating...":"Create"})]})]})})}var N2=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],L2=N2.reduce((r,a)=>{const o=w0(`Primitive.${a}`),l=F.forwardRef((d,f)=>{const{asChild:p,...h}=d,g=p?o:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),b.jsx(g,{...h,ref:f})});return l.displayName=`Primitive.${a}`,{...r,[a]:l}},{}),M2="Separator",fm="horizontal",I2=["horizontal","vertical"],Ax=F.forwardRef((r,a)=>{const{decorative:o,orientation:l=fm,...d}=r,f=O2(l)?l:fm,h=o?{role:"none"}:{"aria-orientation":f==="vertical"?f:void 0,role:"separator"};return b.jsx(L2.div,{"data-orientation":f,...h,...d,ref:a})});Ax.displayName=M2;function O2(r){return I2.includes(r)}var xx=Ax;const Us=F.forwardRef(({className:r,orientation:a="horizontal",decorative:o=!0,...l},d)=>b.jsx(xx,{ref:d,decorative:o,orientation:a,className:at("shrink-0 bg-border",a==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",r),...l}));Us.displayName=xx.displayName;const qf=[{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 j2({open:r,config:a,health:o,appSettings:l,onClose:d,onSave:f,onSaveAppSettings:p,onSetPrivateKey:h,onReboot:g,onAdvertise:m,onHealthRefresh:v}){const[y,w]=F.useState("radio"),[B,T]=F.useState(""),[C,k]=F.useState(""),[D,P]=F.useState(""),[S,N]=F.useState(""),[I,z]=F.useState(""),[H,j]=F.useState(""),[ee,Z]=F.useState(""),[V,ne]=F.useState(""),[J,ie]=F.useState(""),[he,ae]=F.useState(""),[pe,G]=F.useState(!1),[Y,q]=F.useState(!1),[R,U]=F.useState(!1),[K,$]=F.useState(!1),[de,fe]=F.useState(""),[ke,Ae]=F.useState("14"),[We,$e]=F.useState(!1);F.useEffect(()=>{a&&(T(a.name),k(String(a.lat)),P(String(a.lon)),N(String(a.tx_power)),z(String(a.radio.freq)),j(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 bt=F.useMemo(()=>{const xe=parseFloat(I),Te=parseFloat(H),pt=parseInt(ee,10),Zt=parseInt(V,10);for(const tn of qf)if(tn.freq===xe&&tn.bw===Te&&tn.sf===pt&&tn.cr===Zt)return tn.name;return"custom"},[I,H,ee,V]),ft=xe=>{if(xe==="custom")return;const Te=qf.find(pt=>pt.name===xe);Te&&(z(String(Te.freq)),j(String(Te.bw)),Z(String(Te.sf)),ne(String(Te.cr)))},Be=()=>{if(!navigator.geolocation){wt.error("Geolocation not supported",{description:"Your browser does not support geolocation"});return}$(!0),navigator.geolocation.getCurrentPosition(xe=>{k(xe.coords.latitude.toFixed(6)),P(xe.coords.longitude.toFixed(6)),$(!1),wt.success("Location updated")},xe=>{$(!1),wt.error("Failed to get location",{description:xe.message})},{enableHighAccuracy:!0,timeout:1e4})},Ze=async()=>{fe(""),G(!0);try{const xe={lat:parseFloat(C),lon:parseFloat(D),tx_power:parseInt(S,10),radio:{freq:parseFloat(I),bw:parseFloat(H),sf:parseInt(ee,10),cr:parseInt(V,10)}};await f(xe),wt.success("Radio config saved, rebooting..."),G(!1),q(!0),await g(),d()}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save"),G(!1)}finally{q(!1)}},lt=async()=>{fe(""),G(!0);try{await f({name:B}),wt.success("Identity saved")}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save")}finally{G(!1)}},Rt=async()=>{fe(""),G(!0);try{const xe=parseInt(he,10);!isNaN(xe)&&xe!==(l==null?void 0:l.max_radio_contacts)&&await p({max_radio_contacts:xe}),wt.success("Serial settings saved")}catch(xe){fe(xe instanceof Error?xe.message:"Failed to save")}finally{G(!1)}},vt=async()=>{if(!J.trim()){fe("Private key is required");return}fe(""),G(!0);try{await h(J.trim()),ie(""),wt.success("Private key set, rebooting..."),G(!1),q(!0),await g(),d()}catch(xe){fe(xe instanceof Error?xe.message:"Failed to set private key"),G(!1)}finally{q(!1)}},ot=async()=>{if(confirm("Are you sure you want to reboot the radio? The connection will drop temporarily.")){fe(""),q(!0);try{await g(),d()}catch(xe){fe(xe instanceof Error?xe.message:"Failed to reboot radio")}finally{q(!1)}}},Qe=async()=>{U(!0);try{await m()}finally{U(!1)}},Xe=async()=>{const xe=parseInt(ke,10);if(isNaN(xe)||xe<1){wt.error("Invalid retention days",{description:"Retention days must be at least 1"});return}$e(!0);try{const Te=await rt.runMaintenance(xe);wt.success("Database cleanup complete",{description:`Deleted ${Te.packets_deleted} old packet${Te.packets_deleted===1?"":"s"}`}),await v()}catch(Te){console.error("Failed to run maintenance:",Te),wt.error("Database cleanup failed",{description:Te instanceof Error?Te.message:"Unknown error"})}finally{$e(!1)}};return b.jsx(S0,{open:r,onOpenChange:xe=>!xe&&d(),children:b.jsxs(Gc,{className:"sm:max-w-[500px] max-h-[90vh] overflow-y-auto",children:[b.jsxs(Kc,{children:[b.jsx(Qc,{children:"Radio & Settings"}),b.jsxs($c,{className:"sr-only",children:[y==="radio"&&"Configure radio frequency, power, and location settings",y==="identity"&&"Manage radio name, public key, and private key",y==="serial"&&"View serial port connection and configure contact sync",y==="database"&&"View database statistics and clean up old packets",y==="advertise"&&"Send a flood advertisement to announce your presence"]})]}),a?b.jsxs(sx,{value:y,onValueChange:xe=>w(xe),className:"w-full",children:[b.jsxs(T0,{className:"grid w-full grid-cols-5",children:[b.jsx(Xr,{value:"radio",children:"Radio"}),b.jsx(Xr,{value:"identity",children:"Identity"}),b.jsx(Xr,{value:"serial",children:"Serial"}),b.jsx(Xr,{value:"database",children:"Database"}),b.jsx(Xr,{value:"advertise",children:"Advertise"})]}),b.jsxs(Jr,{value:"radio",className:"space-y-4 mt-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"preset",children:"Preset"}),b.jsxs("select",{id:"preset",value:bt,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:[b.jsx("option",{value:"custom",children:"Custom"}),qf.map(xe=>b.jsx("option",{value:xe.name,children:xe.name},xe.name))]})]}),b.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"freq",children:"Frequency (MHz)"}),b.jsx(Xt,{id:"freq",type:"number",step:"any",value:I,onChange:xe=>z(xe.target.value)})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"bw",children:"Bandwidth (kHz)"}),b.jsx(Xt,{id:"bw",type:"number",step:"any",value:H,onChange:xe=>j(xe.target.value)})]})]}),b.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"sf",children:"Spreading Factor"}),b.jsx(Xt,{id:"sf",type:"number",min:"7",max:"12",value:ee,onChange:xe=>Z(xe.target.value)})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"cr",children:"Coding Rate"}),b.jsx(Xt,{id:"cr",type:"number",min:"5",max:"8",value:V,onChange:xe=>ne(xe.target.value)})]})]}),b.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"tx-power",children:"TX Power (dBm)"}),b.jsx(Xt,{id:"tx-power",type:"number",value:S,onChange:xe=>N(xe.target.value)})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"max-tx",children:"Max TX Power"}),b.jsx(Xt,{id:"max-tx",type:"number",value:a.max_tx_power,disabled:!0})]})]}),b.jsx(Us,{}),b.jsxs("div",{className:"space-y-2",children:[b.jsxs("div",{className:"flex items-center justify-between",children:[b.jsx(Ot,{children:"Location"}),b.jsx(Pn,{type:"button",variant:"outline",size:"sm",onClick:Be,disabled:K,children:K?"Getting...":"📍 Use My Location"})]}),b.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"lat",className:"text-xs text-muted-foreground",children:"Latitude"}),b.jsx(Xt,{id:"lat",type:"number",step:"any",value:C,onChange:xe=>k(xe.target.value)})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"lon",className:"text-xs text-muted-foreground",children:"Longitude"}),b.jsx(Xt,{id:"lon",type:"number",step:"any",value:D,onChange:xe=>P(xe.target.value)})]})]})]}),de&&b.jsx("div",{className:"text-sm text-destructive",children:de}),b.jsx(Pn,{onClick:Ze,disabled:pe||Y,className:"w-full",children:pe||Y?"Saving & Rebooting...":"Save Radio Config & Reboot"})]}),b.jsxs(Jr,{value:"identity",className:"space-y-4 mt-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"public-key",children:"Public Key"}),b.jsx(Xt,{id:"public-key",value:a.public_key,disabled:!0,className:"font-mono text-xs"})]}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"name",children:"Radio Name"}),b.jsx(Xt,{id:"name",value:B,onChange:xe=>T(xe.target.value)})]}),b.jsx(Pn,{onClick:lt,disabled:pe,className:"w-full",children:pe?"Saving...":"Set Name"}),b.jsx(Us,{}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"private-key",children:"Set Private Key (write-only)"}),b.jsx(Xt,{id:"private-key",type:"password",autoComplete:"off",value:J,onChange:xe=>ie(xe.target.value),placeholder:"64-character hex private key"}),b.jsx(Pn,{onClick:vt,disabled:pe||Y||!J.trim(),className:"w-full",children:pe||Y?"Setting & Rebooting...":"Set Private Key & Reboot"})]}),de&&b.jsx("div",{className:"text-sm text-destructive",children:de})]}),b.jsxs(Jr,{value:"serial",className:"space-y-4 mt-4",children:[b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{children:"Serial Port"}),o!=null&&o.serial_port?b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("div",{className:"w-2 h-2 rounded-full bg-green-500"}),b.jsx("code",{className:"px-2 py-1 bg-muted rounded text-foreground text-sm",children:o.serial_port})]}):b.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[b.jsx("div",{className:"w-2 h-2 rounded-full bg-gray-500"}),b.jsx("span",{children:"Not connected"})]})]}),b.jsx(Us,{}),b.jsxs("div",{className:"space-y-2",children:[b.jsx(Ot,{htmlFor:"max-contacts",children:"Max Contacts on Radio"}),b.jsx(Xt,{id:"max-contacts",type:"number",min:"1",max:"1000",value:he,onChange:xe=>ae(xe.target.value)}),b.jsx("p",{className:"text-xs text-muted-foreground",children:"Recent non-repeater contacts loaded to radio for DM auto-ACK (1-1000)"})]}),b.jsx(Pn,{onClick:Rt,disabled:pe,className:"w-full",children:pe?"Saving...":"Save Settings"}),b.jsx(Us,{}),b.jsx(Pn,{variant:"outline",onClick:ot,disabled:Y||pe,className:"w-full border-red-500/50 text-red-400 hover:bg-red-500/10",children:Y?"Rebooting...":"Reboot Radio"}),de&&b.jsx("div",{className:"text-sm text-destructive",children:de})]}),b.jsxs(Jr,{value:"database",className:"space-y-4 mt-4",children:[b.jsxs("div",{className:"space-y-3",children:[b.jsxs("div",{className:"flex justify-between items-center",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"Database size"}),b.jsxs("span",{className:"font-medium",children:[(o==null?void 0:o.database_size_mb)??"?"," MB"]})]}),o!=null&&o.oldest_undecrypted_timestamp?b.jsxs("div",{className:"flex justify-between items-center",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"Oldest undecrypted packet"}),b.jsxs("span",{className:"font-medium",children:[Qs(o.oldest_undecrypted_timestamp),b.jsxs("span",{className:"text-muted-foreground ml-1",children:["(",Math.floor((Date.now()/1e3-o.oldest_undecrypted_timestamp)/86400)," ","days old)"]})]})]}):b.jsxs("div",{className:"flex justify-between items-center",children:[b.jsx("span",{className:"text-sm text-muted-foreground",children:"Oldest undecrypted packet"}),b.jsx("span",{className:"text-muted-foreground",children:"None"})]})]}),b.jsx(Us,{}),b.jsxs("div",{className:"space-y-3",children:[b.jsx(Ot,{children:"Cleanup Old Packets"}),b.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)."}),b.jsxs("div",{className:"flex gap-2 items-end",children:[b.jsxs("div",{className:"space-y-1",children:[b.jsx(Ot,{htmlFor:"retention-days",className:"text-xs",children:"Days to retain"}),b.jsx(Xt,{id:"retention-days",type:"number",min:"1",max:"365",value:ke,onChange:xe=>Ae(xe.target.value),className:"w-24"})]}),b.jsx(Pn,{variant:"outline",onClick:Xe,disabled:We,children:We?"Cleaning...":"Cleanup"})]})]})]}),b.jsx(Jr,{value:"advertise",className:"space-y-4 mt-4",children:b.jsxs("div",{className:"text-center py-8",children:[b.jsx("p",{className:"text-muted-foreground mb-6",children:"Send a flood advertisement to announce your presence on the mesh network."}),b.jsx(Pn,{size:"lg",onClick:Qe,disabled:R||!(o!=null&&o.radio_connected),className:"bg-green-600 hover:bg-green-700 text-white px-12 py-6 text-lg",children:R?"Sending...":"Send Advertisement"}),!(o!=null&&o.radio_connected)&&b.jsx("p",{className:"text-sm text-destructive mt-4",children:"Radio not connected"})]})})]}):b.jsx("div",{className:"py-8 text-center text-muted-foreground",children:"Loading configuration..."})]})})}function z2(r){return new Date(r*1e3).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function hm(r){return r.split("_").map(a=>a.charAt(0)+a.slice(1).toLowerCase()).join(" ")}function H2(r){if(!r.decrypted||!r.decrypted_info)return hm(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}`:hm(r.payload_type)}function V2(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 U2({packets:r}){const a=F.useRef(null);if(F.useEffect(()=>{a.current&&(a.current.scrollTop=a.current.scrollHeight)},[r]),r.length===0)return b.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,d)=>l.timestamp-d.timestamp);return b.jsx("div",{className:"h-full overflow-y-auto p-4 flex flex-col gap-3",ref:a,children:o.map(l=>b.jsxs("div",{className:"py-2 px-3 bg-muted rounded",children:[b.jsxs("div",{className:l.decrypted?"text-primary":"text-destructive",children:[!l.decrypted&&b.jsx("span",{className:"mr-1",children:"🔒"}),H2(l)," • ",z2(l.timestamp)]}),(l.snr!==null||l.rssi!==null)&&b.jsx("div",{className:"text-[11px] text-muted-foreground mt-0.5",children:V2(l)}),b.jsx("div",{className:"font-mono text-[11px] break-all text-muted-foreground/70 mt-1",children:l.data.toUpperCase()})]},l.id))})}function vx(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 Z2(r,a,o){a.center!==o.center&&r.setLatLng(a.center),a.radius!=null&&a.radius!==o.radius&&r.setRadius(a.radius)}const W2=1;function q2(r){return Object.freeze({__version:W2,map:r})}function G2(r,a){return Object.freeze({...r,...a})}const yx=F.createContext(null),_x=yx.Provider;function Jc(){const r=F.useContext(yx);if(r==null)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of ");return r}function K2(r){function a(o,l){const{instance:d,context:f}=r(o).current;return F.useImperativeHandle(l,()=>d),o.children==null?null:Ce.createElement(_x,{value:f},o.children)}return F.forwardRef(a)}function Q2(r){function a(o,l){const[d,f]=F.useState(!1),{instance:p}=r(o,f).current;F.useImperativeHandle(l,()=>p),F.useEffect(function(){d&&p.update()},[p,d,o.children]);const h=p._contentNode;return h?v0.createPortal(o.children,h):null}return F.forwardRef(a)}function $2(r){function a(o,l){const{instance:d}=r(o).current;return F.useImperativeHandle(l,()=>d),null}return F.forwardRef(a)}function F0(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 ed(r,a){const o=r.pane??a.pane;return o?{...r,pane:o}:r}function Y2(r,a){return function(l,d){const f=Jc(),p=r(ed(l,f),f);return vx(f.map,l.attribution),F0(p.current,l.eventHandlers),a(p.current,f,l,d),p}}var sl={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 X2=sl.exports,pm;function J2(){return pm||(pm=1,(function(r,a){(function(o,l){l(a)})(X2,(function(o){var l="1.9.4";function d(t){var i,u,A,E;for(u=1,A=arguments.length;u"u"||!L||!L.Mixin)){t=S(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=Y(this.x),this.y=Y(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:S(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 R(t,i){if(t)for(var u=i?[t,i]:t,A=0,E=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,E=t.max,O=E.x>=i.x&&A.x<=u.x,Q=E.y>=i.y&&A.y<=u.y;return O&&Q},overlaps:function(t){t=U(t);var i=this.min,u=this.max,A=t.min,E=t.max,O=E.x>i.x&&A.xi.y&&A.y=i.lat&&E.lat<=u.lat&&A.lng>=i.lng&&E.lng<=u.lng},intersects:function(t){t=$(t);var i=this._southWest,u=this._northEast,A=t.getSouthWest(),E=t.getNorthEast(),O=E.lat>=i.lat&&A.lat<=u.lat,Q=E.lng>=i.lng&&A.lng<=u.lng;return O&&Q},overlaps:function(t){t=$(t);var i=this._southWest,u=this._northEast,A=t.getSouthWest(),E=t.getNorthEast(),O=E.lat>i.lat&&A.lati.lng&&A.lng1,Lt=(function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassiveEventSupport",y,i),window.removeEventListener("testPassiveEventSupport",y,i)}catch{}return t})(),Mn=(function(){return!!document.createElement("canvas").getContext})(),it=!!(document.createElementNS&<("svg").createSVGRect),Et=!!it&&(function(){var t=document.createElement("div");return t.innerHTML="",(t.firstChild&&t.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"})(),Gn=!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}})(),gt=navigator.platform.indexOf("Mac")===0,Mt=navigator.platform.indexOf("Linux")===0;function Gt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var Re={ie:ot,ielt9:Qe,edge:Xe,webkit:xe,android:Te,android23:pt,androidStock:tn,opera:jt,chrome:nn,gecko:mn,safari:Tn,phantom:Wt,opera12:Pt,win:qt,ie3d:qn,webkit3d:yn,gecko3d:ge,any3d:be,mobile:De,mobileWebkit:re,mobileWebkit3d:me,msPointer:Se,pointer:Ne,touch:$t,touchNative:Ve,mobileOpera:Ue,mobileGecko:mt,retina:Bt,passiveEvents:Lt,canvas:Mn,svg:it,vml:Gn,inlineSvg:Et,mac:gt,linux:Mt},Si=Re.msPointer?"MSPointerDown":"pointerdown",Xo=Re.msPointer?"MSPointerMove":"pointermove",gl=Re.msPointer?"MSPointerUp":"pointerup",Al=Re.msPointer?"MSPointerCancel":"pointercancel",na={touchstart:Si,touchmove:Xo,touchend:gl,touchcancel:Al},Mr={touchstart:zt,touchmove:Jo,touchend:Jo,touchcancel:Jo},ti={},ra=!1;function sd(t,i,u){return i==="touchstart"&&ad(),Mr[i]?(u=Mr[i].bind(this,u),t.addEventListener(na[i],u,!1),u):(console.warn("wrong event specified:",i),y)}function xl(t,i,u){if(!na[i]){console.warn("wrong event specified:",i);return}t.removeEventListener(na[i],u,!1)}function vl(t){ti[t.pointerId]=t}function yl(t){ti[t.pointerId]&&(ti[t.pointerId]=t)}function ia(t){delete ti[t.pointerId]}function ad(){ra||(document.addEventListener(Si,vl,!0),document.addEventListener(Xo,yl,!0),document.addEventListener(gl,ia,!0),document.addEventListener(Al,ia,!0),ra=!0)}function Jo(t,i){if(i.pointerType!==(i.MSPOINTER_TYPE_MOUSE||"mouse")){i.touches=[];for(var u in ti)i.touches.push(ti[u]);i.changedTouches=[i],t(i)}}function zt(t,i){i.MSPOINTER_TYPE_TOUCH&&i.pointerType===i.MSPOINTER_TYPE_TOUCH&&Ht(i),Jo(t,i)}function ld(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 oa=200;function _l(t,i){t.addEventListener("dblclick",i);var u=0,A;function E(O){if(O.detail!==1){A=O.detail;return}if(!(O.pointerType==="mouse"||O.sourceCapabilities&&!O.sourceCapabilities.firesTouchEvents)){var Q=ii(O);if(!(Q.some(function(ue){return ue instanceof HTMLLabelElement&&ue.attributes.for})&&!Q.some(function(ue){return ue instanceof HTMLInputElement||ue instanceof HTMLSelectElement}))){var oe=Date.now();oe-u<=oa?(A++,A===2&&i(ld(O))):A=1,u=oe}}}return t.addEventListener("click",E),{dblclick:i,simDblclick:E}}function es(t,i){t.removeEventListener("dblclick",i.dblclick),t.removeEventListener("click",i.simDblclick)}var sa=Di(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),Bi=Di(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),ho=Bi==="webkitTransition"||Bi==="OTransition"?Bi+"End":"transitionend";function Kn(t){return typeof t=="string"?document.getElementById(t):t}function po(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 Ft(t){var i=t.parentNode;i&&i.removeChild(t)}function ts(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function Pi(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function yr(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function Ti(t,i){if(t.classList!==void 0)return t.classList.contains(i);var u=ns(t);return u.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(u)}function et(t,i){if(t.classList!==void 0)for(var u=T(i),A=0,E=u.length;A0?2*window.devicePixelRatio:1;function bl(t){return Re.edge?t.wheelDeltaY/2:t.deltaY&&t.deltaMode===0?-t.deltaY/ud: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 yo(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 ls={__proto__:null,on:Ye,off:kt,stopPropagation:lr,disableScrollPropagation:as,disableClickPropagation:xo,preventDefault:Ht,stop:Yn,getPropagationPath:ii,getMousePosition:vo,getWheelDelta:bl,isExternalTarget:yo,addListener:Ye,removeListener:kt},us=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=_r(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]),E=this.project(this.getCenter()),O=this.project(t),Q=this.getPixelBounds(),oe=U([Q.min.add(u),Q.max.subtract(A)]),ue=oe.getSize();if(!oe.contains(O)){this._enforcingBounds=!0;var ve=O.subtract(oe.getCenter()),Pe=oe.extend(O).getSize().subtract(ue);E.x+=ve.x<0?-Pe.x:Pe.x,E.y+=ve.y<0?-Pe.y:Pe.y,this.panTo(this.unproject(E),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=d({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(),E=u.divideBy(2).round(),O=A.subtract(E);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(p(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=d({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var i=p(this._handleGeolocationResponse,this),u=p(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 de(i,u),E=A.toBounds(t.coords.accuracy*2),O=this._locateOptions;if(O.setView){var Q=this.getBoundsZoom(E);this.setView(A,O.maxZoom?Math.min(Q,O.maxZoom):Q)}var oe={latlng:A,bounds:E,timestamp:t.timestamp};for(var ue in t.coords)typeof t.coords[ue]=="number"&&(oe[ue]=t.coords[ue]);this.fire("locationfound",oe)}},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(),Ft(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)Ft(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 K(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,E=this.getMinZoom(),O=this.getMaxZoom(),Q=t.getNorthWest(),oe=t.getSouthEast(),ue=this.getSize().subtract(u),ve=U(this.project(oe,A),this.project(Q,A)).getSize(),Pe=Re.any3d?this.options.zoomSnap:1,qe=ue.x/ve.x,nt=ue.y/ve.y,on=i?Math.max(qe,nt):Math.min(qe,nt);return A=this.getScaleZoom(on,A),Pe&&(A=Math.round(A/(Pe/100))*(Pe/100),A=i?Math.ceil(A/Pe)*Pe:Math.floor(A/Pe)*Pe),Math.max(E,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 R(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 vo(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=Kn(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=g(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=po(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),Kt(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){Kt(this._mapPane,new G(0,0));var A=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var E=this._zoom!==i;this._moveStart(E,u)._move(t,i)._moveEnd(E),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 E=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),A?u&&u.pinch&&this.fire("zoom",u):((E||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){Kt(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[g(this._container)]=this;var i=t?kt: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,E=i==="mouseout"||i==="mouseover",O=t.target||t.srcElement,Q=!1;O;){if(A=this._targets[g(O)],A&&(i==="click"||i==="preclick")&&this._draggableMoved(A)){Q=!0;break}if(A&&A.listens(i,!0)&&(E&&!yo(O,t)||(u.push(A),E))||O===this._container)break;O=O.parentNode}return!u.length&&!Q&&!E&&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"&&Fi(i),this._fireDOMEvent(t,u)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,i,u){if(t.type==="click"){var A=d({},t);A.type="preclick",this._fireDOMEvent(A,A.type,u)}var E=this._findEventTargets(t,i);if(u){for(var O=[],Q=0;Q0?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(){Tt(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=sa,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(){Ft(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),E=this._getCenterOffset(t)._divideBy(1-1/A);return u.animate!==!0&&!this.getSize().contains(E)?!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(p(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&Tt(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 Ir(t,i){return new ct(t,i)}var Dn=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?(Ft(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()}}),Or=function(t){return new Dn(t)};ct.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(E,O){var Q=i+E+" "+i+O;t[E+O]=tt("div",Q,u)}A("top","left"),A("top","right"),A("bottom","left"),A("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)Ft(this._controlCorners[t]);Ft(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var ca=Dn.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(g(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_"+g(this),u),this._layerControlInputs.push(A),A.layerId=g(t.layer),Ye(A,"click",this._onInputClick,this);var E=document.createElement("span");E.innerHTML=" "+t.name;var O=document.createElement("span");i.appendChild(O),O.appendChild(A),O.appendChild(E);var Q=t.overlay?this._overlaysList:this._baseLayersList;return Q.appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t=this._layerControlInputs,i,u,A=[],E=[];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||E.push(u);for(O=0;O=0;E--)i=t[E],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",Ht),this.expand();var i=this;setTimeout(function(){kt(t,"click",Ht),i._preventClick=!1})}}),cs=function(t,i,u){return new ca(t,i,u)},Ni=Dn.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,E){var O=tt("a",u,A);return O.innerHTML=t,O.href="#",O.title=i,O.setAttribute("role","button"),O.setAttribute("aria-label",i),xo(O),Ye(O,"click",Yn),Ye(O,"click",E,this),Ye(O,"click",this._refocusOnMap,this),O},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";Tt(this._zoomInButton,i),Tt(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"))}});ct.mergeOptions({zoomControl:!0}),ct.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ni,this.addControl(this.zoomControl))});var Cl=function(t){return new Ni(t)},wn=Dn.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,E;i>5280?(u=i/5280,A=this._getRoundNum(u),this._updateScale(this._iScale,A+" mi",A/u)):(E=this._getRoundNum(i),this._updateScale(this._iScale,E+" ft",E/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}}),Li=function(t){return new wn(t)},da='',oi=Dn.extend({options:{position:"bottomright",prefix:''+(Re.inlineSvg?da+" ":"")+"Leaflet"},initialize:function(t){C(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=tt("div","leaflet-control-attribution"),xo(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(' ')}}});ct.mergeOptions({attributionControl:!0}),ct.addInitHook(function(){this.options.attributionControl&&new oi().addTo(this)});var cd=function(t){return new oi(t)};Dn.Layers=ca,Dn.Zoom=Ni,Dn.Scale=wn,Dn.Attribution=oi,Or.layers=cs,Or.zoom=Cl,Or.scale=Li,Or.attribution=cd;var In=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}});In.addTo=function(t,i){return t.addHandler(i,this),this};var fa={Events:ae},Mi=Re.touch?"touchstart mousedown":"mousedown",Xn=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,Mi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Xn._dragging===this&&this.finishDrag(!0),kt(this._dragStartTarget,Mi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(this._enabled&&(this._moved=!1,!Ti(this._element,"leaflet-zoom-anim"))){if(t.touches&&t.touches.length!==1){Xn._dragging===this&&this.finishDrag();return}if(!(Xn._dragging||t.shiftKey||t.which!==1&&t.button!==1&&!t.touches)&&(Xn._dragging=this,this._preventOutline&&Fi(this._element),is(),ht(),!this._moving)){this.fire("down");var i=t.touches?t.touches[0]:t,u=wr(this._element);this._startPoint=new G(i.clientX,i.clientY),this._startPos=_r(this._element),this._parentScale=ar(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&&(Q=oe,O=ue);O>u&&(i[Q]=1,ma(t,i,u,A,Q),ma(t,i,u,Q,E))}function pd(t,i){for(var u=[t[0]],A=1,E=0,O=t.length;Ai&&(u.push(t[A]),E=A);return Ei.max.x&&(u|=2),t.yi.max.y&&(u|=8),u}function md(t,i){var u=i.x-t.x,A=i.y-t.y;return u*u+A*A}function ai(t,i,u,A){var E=i.x,O=i.y,Q=u.x-E,oe=u.y-O,ue=Q*Q+oe*oe,ve;return ue>0&&(ve=((t.x-E)*Q+(t.y-O)*oe)/ue,ve>1?(E=u.x,O=u.y):ve>0&&(E+=Q*ve,O+=oe*ve)),Q=t.x-E,oe=t.y-O,A?Q*Q+oe*oe:new G(E,O)}function On(t){return!S(t[0])||typeof t[0][0]!="object"&&typeof t[0][0]<"u"}function Bl(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),On(t)}function Pl(t,i){var u,A,E,O,Q,oe,ue,ve;if(!t||t.length===0)throw new Error("latlngs not passed");On(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=pa(t));var on=t.length,Jt=[];for(u=0;uA){ue=(O-A)/E,ve=[oe.x-ue*(oe.x-Q.x),oe.y-ue*(oe.y-Q.y)];break}var bn=i.unproject(q(ve));return fe([bn.lat+Pe.lat,bn.lng+Pe.lng])}var Tl={__proto__:null,simplify:ds,pointToSegmentDistance:kl,closestPointOnSegment:fd,clipSegment:Sl,_getEdgeIntersection:fs,_getBitCode:si,_sqClosestPointOnSegment:ai,isFlat:On,_flat:Bl,polylineCenter:Pl},Aa={project:function(t){return new G(t.lng,t.lat)},unproject:function(t){return new de(t.y,t.x)},bounds:new R([-180,-90],[180,90])},xa={R:6378137,R_MINOR:6356752314245179e-9,bounds:new R([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(t){var i=Math.PI/180,u=this.R,A=t.lat*i,E=this.R_MINOR/u,O=Math.sqrt(1-E*E),Q=O*Math.sin(A),oe=Math.tan(Math.PI/4-A/2)/Math.pow((1-Q)/(1+Q),O/2);return A=-u*Math.log(Math.max(oe,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,E=Math.sqrt(1-A*A),O=Math.exp(-t.y/u),Q=Math.PI/2-2*Math.atan(O),oe=0,ue=.1,ve;oe<15&&Math.abs(ue)>1e-7;oe++)ve=E*Math.sin(Q),ve=Math.pow((1-ve)/(1+ve),E/2),ue=Math.PI/2-2*Math.atan(O*ve)-Q,Q+=ue;return new de(Q*i,t.x*i/u)}},gd={__proto__:null,LonLat:Aa,Mercator:xa,SphericalMercator:$e},Ad=d({},Ae,{code:"EPSG:3395",projection:xa,transformation:(function(){var t=.5/(Math.PI*xa.R);return ft(t,.5,-t,.5)})()}),Dl=d({},Ae,{code:"EPSG:4326",projection:Aa,transformation:ft(1/180,1,-1/180,.5)}),xd=d({},ke,{projection:Aa,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=Ae,ke.EPSG3395=Ad,ke.EPSG3857=Be,ke.EPSG900913=Ze,ke.EPSG4326=Dl,ke.Simple=xd;var Jn=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[g(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[g(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})}}});ct.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=g(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=g(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 g(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?S(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 de&&i[0].equals(i[u-1])&&i.pop(),i},_setLatLngs:function(t){Rn.prototype._setLatLngs.call(this,t),On(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return On(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 R(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,E=this._rings.length,O;At.y!=E.y>t.y&&t.x<(E.x-A.x)*(t.y-A.y)/(E.y-A.y)+A.x&&(i=!i);return i||Rn.prototype._containsPoint.call(this,t,!0)}});function _d(t,i){return new Er(t,i)}var ur=br.extend({initialize:function(t,i){C(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i=S(t)?t:t.features,u,A,E;if(i){for(u=0,A=i.length;u0&&E.push(E[0].slice()),E}function ji(t,i){return t.feature?d({},t.feature,{geometry:i}):vs(i)}function vs(t){return t.type==="Feature"||t.type==="FeatureCollection"?t:{type:"Feature",properties:{},geometry:t}}var ya={toGeoJSON:function(t){return ji(this,{type:"Point",coordinates:As(this.getLatLng(),t)})}};Cr.include(ya),ps.include(ya),hs.include(ya),Rn.include({toGeoJSON:function(t){var i=!On(this._latlngs),u=xs(this._latlngs,i?1:0,!1,t);return ji(this,{type:(i?"Multi":"")+"LineString",coordinates:u})}}),Er.include({toGeoJSON:function(t){var i=!On(this._latlngs),u=i&&!On(this._latlngs[0]),A=xs(this._latlngs,u?2:i?1:0,!0,t);return i||(A=[A]),ji(this,{type:(u?"Multi":"")+"Polygon",coordinates:A})}}),jr.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(u){i.push(u.toGeoJSON(t).geometry.coordinates)}),ji(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(E){if(E.toGeoJSON){var O=E.toGeoJSON(t);if(u)A.push(O.geometry);else{var Q=vs(O);Q.type==="FeatureCollection"?A.push.apply(A,Q.features):A.push(Q)}}}),u?ji(this,{geometries:A,type:"GeometryCollection"}):{type:"FeatureCollection",features:A}}});function Ll(t,i){return new ur(t,i)}var er=Ll,Hr=Jn.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(){Ft(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&&Pi(this._image),this},bringToBack:function(){return this._map&&yr(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=y,i.onmousemove=y,i.onload=p(this.fire,this,"load"),i.onerror=p(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 R(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),u=i.getSize();Kt(t,i.min),t.style.width=u.x+"px",t.style.height=u.y+"px"},_updateOpacity:function(){_n(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()}}),Ml=function(t,i,u){return new Hr(t,i,u)},_a=Hr.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=y,i.onmousemove=y,i.onloadeddata=p(this.fire,this,"load"),t){for(var u=i.getElementsByTagName("source"),A=[],E=0;E0?A:[i.src];return}S(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;OE?(i.height=E+"px",et(t,O)):Tt(t,O),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),u=this._getAnchor();Kt(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(po(this._container,"marginBottom"),10)||0,u=this._container.offsetHeight+i,A=this._containerWidth,E=new G(this._containerLeft,-u-this._containerBottom);E._add(_r(this._container));var O=t.layerPointToContainerPoint(E),Q=q(this.options.autoPanPadding),oe=q(this.options.autoPanPaddingTopLeft||Q),ue=q(this.options.autoPanPaddingBottomRight||Q),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-oe.x<0&&(Pe=O.x-oe.x),O.y+u+ue.y>ve.y&&(qe=O.y+u-ve.y+ue.y),O.y-qe-oe.y<0&&(qe=O.y-oe.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])}}),zi=function(t,i){return new ys(t,i)};ct.mergeOptions({closePopupOnClick:!0}),ct.include({openPopup:function(t,i,u){return this._initOverlay(ys,t,i,u).openOn(this),this},closePopup:function(t){return t=arguments.length?t:this._popup,t&&t.close(),this}}),Jn.include({bindPopup:function(t,i){return this._popup=this._initOverlay(ys,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 br||(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)){Yn(t);var i=t.layer||t.target;if(this._popup._source===i&&!(i instanceof zr)){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 Hi=cr.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){cr.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){cr.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=cr.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-"+g(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i,u,A=this._map,E=this._container,O=A.latLngToContainerPoint(A.getCenter()),Q=A.layerPointToContainerPoint(t),oe=this.options.direction,ue=E.offsetWidth,ve=E.offsetHeight,Pe=q(this.options.offset),qe=this._getAnchor();oe==="top"?(i=ue/2,u=ve):oe==="bottom"?(i=ue/2,u=0):oe==="center"?(i=ue/2,u=ve/2):oe==="right"?(i=0,u=ve/2):oe==="left"?(i=ue,u=ve/2):Q.xthis.options.maxZoom||uA?this._retainParent(E,O,Q,A):!1)},_retainChildren:function(t,i,u,A){for(var E=2*t;E<2*t+2;E++)for(var O=2*i;O<2*i+2;O++){var Q=new G(E,O);Q.z=u+1;var oe=this._tileCoordsToKey(Q),ue=this._tiles[oe];if(ue&&ue.active){ue.retain=!0;continue}else ue&&ue.loaded&&(ue.retain=!0);u+1this.options.maxZoom||this.options.minZoom!==void 0&&E1){this._setView(t,u);return}for(var qe=E.min.y;qe<=E.max.y;qe++)for(var nt=E.min.x;nt<=E.max.x;nt++){var on=new G(nt,qe);if(on.z=this._tileZoom,!!this._isValidTile(on)){var Jt=this._tiles[this._tileCoordsToKey(on)];Jt?Jt.current=!0:Q.push(on)}}if(Q.sort(function(bn,qi){return bn.distanceTo(O)-qi.distanceTo(O)}),Q.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var Fn=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),E=A.add(u),O=i.unproject(A,t.z),Q=i.unproject(E,t.z);return[O,Q]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),u=new K(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&&(Ft(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=y,t.onmousemove=y,Re.ielt9&&this.options.opacity<1&&_n(t,this.options.opacity)},_addTile:function(t,i){var u=this._getTilePos(t),A=this._tileCoordsToKey(t),E=this.createTile(this._wrapCoords(t),p(this._tileReady,this,t));this._initTile(E),this.createTile.length<2&&V(p(this._tileReady,this,t,null,E)),Kt(E,u),this._tiles[A]={el:E,coords:t,current:!0},i.appendChild(E),this.fire("tileloadstart",{tile:E,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?(_n(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(p(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?v(t.x,this._wrapX):t.x,this._wrapY?v(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new R(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 Vi(t){return new Vr(t)}var Ur=Vr.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",p(this._tileOnLoad,this,i,u)),Ye(u,"error",p(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 P(this._url,d(i,this.options))},_tileOnLoad:function(t,i){Re.ielt9?setTimeout(p(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=y,i.onerror=y,!i.complete)){i.src=I;var u=this._tiles[t].coords;Ft(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),Vr.prototype._removeTile.call(this,t)},_tileReady:function(t,i,u){if(!(!this._map||u&&u.getAttribute("src")===I))return Vr.prototype._tileReady.call(this,t,i,u)}});function Ca(t,i){return new Ur(t,i)}var Eo=Ur.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=d({},this.defaultWmsParams);for(var A in i)A in this.options||(u[A]=i[A]);i=C(this,i);var E=i.detectRetina&&Re.retina?2:1,O=this.getTileSize();u.width=O.x*E,u.height=O.y*E,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,Ur.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])),E=A.min,O=A.max,Q=(this._wmsVersion>=1.3&&this._crs===Dl?[E.y,E.x,O.y,O.x]:[E.x,E.y,O.x,O.y]).join(","),oe=Ur.prototype.getTileUrl.call(this,t);return oe+k(this.wmsParams,oe,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+Q},setParams:function(t,i){return d(this.wmsParams,t),i||this.redraw(),this}});function jl(t,i){return new Eo(t,i)}Ur.WMS=Eo,Ca.wms=jl;var dr=Jn.extend({options:{padding:.1},initialize:function(t){C(this,t),g(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),E=this._map.project(this._center,i),O=A.multiplyBy(-u).add(E).subtract(this._map._getNewPixelOrigin(t,i));Re.any3d?Qn(this._container,O,u):Kt(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 R(u,u.add(i.multiplyBy(1+t*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),Ea=dr.extend({options:{tolerance:0},getEvents:function(){var t=dr.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){dr.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,Ft(this._container),kt(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)){dr.prototype._update.call(this);var t=this._bounds,i=this._container,u=t.getSize(),A=Re.retina?2:1;Kt(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(){dr.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[g(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[g(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,E;for(E=0;E')}}catch{}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}})(),zl={_initContainer:function(){this._container=tt("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(dr.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=Ui("shape");et(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=Ui("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[g(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;Ft(i),t.removeInteractiveTarget(i),delete this._layers[g(t)]},_updateStyle:function(t){var i=t._stroke,u=t._fill,A=t.options,E=t._container;E.stroked=!!A.stroke,E.filled=!!A.fill,A.stroke?(i||(i=t._stroke=Ui("stroke")),E.appendChild(i),i.weight=A.weight+"px",i.color=A.color,i.opacity=A.opacity,A.dashArray?i.dashStyle=S(A.dashArray)?A.dashArray.join(" "):A.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=A.lineCap.replace("butt","flat"),i.joinstyle=A.lineJoin):i&&(E.removeChild(i),t._stroke=null),A.fill?(u||(u=t._fill=Ui("fill")),E.appendChild(u),u.color=A.fillColor||A.color,u.opacity=A.fillOpacity):u&&(E.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){Pi(t._container)},_bringToBack:function(t){yr(t._container)}},tr=Re.vml?Ui:lt,ui=dr.extend({_initContainer:function(){this._container=tr("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=tr("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){Ft(this._container),kt(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){dr.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)),Kt(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=tr("path");t.options.className&&et(i,t.options.className),t.options.interactive&&et(i,"leaflet-interactive"),this._updateStyle(t),this._layers[g(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){Ft(t._path),t.removeInteractiveTarget(t._path),delete this._layers[g(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,Rt(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,E="a"+u+","+A+" 0 1,0 ",O=t._empty()?"M0 0":"M"+(i.x-u)+","+i.y+E+u*2+",0 "+E+-u*2+",0 ";this._setPath(t,O)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){Pi(t._path)},_bringToBack:function(t){yr(t._path)}});Re.vml&&ui.include(zl);function ws(t){return Re.svg||Re.vml?new ui(t):null}ct.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&&ka(t)||ws(t)}});var Hl=Er.extend({initialize:function(t,i){Er.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 wd(t,i){return new Hl(t,i)}ui.create=tr,ui.pointsToPath=Rt,ur.geometryToLayer=Oi,ur.coordsToLatLng=gs,ur.coordsToLatLngs=bo,ur.latLngToCoords=As,ur.latLngsToCoords=xs,ur.getFeature=ji,ur.asFeature=vs,ct.mergeOptions({boxZoom:!0});var Zi=In.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(){kt(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){Ft(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(),is(),this._startPoint=this._map.mouseEventToContainerPoint(t),Ye(document,{contextmenu:Yn,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 R(this._point,this._startPoint),u=i.getSize();Kt(this._box,i.min),this._box.style.width=u.x+"px",this._box.style.height=u.y+"px"},_finish:function(){this._moved&&(Ft(this._box),Tt(this._container,"leaflet-crosshair")),Ri(),os(),kt(document,{contextmenu:Yn,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(p(this._resetState,this),0);var i=new K(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())}});ct.addInitHook("addHandler","boxZoom",Zi),ct.mergeOptions({doubleClickZoom:!0});var Vl=In.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,E=t.originalEvent.shiftKey?u-A:u+A;i.options.doubleClickZoom==="center"?i.setZoom(E):i.setZoomAround(t.containerPoint,E)}});ct.addInitHook("addHandler","doubleClickZoom",Vl),ct.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Sa=In.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Xn(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(){Tt(this._map._container,"leaflet-grab"),Tt(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,E=(A-i+u)%t+i-u,O=(A+i+u)%t-i-u,Q=Math.abs(E+u)0?O:-O))-i;this._delta=0,this._startTime=null,Q&&(t.options.scrollWheelZoom==="center"?t.setZoom(i+Q):t.setZoomAround(this._lastMousePos,i+Q))}});ct.addInitHook("addHandler","scrollWheelZoom",St);var Pa=600;ct.mergeOptions({tapHold:Re.touchNative&&Re.safari&&Re.mobile,tapTolerance:15});var ko=In.extend({addHooks:function(){Ye(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){kt(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(p(function(){this._cancel(),this._isTapValid()&&(Ye(document,"touchend",Ht),Ye(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",i))},this),Pa),Ye(document,"touchend touchcancel contextmenu",this._cancel,this),Ye(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function t(){kt(document,"touchend",Ht),kt(document,"touchend touchcancel",t)},_cancel:function(){clearTimeout(this._holdTimeout),kt(document,"touchend touchcancel contextmenu",this._cancel,this),kt(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)}});ct.addInitHook("addHandler","tapHold",ko),ct.mergeOptions({touchZoom:Re.touch,bounceAtZoomLimits:!0});var Wi=In.extend({addHooks:function(){et(this._map._container,"leaflet-touch-zoom"),Ye(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){Tt(this._map._container,"leaflet-touch-zoom"),kt(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),Ht(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]),E=u.distanceTo(A)/this._startDist;if(this._zoom=i.getScaleZoom(E,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&E>1)&&(this._zoom=i._limitZoom(this._zoom)),i.options.touchZoom==="center"){if(this._center=this._startLatLng,E===1)return}else{var O=u._add(A)._divideBy(2)._subtract(this._centerPoint);if(E===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 Q=p(i._move,i,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=V(Q,this,!0),Ht(t)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,ne(this._animRequest),kt(document,"touchmove",this._onTouchMove,this),kt(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))}});ct.addInitHook("addHandler","touchZoom",Wi),ct.BoxZoom=Zi,ct.DoubleClickZoom=Vl,ct.Drag=Sa,ct.Keyboard=Ba,ct.ScrollWheelZoom=St,ct.TapHold=ko,ct.TouchZoom=Wi,o.Bounds=R,o.Browser=Re,o.CRS=ke,o.Canvas=Ea,o.Circle=ps,o.CircleMarker=hs,o.Class=ie,o.Control=Dn,o.DivIcon=_s,o.DivOverlay=cr,o.DomEvent=ls,o.DomUtil=Ao,o.Draggable=Xn,o.Evented=pe,o.FeatureGroup=br,o.GeoJSON=ur,o.GridLayer=Vr,o.Handler=In,o.Icon=li,o.ImageOverlay=Hr,o.LatLng=de,o.LatLngBounds=K,o.Layer=Jn,o.LayerGroup=jr,o.LineUtil=Tl,o.Map=ct,o.Marker=Cr,o.Mixin=fa,o.Path=zr,o.Point=G,o.PolyUtil=dd,o.Polygon=Er,o.Polyline=Rn,o.Popup=ys,o.PosAnimation=us,o.Projection=gd,o.Rectangle=Hl,o.Renderer=dr,o.SVG=ui,o.SVGOverlay=wa,o.TileLayer=Ur,o.Tooltip=Hi,o.Transformation=wt,o.Util=J,o.VideoOverlay=_a,o.bind=p,o.bounds=U,o.canvas=ka,o.circle=wo,o.circleMarker=Nl,o.control=Or,o.divIcon=Ol,o.extend=d,o.featureGroup=Rl,o.geoJSON=Ll,o.geoJson=er,o.gridLayer=Vi,o.icon=Fl,o.imageOverlay=Ml,o.latLng=fe,o.latLngBounds=$,o.layerGroup=_o,o.map=Ir,o.marker=vd,o.point=q,o.polygon=_d,o.polyline=yd,o.popup=zi,o.rectangle=wd,o.setOptions=C,o.stamp=g,o.svg=ws,o.svgOverlay=ba,o.tileLayer=Ca,o.tooltip=Co,o.transformation=ft,o.version=l,o.videoOverlay=Il;var Ul=window.L;o.noConflict=function(){return window.L=Ul,this},window.L=o}))})(sl,sl.exports)),sl.exports}var td=J2();function N0(r,a,o){return Object.freeze({instance:r,context:a,container:o})}function L0(r,a){return a==null?function(l,d){const f=F.useRef();return f.current||(f.current=r(l,d)),f}:function(l,d){const f=F.useRef();f.current||(f.current=r(l,d));const p=F.useRef(l),{instance:h}=f.current;return F.useEffect(function(){p.current!==l&&(a(h,l,p.current),p.current=l)},[h,l,d]),f}}function wx(r,a){F.useEffect(function(){return(a.layerContainer??a.map).addLayer(r.instance),function(){var f;(f=a.layerContainer)==null||f.removeLayer(r.instance),a.map.removeLayer(r.instance)}},[a,r])}function eb(r){return function(o){const l=Jc(),d=r(ed(o,l),l);return vx(l.map,o.attribution),F0(d.current,o.eventHandlers),wx(d.current,l),d}}function tb(r,a){const o=F.useRef();F.useEffect(function(){if(a.pathOptions!==o.current){const d=a.pathOptions??{};r.instance.setStyle(d),o.current=d}},[r,a])}function nb(r){return function(o){const l=Jc(),d=r(ed(o,l),l);return F0(d.current,o.eventHandlers),wx(d.current,l),tb(d.current,o),d}}function rb(r,a){const o=L0(r),l=Y2(o,a);return Q2(l)}function ib(r,a){const o=L0(r,a),l=nb(o);return K2(l)}function ob(r,a){const o=L0(r,a),l=eb(o);return $2(l)}function sb(r,a,o){const{opacity:l,zIndex:d}=a;l!=null&&l!==o.opacity&&r.setOpacity(l),d!=null&&d!==o.zIndex&&r.setZIndex(d)}function ab(){return Jc().map}const lb=ib(function({center:a,children:o,...l},d){const f=new td.CircleMarker(a,l);return N0(f,G2(d,{overlayContainer:f}))},Z2);function a0(){return a0=Object.assign||function(r){for(var a=1;a(B==null?void 0:B.map)??null,[B]);const C=F.useCallback(D=>{if(D!==null&&B===null){const P=new td.Map(D,v);o!=null&&m!=null?P.setView(o,m):r!=null&&P.fitBounds(r,a),g!=null&&P.whenReady(g),T(q2(P))}},[]);F.useEffect(()=>()=>{B==null||B.map.remove()},[B]);const k=B?Ce.createElement(_x,{value:B},l):p??null;return Ce.createElement("div",a0({},w,{ref:C}),k)}const cb=F.forwardRef(ub),db=rb(function(a,o){const l=new td.Popup(a,o.overlayContainer);return N0(l,o)},function(a,o,{position:l},d){F.useEffect(function(){const{instance:p}=a;function h(m){m.popup===p&&(p.update(),d(!0))}function g(m){m.popup===p&&d(!1)}return o.map.on({popupopen:h,popupclose:g}),o.overlayContainer==null?(l!=null&&p.setLatLng(l),p.openOn(o.map)):o.overlayContainer.bindPopup(p),function(){var v;o.map.off({popupopen:h,popupclose:g}),(v=o.overlayContainer)==null||v.unbindPopup(),o.map.removeLayer(p)}},[a,o,d,l])}),fb=ob(function({url:a,...o},l){const d=new td.TileLayer(a,ed(o,l));return N0(d,l)},function(a,o,l){sb(a,o,l);const{url:d}=o;d!=null&&d!==l.url&&a.setUrl(d)});function hb(r){const o=Date.now()/1e3-r,l=3600,d=86400;return o{if(a&&a.lat!=null&&a.lon!=null){o.setView([a.lat,a.lon],12),d(!0);return}if(l)return;const f=()=>{if(r.length===0){o.setView([20,0],2),d(!0);return}if(r.length===1){o.setView([r[0].lat,r[0].lon],10),d(!0);return}const p=r.map(h=>[h.lat,h.lon]);o.fitBounds(p,{padding:[50,50],maxZoom:12}),d(!0)};"geolocation"in navigator?navigator.geolocation.getCurrentPosition(p=>{o.setView([p.coords.latitude,p.coords.longitude],8),d(!0)},()=>{f()},{timeout:5e3,maximumAge:3e5}):f()},[o,r,l,a]),null}function mb({contacts:r,focusedKey:a}){const o=F.useMemo(()=>{const p=Date.now()/1e3-604800;return r.filter(h=>h.lat!=null&&h.lon!=null&&h.last_seen!=null&&h.last_seen>p)},[r]),l=F.useMemo(()=>a&&o.find(p=>x0(p.public_key,a))||null,[a,o]),d=F.useRef({}),f=F.useCallback((p,h)=>{d.current[p]=h},[]);return F.useEffect(()=>{if(l&&d.current[l.public_key]){const p=setTimeout(()=>{var h;(h=d.current[l.public_key])==null||h.openPopup()},100);return()=>clearTimeout(p)}},[l]),b.jsxs("div",{className:"flex flex-col h-full",children:[b.jsxs("div",{className:"px-4 py-2 bg-muted/50 text-xs text-muted-foreground flex items-center justify-between",children:[b.jsxs("span",{children:["Showing ",o.length," contact",o.length!==1?"s":""," heard in the last 7 days"]}),b.jsxs("div",{className:"flex items-center gap-3",children:[b.jsxs("span",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"w-3 h-3 rounded-full bg-[#22c55e]"})," <1h"]}),b.jsxs("span",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"w-3 h-3 rounded-full bg-[#4ade80]"})," <1d"]}),b.jsxs("span",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"w-3 h-3 rounded-full bg-[#a3e635]"})," <3d"]}),b.jsxs("span",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"w-3 h-3 rounded-full bg-[#9ca3af]"})," older"]})]})]}),b.jsx("div",{className:"flex-1 relative",style:{zIndex:0},children:b.jsxs(cb,{center:[20,0],zoom:2,className:"h-full w-full",style:{background:"#1a1a2e"},children:[b.jsx(fb,{attribution:'© OpenStreetMap',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),b.jsx(pb,{contacts:o,focusedContact:l}),o.map(p=>{const h=p.type===Oc,g=hb(p.last_seen),m=p.name||p.public_key.slice(0,12);return b.jsx(lb,{ref:v=>f(p.public_key,v),center:[p.lat,p.lon],radius:h?10:7,pathOptions:{color:h?g:"#000",fillColor:g,fillOpacity:.8,weight:h?0:1},children:b.jsx(db,{children:b.jsxs("div",{className:"text-sm",children:[b.jsxs("div",{className:"font-medium flex items-center gap-1",children:[h&&b.jsx("span",{title:"Repeater",children:"🛜"}),m]}),b.jsxs("div",{className:"text-xs text-gray-500 mt-1",children:["Last heard: ",Qs(p.last_seen)]}),b.jsxs("div",{className:"text-xs text-gray-400 mt-1 font-mono",children:[p.lat.toFixed(5),", ",p.lon.toFixed(5)]})]})})},p.public_key)})]})})]})}const gb="modulepreload",Ab=function(r){return"/"+r},mm={},xb=function(a,o,l){let d=Promise.resolve();if(o&&o.length>0){let p=function(m){return Promise.all(m.map(v=>Promise.resolve(v).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),g=(h==null?void 0:h.nonce)||(h==null?void 0:h.getAttribute("nonce"));d=p(o.map(m=>{if(m=Ab(m),m in mm)return;mm[m]=!0;const v=m.endsWith(".css"),y=v?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${y}`))return;const w=document.createElement("link");if(w.rel=v?"stylesheet":gb,v||(w.as="script"),w.crossOrigin="",w.href=m,g&&w.setAttribute("nonce",g),document.head.appendChild(w),v)return new Promise((B,T)=>{w.addEventListener("load",B),w.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${m}`)))})}))}function f(p){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=p,window.dispatchEvent(h),!h.defaultPrevented)throw p}return d.then(p=>{for(const h of p||[])h.status==="rejected"&&f(h.reason);return a().catch(f)})};var wi={},Ga={},xn={},gm;function sr(){if(gm)return xn;gm=1,Object.defineProperty(xn,"__esModule",{value:!0}),xn.RequestType=xn.AdvertFlags=xn.DeviceRole=xn.PayloadVersion=xn.ControlSubType=xn.PayloadType=xn.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||(xn.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||(xn.PayloadType=a={}));var o;(function(h){h[h.NodeDiscoverReq=128]="NodeDiscoverReq",h[h.NodeDiscoverResp=144]="NodeDiscoverResp"})(o||(xn.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||(xn.PayloadVersion=l={}));var d;(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"})(d||(xn.DeviceRole=d={}));var f;(function(h){h[h.HasLocation=16]="HasLocation",h[h.HasFeature1=32]="HasFeature1",h[h.HasFeature2=64]="HasFeature2",h[h.HasName=128]="HasName"})(f||(xn.AdvertFlags=f={}));var p;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"})(p||(xn.RequestType=p={})),xn}var Ho={},Am;function vn(){if(Am)return Ho;Am=1,Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.byteToHex=r,Ho.bytesToHex=a,Ho.numberToHex=o,Ho.hexToBytes=l;function r(d){return d.toString(16).padStart(2,"0").toUpperCase()}function a(d){return Array.from(d).map(r).join("")}function o(d,f=8){return(d>>>0).toString(16).padStart(f,"0").toUpperCase()}function l(d){const f=d.replace(/\s/g,"").toUpperCase();if(!/^[0-9A-F]*$/.test(f))throw new Error("Invalid hex string: invalid characters at position 0");if(f.length%2!==0)throw new Error("Invalid hex string: odd length");const p=new Uint8Array(f.length/2);for(let h=0;h>>2]>>>24-H%4*8&255;S[I+H>>>2]|=j<<24-(I+H)%4*8}else for(var ee=0;ee>>2]=N[ee>>>2];return this.sigBytes+=z,this},clamp:function(){var P=this.words,S=this.sigBytes;P[S>>>2]&=4294967295<<32-S%4*8,P.length=l.ceil(S/4)},clone:function(){var P=v.clone.call(this);return P.words=this.words.slice(0),P},random:function(P){for(var S=[],N=0;N>>2]>>>24-z%4*8&255;I.push((H>>>4).toString(16)),I.push((H&15).toString(16))}return I.join("")},parse:function(P){for(var S=P.length,N=[],I=0;I>>3]|=parseInt(P.substr(I,2),16)<<24-I%8*4;return new y.init(N,S/2)}},T=w.Latin1={stringify:function(P){for(var S=P.words,N=P.sigBytes,I=[],z=0;z>>2]>>>24-z%4*8&255;I.push(String.fromCharCode(H))}return I.join("")},parse:function(P){for(var S=P.length,N=[],I=0;I>>2]|=(P.charCodeAt(I)&255)<<24-I%4*8;return new y.init(N,S)}},C=w.Utf8={stringify:function(P){try{return decodeURIComponent(escape(T.stringify(P)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(P){return T.parse(unescape(encodeURIComponent(P)))}},k=m.BufferedBlockAlgorithm=v.extend({reset:function(){this._data=new y.init,this._nDataBytes=0},_append:function(P){typeof P=="string"&&(P=C.parse(P)),this._data.concat(P),this._nDataBytes+=P.sigBytes},_process:function(P){var S,N=this._data,I=N.words,z=N.sigBytes,H=this.blockSize,j=H*4,ee=z/j;P?ee=l.ceil(ee):ee=l.max((ee|0)-this._minBufferSize,0);var Z=ee*H,V=l.min(Z*4,z);if(Z){for(var ne=0;ne>>2]|=g[y]<<24-y%4*8;p.call(this,v,m)}else p.apply(this,arguments)};h.prototype=f}})(),o.lib.WordArray})})(Ku)),Ku.exports}var Qu={exports:{}},Eb=Qu.exports,wm;function kb(){return wm||(wm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Eb,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=l.enc;p.Utf16=p.Utf16BE={stringify:function(g){for(var m=g.words,v=g.sigBytes,y=[],w=0;w>>2]>>>16-w%4*8&65535;y.push(String.fromCharCode(B))}return y.join("")},parse:function(g){for(var m=g.length,v=[],y=0;y>>1]|=g.charCodeAt(y)<<16-y%2*16;return f.create(v,m*2)}},p.Utf16LE={stringify:function(g){for(var m=g.words,v=g.sigBytes,y=[],w=0;w>>2]>>>16-w%4*8&65535);y.push(String.fromCharCode(B))}return y.join("")},parse:function(g){for(var m=g.length,v=[],y=0;y>>1]|=h(g.charCodeAt(y)<<16-y%2*16);return f.create(v,m*2)}};function h(g){return g<<8&4278255360|g>>>8&16711935}})(),o.enc.Utf16})})(Qu)),Qu.exports}var $u={exports:{}},Sb=$u.exports,bm;function $o(){return bm||(bm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Sb,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=l.enc;p.Base64={stringify:function(g){var m=g.words,v=g.sigBytes,y=this._map;g.clamp();for(var w=[],B=0;B>>2]>>>24-B%4*8&255,C=m[B+1>>>2]>>>24-(B+1)%4*8&255,k=m[B+2>>>2]>>>24-(B+2)%4*8&255,D=T<<16|C<<8|k,P=0;P<4&&B+P*.75>>6*(3-P)&63));var S=y.charAt(64);if(S)for(;w.length%4;)w.push(S);return w.join("")},parse:function(g){var m=g.length,v=this._map,y=this._reverseMap;if(!y){y=this._reverseMap=[];for(var w=0;w>>6-B%4*2,k=T|C;y[w>>>2]|=k<<24-w%4*8,w++}return f.create(y,w)}})(),o.enc.Base64})})($u)),$u.exports}var Yu={exports:{}},Bb=Yu.exports,Cm;function Pb(){return Cm||(Cm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Bb,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=l.enc;p.Base64url={stringify:function(g,m){m===void 0&&(m=!0);var v=g.words,y=g.sigBytes,w=m?this._safe_map:this._map;g.clamp();for(var B=[],T=0;T>>2]>>>24-T%4*8&255,k=v[T+1>>>2]>>>24-(T+1)%4*8&255,D=v[T+2>>>2]>>>24-(T+2)%4*8&255,P=C<<16|k<<8|D,S=0;S<4&&T+S*.75>>6*(3-S)&63));var N=w.charAt(64);if(N)for(;B.length%4;)B.push(N);return B.join("")},parse:function(g,m){m===void 0&&(m=!0);var v=g.length,y=m?this._safe_map:this._map,w=this._reverseMap;if(!w){w=this._reverseMap=[];for(var B=0;B>>6-B%4*2,k=T|C;y[w>>>2]|=k<<24-w%4*8,w++}return f.create(y,w)}})(),o.enc.Base64url})})(Yu)),Yu.exports}var Xu={exports:{}},Tb=Xu.exports,Em;function Yo(){return Em||(Em=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Tb,function(o){return(function(l){var d=o,f=d.lib,p=f.WordArray,h=f.Hasher,g=d.algo,m=[];(function(){for(var C=0;C<64;C++)m[C]=l.abs(l.sin(C+1))*4294967296|0})();var v=g.MD5=h.extend({_doReset:function(){this._hash=new p.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(C,k){for(var D=0;D<16;D++){var P=k+D,S=C[P];C[P]=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360}var N=this._hash.words,I=C[k+0],z=C[k+1],H=C[k+2],j=C[k+3],ee=C[k+4],Z=C[k+5],V=C[k+6],ne=C[k+7],J=C[k+8],ie=C[k+9],he=C[k+10],ae=C[k+11],pe=C[k+12],G=C[k+13],Y=C[k+14],q=C[k+15],R=N[0],U=N[1],K=N[2],$=N[3];R=y(R,U,K,$,I,7,m[0]),$=y($,R,U,K,z,12,m[1]),K=y(K,$,R,U,H,17,m[2]),U=y(U,K,$,R,j,22,m[3]),R=y(R,U,K,$,ee,7,m[4]),$=y($,R,U,K,Z,12,m[5]),K=y(K,$,R,U,V,17,m[6]),U=y(U,K,$,R,ne,22,m[7]),R=y(R,U,K,$,J,7,m[8]),$=y($,R,U,K,ie,12,m[9]),K=y(K,$,R,U,he,17,m[10]),U=y(U,K,$,R,ae,22,m[11]),R=y(R,U,K,$,pe,7,m[12]),$=y($,R,U,K,G,12,m[13]),K=y(K,$,R,U,Y,17,m[14]),U=y(U,K,$,R,q,22,m[15]),R=w(R,U,K,$,z,5,m[16]),$=w($,R,U,K,V,9,m[17]),K=w(K,$,R,U,ae,14,m[18]),U=w(U,K,$,R,I,20,m[19]),R=w(R,U,K,$,Z,5,m[20]),$=w($,R,U,K,he,9,m[21]),K=w(K,$,R,U,q,14,m[22]),U=w(U,K,$,R,ee,20,m[23]),R=w(R,U,K,$,ie,5,m[24]),$=w($,R,U,K,Y,9,m[25]),K=w(K,$,R,U,j,14,m[26]),U=w(U,K,$,R,J,20,m[27]),R=w(R,U,K,$,G,5,m[28]),$=w($,R,U,K,H,9,m[29]),K=w(K,$,R,U,ne,14,m[30]),U=w(U,K,$,R,pe,20,m[31]),R=B(R,U,K,$,Z,4,m[32]),$=B($,R,U,K,J,11,m[33]),K=B(K,$,R,U,ae,16,m[34]),U=B(U,K,$,R,Y,23,m[35]),R=B(R,U,K,$,z,4,m[36]),$=B($,R,U,K,ee,11,m[37]),K=B(K,$,R,U,ne,16,m[38]),U=B(U,K,$,R,he,23,m[39]),R=B(R,U,K,$,G,4,m[40]),$=B($,R,U,K,I,11,m[41]),K=B(K,$,R,U,j,16,m[42]),U=B(U,K,$,R,V,23,m[43]),R=B(R,U,K,$,ie,4,m[44]),$=B($,R,U,K,pe,11,m[45]),K=B(K,$,R,U,q,16,m[46]),U=B(U,K,$,R,H,23,m[47]),R=T(R,U,K,$,I,6,m[48]),$=T($,R,U,K,ne,10,m[49]),K=T(K,$,R,U,Y,15,m[50]),U=T(U,K,$,R,Z,21,m[51]),R=T(R,U,K,$,pe,6,m[52]),$=T($,R,U,K,j,10,m[53]),K=T(K,$,R,U,he,15,m[54]),U=T(U,K,$,R,z,21,m[55]),R=T(R,U,K,$,J,6,m[56]),$=T($,R,U,K,q,10,m[57]),K=T(K,$,R,U,V,15,m[58]),U=T(U,K,$,R,G,21,m[59]),R=T(R,U,K,$,ee,6,m[60]),$=T($,R,U,K,ae,10,m[61]),K=T(K,$,R,U,H,15,m[62]),U=T(U,K,$,R,ie,21,m[63]),N[0]=N[0]+R|0,N[1]=N[1]+U|0,N[2]=N[2]+K|0,N[3]=N[3]+$|0},_doFinalize:function(){var C=this._data,k=C.words,D=this._nDataBytes*8,P=C.sigBytes*8;k[P>>>5]|=128<<24-P%32;var S=l.floor(D/4294967296),N=D;k[(P+64>>>9<<4)+15]=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360,k[(P+64>>>9<<4)+14]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360,C.sigBytes=(k.length+1)*4,this._process();for(var I=this._hash,z=I.words,H=0;H<4;H++){var j=z[H];z[H]=(j<<8|j>>>24)&16711935|(j<<24|j>>>8)&4278255360}return I},clone:function(){var C=h.clone.call(this);return C._hash=this._hash.clone(),C}});function y(C,k,D,P,S,N,I){var z=C+(k&D|~k&P)+S+I;return(z<>>32-N)+k}function w(C,k,D,P,S,N,I){var z=C+(k&P|D&~P)+S+I;return(z<>>32-N)+k}function B(C,k,D,P,S,N,I){var z=C+(k^D^P)+S+I;return(z<>>32-N)+k}function T(C,k,D,P,S,N,I){var z=C+(D^(k|~P))+S+I;return(z<>>32-N)+k}d.MD5=h._createHelper(v),d.HmacMD5=h._createHmacHelper(v)})(Math),o.MD5})})(Xu)),Xu.exports}var Ju={exports:{}},Db=Ju.exports,km;function bx(){return km||(km=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Db,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=d.Hasher,h=l.algo,g=[],m=h.SHA1=p.extend({_doReset:function(){this._hash=new f.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(v,y){for(var w=this._hash.words,B=w[0],T=w[1],C=w[2],k=w[3],D=w[4],P=0;P<80;P++){if(P<16)g[P]=v[y+P]|0;else{var S=g[P-3]^g[P-8]^g[P-14]^g[P-16];g[P]=S<<1|S>>>31}var N=(B<<5|B>>>27)+D+g[P];P<20?N+=(T&C|~T&k)+1518500249:P<40?N+=(T^C^k)+1859775393:P<60?N+=(T&C|T&k|C&k)-1894007588:N+=(T^C^k)-899497514,D=k,k=C,C=T<<30|T>>>2,T=B,B=N}w[0]=w[0]+B|0,w[1]=w[1]+T|0,w[2]=w[2]+C|0,w[3]=w[3]+k|0,w[4]=w[4]+D|0},_doFinalize:function(){var v=this._data,y=v.words,w=this._nDataBytes*8,B=v.sigBytes*8;return y[B>>>5]|=128<<24-B%32,y[(B+64>>>9<<4)+14]=Math.floor(w/4294967296),y[(B+64>>>9<<4)+15]=w,v.sigBytes=y.length*4,this._process(),this._hash},clone:function(){var v=p.clone.call(this);return v._hash=this._hash.clone(),v}});l.SHA1=p._createHelper(m),l.HmacSHA1=p._createHmacHelper(m)})(),o.SHA1})})(Ju)),Ju.exports}var ec={exports:{}},Rb=ec.exports,Sm;function ml(){return Sm||(Sm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Rb,function(o){return(function(l){var d=o,f=d.lib,p=f.WordArray,h=f.Hasher,g=d.algo,m=[],v=[];(function(){function B(D){for(var P=l.sqrt(D),S=2;S<=P;S++)if(!(D%S))return!1;return!0}function T(D){return(D-(D|0))*4294967296|0}for(var C=2,k=0;k<64;)B(C)&&(k<8&&(m[k]=T(l.pow(C,1/2))),v[k]=T(l.pow(C,1/3)),k++),C++})();var y=[],w=g.SHA256=h.extend({_doReset:function(){this._hash=new p.init(m.slice(0))},_doProcessBlock:function(B,T){for(var C=this._hash.words,k=C[0],D=C[1],P=C[2],S=C[3],N=C[4],I=C[5],z=C[6],H=C[7],j=0;j<64;j++){if(j<16)y[j]=B[T+j]|0;else{var ee=y[j-15],Z=(ee<<25|ee>>>7)^(ee<<14|ee>>>18)^ee>>>3,V=y[j-2],ne=(V<<15|V>>>17)^(V<<13|V>>>19)^V>>>10;y[j]=Z+y[j-7]+ne+y[j-16]}var J=N&I^~N&z,ie=k&D^k&P^D&P,he=(k<<30|k>>>2)^(k<<19|k>>>13)^(k<<10|k>>>22),ae=(N<<26|N>>>6)^(N<<21|N>>>11)^(N<<7|N>>>25),pe=H+ae+J+v[j]+y[j],G=he+ie;H=z,z=I,I=N,N=S+pe|0,S=P,P=D,D=k,k=pe+G|0}C[0]=C[0]+k|0,C[1]=C[1]+D|0,C[2]=C[2]+P|0,C[3]=C[3]+S|0,C[4]=C[4]+N|0,C[5]=C[5]+I|0,C[6]=C[6]+z|0,C[7]=C[7]+H|0},_doFinalize:function(){var B=this._data,T=B.words,C=this._nDataBytes*8,k=B.sigBytes*8;return T[k>>>5]|=128<<24-k%32,T[(k+64>>>9<<4)+14]=l.floor(C/4294967296),T[(k+64>>>9<<4)+15]=C,B.sigBytes=T.length*4,this._process(),this._hash},clone:function(){var B=h.clone.call(this);return B._hash=this._hash.clone(),B}});d.SHA256=h._createHelper(w),d.HmacSHA256=h._createHmacHelper(w)})(Math),o.SHA256})})(ec)),ec.exports}var tc={exports:{}},Fb=tc.exports,Bm;function Nb(){return Bm||(Bm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),ml())})(Fb,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=l.algo,h=p.SHA256,g=p.SHA224=h.extend({_doReset:function(){this._hash=new f.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var m=h._doFinalize.call(this);return m.sigBytes-=4,m}});l.SHA224=h._createHelper(g),l.HmacSHA224=h._createHmacHelper(g)})(),o.SHA224})})(tc)),tc.exports}var nc={exports:{}},Lb=nc.exports,Pm;function Cx(){return Pm||(Pm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),nd())})(Lb,function(o){return(function(){var l=o,d=l.lib,f=d.Hasher,p=l.x64,h=p.Word,g=p.WordArray,m=l.algo;function v(){return h.create.apply(h,arguments)}var y=[v(1116352408,3609767458),v(1899447441,602891725),v(3049323471,3964484399),v(3921009573,2173295548),v(961987163,4081628472),v(1508970993,3053834265),v(2453635748,2937671579),v(2870763221,3664609560),v(3624381080,2734883394),v(310598401,1164996542),v(607225278,1323610764),v(1426881987,3590304994),v(1925078388,4068182383),v(2162078206,991336113),v(2614888103,633803317),v(3248222580,3479774868),v(3835390401,2666613458),v(4022224774,944711139),v(264347078,2341262773),v(604807628,2007800933),v(770255983,1495990901),v(1249150122,1856431235),v(1555081692,3175218132),v(1996064986,2198950837),v(2554220882,3999719339),v(2821834349,766784016),v(2952996808,2566594879),v(3210313671,3203337956),v(3336571891,1034457026),v(3584528711,2466948901),v(113926993,3758326383),v(338241895,168717936),v(666307205,1188179964),v(773529912,1546045734),v(1294757372,1522805485),v(1396182291,2643833823),v(1695183700,2343527390),v(1986661051,1014477480),v(2177026350,1206759142),v(2456956037,344077627),v(2730485921,1290863460),v(2820302411,3158454273),v(3259730800,3505952657),v(3345764771,106217008),v(3516065817,3606008344),v(3600352804,1432725776),v(4094571909,1467031594),v(275423344,851169720),v(430227734,3100823752),v(506948616,1363258195),v(659060556,3750685593),v(883997877,3785050280),v(958139571,3318307427),v(1322822218,3812723403),v(1537002063,2003034995),v(1747873779,3602036899),v(1955562222,1575990012),v(2024104815,1125592928),v(2227730452,2716904306),v(2361852424,442776044),v(2428436474,593698344),v(2756734187,3733110249),v(3204031479,2999351573),v(3329325298,3815920427),v(3391569614,3928383900),v(3515267271,566280711),v(3940187606,3454069534),v(4118630271,4000239992),v(116418474,1914138554),v(174292421,2731055270),v(289380356,3203993006),v(460393269,320620315),v(685471733,587496836),v(852142971,1086792851),v(1017036298,365543100),v(1126000580,2618297676),v(1288033470,3409855158),v(1501505948,4234509866),v(1607167915,987167468),v(1816402316,1246189591)],w=[];(function(){for(var T=0;T<80;T++)w[T]=v()})();var B=m.SHA512=f.extend({_doReset:function(){this._hash=new g.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(T,C){for(var k=this._hash.words,D=k[0],P=k[1],S=k[2],N=k[3],I=k[4],z=k[5],H=k[6],j=k[7],ee=D.high,Z=D.low,V=P.high,ne=P.low,J=S.high,ie=S.low,he=N.high,ae=N.low,pe=I.high,G=I.low,Y=z.high,q=z.low,R=H.high,U=H.low,K=j.high,$=j.low,de=ee,fe=Z,ke=V,Ae=ne,We=J,$e=ie,wt=he,ft=ae,Be=pe,Ze=G,lt=Y,Rt=q,vt=R,ot=U,Qe=K,Xe=$,xe=0;xe<80;xe++){var Te,pt,Zt=w[xe];if(xe<16)pt=Zt.high=T[C+xe*2]|0,Te=Zt.low=T[C+xe*2+1]|0;else{var tn=w[xe-15],jt=tn.high,nn=tn.low,mn=(jt>>>1|nn<<31)^(jt>>>8|nn<<24)^jt>>>7,Tn=(nn>>>1|jt<<31)^(nn>>>8|jt<<24)^(nn>>>7|jt<<25),Wt=w[xe-2],Pt=Wt.high,qt=Wt.low,qn=(Pt>>>19|qt<<13)^(Pt<<3|qt>>>29)^Pt>>>6,yn=(qt>>>19|Pt<<13)^(qt<<3|Pt>>>29)^(qt>>>6|Pt<<26),ge=w[xe-7],be=ge.high,De=ge.low,re=w[xe-16],me=re.high,Se=re.low;Te=Tn+De,pt=mn+be+(Te>>>0>>0?1:0),Te=Te+yn,pt=pt+qn+(Te>>>0>>0?1:0),Te=Te+Se,pt=pt+me+(Te>>>0>>0?1:0),Zt.high=pt,Zt.low=Te}var Ne=Be<^~Be&vt,Ve=Ze&Rt^~Ze&ot,$t=de&ke^de&We^ke&We,Ue=fe&Ae^fe&$e^Ae&$e,mt=(de>>>28|fe<<4)^(de<<30|fe>>>2)^(de<<25|fe>>>7),Bt=(fe>>>28|de<<4)^(fe<<30|de>>>2)^(fe<<25|de>>>7),Lt=(Be>>>14|Ze<<18)^(Be>>>18|Ze<<14)^(Be<<23|Ze>>>9),Mn=(Ze>>>14|Be<<18)^(Ze>>>18|Be<<14)^(Ze<<23|Be>>>9),it=y[xe],Et=it.high,Gn=it.low,gt=Xe+Mn,Mt=Qe+Lt+(gt>>>0>>0?1:0),gt=gt+Ve,Mt=Mt+Ne+(gt>>>0>>0?1:0),gt=gt+Gn,Mt=Mt+Et+(gt>>>0>>0?1:0),gt=gt+Te,Mt=Mt+pt+(gt>>>0>>0?1:0),Gt=Bt+Ue,Re=mt+$t+(Gt>>>0>>0?1:0);Qe=vt,Xe=ot,vt=lt,ot=Rt,lt=Be,Rt=Ze,Ze=ft+gt|0,Be=wt+Mt+(Ze>>>0>>0?1:0)|0,wt=We,ft=$e,We=ke,$e=Ae,ke=de,Ae=fe,fe=gt+Gt|0,de=Mt+Re+(fe>>>0>>0?1:0)|0}Z=D.low=Z+fe,D.high=ee+de+(Z>>>0>>0?1:0),ne=P.low=ne+Ae,P.high=V+ke+(ne>>>0>>0?1:0),ie=S.low=ie+$e,S.high=J+We+(ie>>>0<$e>>>0?1:0),ae=N.low=ae+ft,N.high=he+wt+(ae>>>0>>0?1:0),G=I.low=G+Ze,I.high=pe+Be+(G>>>0>>0?1:0),q=z.low=q+Rt,z.high=Y+lt+(q>>>0>>0?1:0),U=H.low=U+ot,H.high=R+vt+(U>>>0>>0?1:0),$=j.low=$+Xe,j.high=K+Qe+($>>>0>>0?1:0)},_doFinalize:function(){var T=this._data,C=T.words,k=this._nDataBytes*8,D=T.sigBytes*8;C[D>>>5]|=128<<24-D%32,C[(D+128>>>10<<5)+30]=Math.floor(k/4294967296),C[(D+128>>>10<<5)+31]=k,T.sigBytes=C.length*4,this._process();var P=this._hash.toX32();return P},clone:function(){var T=f.clone.call(this);return T._hash=this._hash.clone(),T},blockSize:1024/32});l.SHA512=f._createHelper(B),l.HmacSHA512=f._createHmacHelper(B)})(),o.SHA512})})(nc)),nc.exports}var rc={exports:{}},Mb=rc.exports,Tm;function Ib(){return Tm||(Tm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),nd(),Cx())})(Mb,function(o){return(function(){var l=o,d=l.x64,f=d.Word,p=d.WordArray,h=l.algo,g=h.SHA512,m=h.SHA384=g.extend({_doReset:function(){this._hash=new p.init([new f.init(3418070365,3238371032),new f.init(1654270250,914150663),new f.init(2438529370,812702999),new f.init(355462360,4144912697),new f.init(1731405415,4290775857),new f.init(2394180231,1750603025),new f.init(3675008525,1694076839),new f.init(1203062813,3204075428)])},_doFinalize:function(){var v=g._doFinalize.call(this);return v.sigBytes-=16,v}});l.SHA384=g._createHelper(m),l.HmacSHA384=g._createHmacHelper(m)})(),o.SHA384})})(rc)),rc.exports}var ic={exports:{}},Ob=ic.exports,Dm;function jb(){return Dm||(Dm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),nd())})(Ob,function(o){return(function(l){var d=o,f=d.lib,p=f.WordArray,h=f.Hasher,g=d.x64,m=g.Word,v=d.algo,y=[],w=[],B=[];(function(){for(var k=1,D=0,P=0;P<24;P++){y[k+5*D]=(P+1)*(P+2)/2%64;var S=D%5,N=(2*k+3*D)%5;k=S,D=N}for(var k=0;k<5;k++)for(var D=0;D<5;D++)w[k+5*D]=D+(2*k+3*D)%5*5;for(var I=1,z=0;z<24;z++){for(var H=0,j=0,ee=0;ee<7;ee++){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 H=P[N];H.high^=z,H.low^=I}for(var j=0;j<24;j++){for(var ee=0;ee<5;ee++){for(var Z=0,V=0,ne=0;ne<5;ne++){var H=P[ee+5*ne];Z^=H.high,V^=H.low}var J=T[ee];J.high=Z,J.low=V}for(var ee=0;ee<5;ee++)for(var ie=T[(ee+4)%5],he=T[(ee+1)%5],ae=he.high,pe=he.low,Z=ie.high^(ae<<1|pe>>>31),V=ie.low^(pe<<1|ae>>>31),ne=0;ne<5;ne++){var H=P[ee+5*ne];H.high^=Z,H.low^=V}for(var G=1;G<25;G++){var Z,V,H=P[G],Y=H.high,q=H.low,R=y[G];R<32?(Z=Y<>>32-R,V=q<>>32-R):(Z=q<>>64-R,V=Y<>>64-R);var U=T[w[G]];U.high=Z,U.low=V}var K=T[0],$=P[0];K.high=$.high,K.low=$.low;for(var ee=0;ee<5;ee++)for(var ne=0;ne<5;ne++){var G=ee+5*ne,H=P[G],de=T[G],fe=T[(ee+1)%5+5*ne],ke=T[(ee+2)%5+5*ne];H.high=de.high^~fe.high&ke.high,H.low=de.low^~fe.low&ke.low}var H=P[0],Ae=B[j];H.high^=Ae.high,H.low^=Ae.low}},_doFinalize:function(){var k=this._data,D=k.words;this._nDataBytes*8;var P=k.sigBytes*8,S=this.blockSize*32;D[P>>>5]|=1<<24-P%32,D[(l.ceil((P+1)/S)*S>>>5)-1]|=128,k.sigBytes=D.length*4,this._process();for(var N=this._state,I=this.cfg.outputLength/8,z=I/8,H=[],j=0;j>>24)&16711935|(Z<<24|Z>>>8)&4278255360,V=(V<<8|V>>>24)&16711935|(V<<24|V>>>8)&4278255360,H.push(V),H.push(Z)}return new p.init(H,I)},clone:function(){for(var k=h.clone.call(this),D=k._state=this._state.slice(0),P=0;P<25;P++)D[P]=D[P].clone();return k}});d.SHA3=h._createHelper(C),d.HmacSHA3=h._createHmacHelper(C)})(Math),o.SHA3})})(ic)),ic.exports}var oc={exports:{}},zb=oc.exports,Rm;function Hb(){return Rm||(Rm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(zb,function(o){/** @preserve + */var X2=sl.exports,pm;function J2(){return pm||(pm=1,(function(r,a){(function(o,l){l(a)})(X2,(function(o){var l="1.9.4";function d(t){var i,u,A,E;for(u=1,A=arguments.length;u"u"||!L||!L.Mixin)){t=S(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=Y(this.x),this.y=Y(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:S(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 R(t,i){if(t)for(var u=i?[t,i]:t,A=0,E=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,E=t.max,O=E.x>=i.x&&A.x<=u.x,Q=E.y>=i.y&&A.y<=u.y;return O&&Q},overlaps:function(t){t=U(t);var i=this.min,u=this.max,A=t.min,E=t.max,O=E.x>i.x&&A.xi.y&&A.y=i.lat&&E.lat<=u.lat&&A.lng>=i.lng&&E.lng<=u.lng},intersects:function(t){t=$(t);var i=this._southWest,u=this._northEast,A=t.getSouthWest(),E=t.getNorthEast(),O=E.lat>=i.lat&&A.lat<=u.lat,Q=E.lng>=i.lng&&A.lng<=u.lng;return O&&Q},overlaps:function(t){t=$(t);var i=this._southWest,u=this._northEast,A=t.getSouthWest(),E=t.getNorthEast(),O=E.lat>i.lat&&A.lati.lng&&A.lng1,Lt=(function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassiveEventSupport",y,i),window.removeEventListener("testPassiveEventSupport",y,i)}catch{}return t})(),Mn=(function(){return!!document.createElement("canvas").getContext})(),it=!!(document.createElementNS&<("svg").createSVGRect),Et=!!it&&(function(){var t=document.createElement("div");return t.innerHTML="",(t.firstChild&&t.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"})(),Gn=!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}})(),gt=navigator.platform.indexOf("Mac")===0,Mt=navigator.platform.indexOf("Linux")===0;function Gt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var Re={ie:ot,ielt9:Qe,edge:Xe,webkit:xe,android:Te,android23:pt,androidStock:tn,opera:jt,chrome:nn,gecko:mn,safari:Tn,phantom:Wt,opera12:Pt,win:qt,ie3d:qn,webkit3d:yn,gecko3d:ge,any3d:be,mobile:De,mobileWebkit:re,mobileWebkit3d:me,msPointer:Se,pointer:Ne,touch:$t,touchNative:Ve,mobileOpera:Ue,mobileGecko:mt,retina:Bt,passiveEvents:Lt,canvas:Mn,svg:it,vml:Gn,inlineSvg:Et,mac:gt,linux:Mt},Si=Re.msPointer?"MSPointerDown":"pointerdown",Xo=Re.msPointer?"MSPointerMove":"pointermove",gl=Re.msPointer?"MSPointerUp":"pointerup",Al=Re.msPointer?"MSPointerCancel":"pointercancel",na={touchstart:Si,touchmove:Xo,touchend:gl,touchcancel:Al},Mr={touchstart:zt,touchmove:Jo,touchend:Jo,touchcancel:Jo},ti={},ra=!1;function sd(t,i,u){return i==="touchstart"&&ad(),Mr[i]?(u=Mr[i].bind(this,u),t.addEventListener(na[i],u,!1),u):(console.warn("wrong event specified:",i),y)}function xl(t,i,u){if(!na[i]){console.warn("wrong event specified:",i);return}t.removeEventListener(na[i],u,!1)}function vl(t){ti[t.pointerId]=t}function yl(t){ti[t.pointerId]&&(ti[t.pointerId]=t)}function ia(t){delete ti[t.pointerId]}function ad(){ra||(document.addEventListener(Si,vl,!0),document.addEventListener(Xo,yl,!0),document.addEventListener(gl,ia,!0),document.addEventListener(Al,ia,!0),ra=!0)}function Jo(t,i){if(i.pointerType!==(i.MSPOINTER_TYPE_MOUSE||"mouse")){i.touches=[];for(var u in ti)i.touches.push(ti[u]);i.changedTouches=[i],t(i)}}function zt(t,i){i.MSPOINTER_TYPE_TOUCH&&i.pointerType===i.MSPOINTER_TYPE_TOUCH&&Ht(i),Jo(t,i)}function ld(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 oa=200;function _l(t,i){t.addEventListener("dblclick",i);var u=0,A;function E(O){if(O.detail!==1){A=O.detail;return}if(!(O.pointerType==="mouse"||O.sourceCapabilities&&!O.sourceCapabilities.firesTouchEvents)){var Q=ii(O);if(!(Q.some(function(ue){return ue instanceof HTMLLabelElement&&ue.attributes.for})&&!Q.some(function(ue){return ue instanceof HTMLInputElement||ue instanceof HTMLSelectElement}))){var oe=Date.now();oe-u<=oa?(A++,A===2&&i(ld(O))):A=1,u=oe}}}return t.addEventListener("click",E),{dblclick:i,simDblclick:E}}function es(t,i){t.removeEventListener("dblclick",i.dblclick),t.removeEventListener("click",i.simDblclick)}var sa=Di(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),Bi=Di(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),ho=Bi==="webkitTransition"||Bi==="OTransition"?Bi+"End":"transitionend";function Kn(t){return typeof t=="string"?document.getElementById(t):t}function po(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 Ft(t){var i=t.parentNode;i&&i.removeChild(t)}function ts(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function Pi(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function yr(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function Ti(t,i){if(t.classList!==void 0)return t.classList.contains(i);var u=ns(t);return u.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(u)}function et(t,i){if(t.classList!==void 0)for(var u=T(i),A=0,E=u.length;A0?2*window.devicePixelRatio:1;function bl(t){return Re.edge?t.wheelDeltaY/2:t.deltaY&&t.deltaMode===0?-t.deltaY/ud: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 yo(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 ls={__proto__:null,on:Ye,off:kt,stopPropagation:lr,disableScrollPropagation:as,disableClickPropagation:xo,preventDefault:Ht,stop:Yn,getPropagationPath:ii,getMousePosition:vo,getWheelDelta:bl,isExternalTarget:yo,addListener:Ye,removeListener:kt},us=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=_r(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]),E=this.project(this.getCenter()),O=this.project(t),Q=this.getPixelBounds(),oe=U([Q.min.add(u),Q.max.subtract(A)]),ue=oe.getSize();if(!oe.contains(O)){this._enforcingBounds=!0;var ve=O.subtract(oe.getCenter()),Pe=oe.extend(O).getSize().subtract(ue);E.x+=ve.x<0?-Pe.x:Pe.x,E.y+=ve.y<0?-Pe.y:Pe.y,this.panTo(this.unproject(E),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=d({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(),E=u.divideBy(2).round(),O=A.subtract(E);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(p(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=d({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var i=p(this._handleGeolocationResponse,this),u=p(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 de(i,u),E=A.toBounds(t.coords.accuracy*2),O=this._locateOptions;if(O.setView){var Q=this.getBoundsZoom(E);this.setView(A,O.maxZoom?Math.min(Q,O.maxZoom):Q)}var oe={latlng:A,bounds:E,timestamp:t.timestamp};for(var ue in t.coords)typeof t.coords[ue]=="number"&&(oe[ue]=t.coords[ue]);this.fire("locationfound",oe)}},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(),Ft(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)Ft(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 K(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,E=this.getMinZoom(),O=this.getMaxZoom(),Q=t.getNorthWest(),oe=t.getSouthEast(),ue=this.getSize().subtract(u),ve=U(this.project(oe,A),this.project(Q,A)).getSize(),Pe=Re.any3d?this.options.zoomSnap:1,qe=ue.x/ve.x,nt=ue.y/ve.y,on=i?Math.max(qe,nt):Math.min(qe,nt);return A=this.getScaleZoom(on,A),Pe&&(A=Math.round(A/(Pe/100))*(Pe/100),A=i?Math.ceil(A/Pe)*Pe:Math.floor(A/Pe)*Pe),Math.max(E,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 R(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 vo(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=Kn(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=g(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=po(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),Kt(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){Kt(this._mapPane,new G(0,0));var A=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var E=this._zoom!==i;this._moveStart(E,u)._move(t,i)._moveEnd(E),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 E=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),A?u&&u.pinch&&this.fire("zoom",u):((E||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){Kt(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[g(this._container)]=this;var i=t?kt: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,E=i==="mouseout"||i==="mouseover",O=t.target||t.srcElement,Q=!1;O;){if(A=this._targets[g(O)],A&&(i==="click"||i==="preclick")&&this._draggableMoved(A)){Q=!0;break}if(A&&A.listens(i,!0)&&(E&&!yo(O,t)||(u.push(A),E))||O===this._container)break;O=O.parentNode}return!u.length&&!Q&&!E&&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"&&Fi(i),this._fireDOMEvent(t,u)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,i,u){if(t.type==="click"){var A=d({},t);A.type="preclick",this._fireDOMEvent(A,A.type,u)}var E=this._findEventTargets(t,i);if(u){for(var O=[],Q=0;Q0?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(){Tt(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=sa,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(){Ft(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),E=this._getCenterOffset(t)._divideBy(1-1/A);return u.animate!==!0&&!this.getSize().contains(E)?!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(p(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&Tt(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 Ir(t,i){return new ct(t,i)}var Dn=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?(Ft(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()}}),Or=function(t){return new Dn(t)};ct.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(E,O){var Q=i+E+" "+i+O;t[E+O]=tt("div",Q,u)}A("top","left"),A("top","right"),A("bottom","left"),A("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)Ft(this._controlCorners[t]);Ft(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var ca=Dn.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(g(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_"+g(this),u),this._layerControlInputs.push(A),A.layerId=g(t.layer),Ye(A,"click",this._onInputClick,this);var E=document.createElement("span");E.innerHTML=" "+t.name;var O=document.createElement("span");i.appendChild(O),O.appendChild(A),O.appendChild(E);var Q=t.overlay?this._overlaysList:this._baseLayersList;return Q.appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t=this._layerControlInputs,i,u,A=[],E=[];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||E.push(u);for(O=0;O=0;E--)i=t[E],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",Ht),this.expand();var i=this;setTimeout(function(){kt(t,"click",Ht),i._preventClick=!1})}}),cs=function(t,i,u){return new ca(t,i,u)},Ni=Dn.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,E){var O=tt("a",u,A);return O.innerHTML=t,O.href="#",O.title=i,O.setAttribute("role","button"),O.setAttribute("aria-label",i),xo(O),Ye(O,"click",Yn),Ye(O,"click",E,this),Ye(O,"click",this._refocusOnMap,this),O},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";Tt(this._zoomInButton,i),Tt(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"))}});ct.mergeOptions({zoomControl:!0}),ct.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ni,this.addControl(this.zoomControl))});var Cl=function(t){return new Ni(t)},wn=Dn.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,E;i>5280?(u=i/5280,A=this._getRoundNum(u),this._updateScale(this._iScale,A+" mi",A/u)):(E=this._getRoundNum(i),this._updateScale(this._iScale,E+" ft",E/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}}),Li=function(t){return new wn(t)},da='',oi=Dn.extend({options:{position:"bottomright",prefix:''+(Re.inlineSvg?da+" ":"")+"Leaflet"},initialize:function(t){C(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=tt("div","leaflet-control-attribution"),xo(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(' ')}}});ct.mergeOptions({attributionControl:!0}),ct.addInitHook(function(){this.options.attributionControl&&new oi().addTo(this)});var cd=function(t){return new oi(t)};Dn.Layers=ca,Dn.Zoom=Ni,Dn.Scale=wn,Dn.Attribution=oi,Or.layers=cs,Or.zoom=Cl,Or.scale=Li,Or.attribution=cd;var In=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}});In.addTo=function(t,i){return t.addHandler(i,this),this};var fa={Events:ae},Mi=Re.touch?"touchstart mousedown":"mousedown",Xn=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,Mi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Xn._dragging===this&&this.finishDrag(!0),kt(this._dragStartTarget,Mi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(this._enabled&&(this._moved=!1,!Ti(this._element,"leaflet-zoom-anim"))){if(t.touches&&t.touches.length!==1){Xn._dragging===this&&this.finishDrag();return}if(!(Xn._dragging||t.shiftKey||t.which!==1&&t.button!==1&&!t.touches)&&(Xn._dragging=this,this._preventOutline&&Fi(this._element),is(),ht(),!this._moving)){this.fire("down");var i=t.touches?t.touches[0]:t,u=wr(this._element);this._startPoint=new G(i.clientX,i.clientY),this._startPos=_r(this._element),this._parentScale=ar(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&&(Q=oe,O=ue);O>u&&(i[Q]=1,ma(t,i,u,A,Q),ma(t,i,u,Q,E))}function pd(t,i){for(var u=[t[0]],A=1,E=0,O=t.length;Ai&&(u.push(t[A]),E=A);return Ei.max.x&&(u|=2),t.yi.max.y&&(u|=8),u}function md(t,i){var u=i.x-t.x,A=i.y-t.y;return u*u+A*A}function ai(t,i,u,A){var E=i.x,O=i.y,Q=u.x-E,oe=u.y-O,ue=Q*Q+oe*oe,ve;return ue>0&&(ve=((t.x-E)*Q+(t.y-O)*oe)/ue,ve>1?(E=u.x,O=u.y):ve>0&&(E+=Q*ve,O+=oe*ve)),Q=t.x-E,oe=t.y-O,A?Q*Q+oe*oe:new G(E,O)}function On(t){return!S(t[0])||typeof t[0][0]!="object"&&typeof t[0][0]<"u"}function Bl(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),On(t)}function Pl(t,i){var u,A,E,O,Q,oe,ue,ve;if(!t||t.length===0)throw new Error("latlngs not passed");On(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=pa(t));var on=t.length,Jt=[];for(u=0;uA){ue=(O-A)/E,ve=[oe.x-ue*(oe.x-Q.x),oe.y-ue*(oe.y-Q.y)];break}var bn=i.unproject(q(ve));return fe([bn.lat+Pe.lat,bn.lng+Pe.lng])}var Tl={__proto__:null,simplify:ds,pointToSegmentDistance:kl,closestPointOnSegment:fd,clipSegment:Sl,_getEdgeIntersection:fs,_getBitCode:si,_sqClosestPointOnSegment:ai,isFlat:On,_flat:Bl,polylineCenter:Pl},Aa={project:function(t){return new G(t.lng,t.lat)},unproject:function(t){return new de(t.y,t.x)},bounds:new R([-180,-90],[180,90])},xa={R:6378137,R_MINOR:6356752314245179e-9,bounds:new R([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(t){var i=Math.PI/180,u=this.R,A=t.lat*i,E=this.R_MINOR/u,O=Math.sqrt(1-E*E),Q=O*Math.sin(A),oe=Math.tan(Math.PI/4-A/2)/Math.pow((1-Q)/(1+Q),O/2);return A=-u*Math.log(Math.max(oe,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,E=Math.sqrt(1-A*A),O=Math.exp(-t.y/u),Q=Math.PI/2-2*Math.atan(O),oe=0,ue=.1,ve;oe<15&&Math.abs(ue)>1e-7;oe++)ve=E*Math.sin(Q),ve=Math.pow((1-ve)/(1+ve),E/2),ue=Math.PI/2-2*Math.atan(O*ve)-Q,Q+=ue;return new de(Q*i,t.x*i/u)}},gd={__proto__:null,LonLat:Aa,Mercator:xa,SphericalMercator:$e},Ad=d({},Ae,{code:"EPSG:3395",projection:xa,transformation:(function(){var t=.5/(Math.PI*xa.R);return ft(t,.5,-t,.5)})()}),Dl=d({},Ae,{code:"EPSG:4326",projection:Aa,transformation:ft(1/180,1,-1/180,.5)}),xd=d({},ke,{projection:Aa,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=Ae,ke.EPSG3395=Ad,ke.EPSG3857=Be,ke.EPSG900913=Ze,ke.EPSG4326=Dl,ke.Simple=xd;var Jn=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[g(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[g(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})}}});ct.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=g(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=g(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 g(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?S(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 de&&i[0].equals(i[u-1])&&i.pop(),i},_setLatLngs:function(t){Rn.prototype._setLatLngs.call(this,t),On(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return On(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 R(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,E=this._rings.length,O;At.y!=E.y>t.y&&t.x<(E.x-A.x)*(t.y-A.y)/(E.y-A.y)+A.x&&(i=!i);return i||Rn.prototype._containsPoint.call(this,t,!0)}});function _d(t,i){return new Er(t,i)}var ur=br.extend({initialize:function(t,i){C(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i=S(t)?t:t.features,u,A,E;if(i){for(u=0,A=i.length;u0&&E.push(E[0].slice()),E}function ji(t,i){return t.feature?d({},t.feature,{geometry:i}):vs(i)}function vs(t){return t.type==="Feature"||t.type==="FeatureCollection"?t:{type:"Feature",properties:{},geometry:t}}var ya={toGeoJSON:function(t){return ji(this,{type:"Point",coordinates:As(this.getLatLng(),t)})}};Cr.include(ya),ps.include(ya),hs.include(ya),Rn.include({toGeoJSON:function(t){var i=!On(this._latlngs),u=xs(this._latlngs,i?1:0,!1,t);return ji(this,{type:(i?"Multi":"")+"LineString",coordinates:u})}}),Er.include({toGeoJSON:function(t){var i=!On(this._latlngs),u=i&&!On(this._latlngs[0]),A=xs(this._latlngs,u?2:i?1:0,!0,t);return i||(A=[A]),ji(this,{type:(u?"Multi":"")+"Polygon",coordinates:A})}}),jr.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(u){i.push(u.toGeoJSON(t).geometry.coordinates)}),ji(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(E){if(E.toGeoJSON){var O=E.toGeoJSON(t);if(u)A.push(O.geometry);else{var Q=vs(O);Q.type==="FeatureCollection"?A.push.apply(A,Q.features):A.push(Q)}}}),u?ji(this,{geometries:A,type:"GeometryCollection"}):{type:"FeatureCollection",features:A}}});function Ll(t,i){return new ur(t,i)}var er=Ll,Hr=Jn.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(){Ft(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&&Pi(this._image),this},bringToBack:function(){return this._map&&yr(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=y,i.onmousemove=y,i.onload=p(this.fire,this,"load"),i.onerror=p(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 R(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),u=i.getSize();Kt(t,i.min),t.style.width=u.x+"px",t.style.height=u.y+"px"},_updateOpacity:function(){_n(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()}}),Ml=function(t,i,u){return new Hr(t,i,u)},_a=Hr.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=y,i.onmousemove=y,i.onloadeddata=p(this.fire,this,"load"),t){for(var u=i.getElementsByTagName("source"),A=[],E=0;E0?A:[i.src];return}S(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;OE?(i.height=E+"px",et(t,O)):Tt(t,O),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),u=this._getAnchor();Kt(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(po(this._container,"marginBottom"),10)||0,u=this._container.offsetHeight+i,A=this._containerWidth,E=new G(this._containerLeft,-u-this._containerBottom);E._add(_r(this._container));var O=t.layerPointToContainerPoint(E),Q=q(this.options.autoPanPadding),oe=q(this.options.autoPanPaddingTopLeft||Q),ue=q(this.options.autoPanPaddingBottomRight||Q),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-oe.x<0&&(Pe=O.x-oe.x),O.y+u+ue.y>ve.y&&(qe=O.y+u-ve.y+ue.y),O.y-qe-oe.y<0&&(qe=O.y-oe.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])}}),zi=function(t,i){return new ys(t,i)};ct.mergeOptions({closePopupOnClick:!0}),ct.include({openPopup:function(t,i,u){return this._initOverlay(ys,t,i,u).openOn(this),this},closePopup:function(t){return t=arguments.length?t:this._popup,t&&t.close(),this}}),Jn.include({bindPopup:function(t,i){return this._popup=this._initOverlay(ys,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 br||(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)){Yn(t);var i=t.layer||t.target;if(this._popup._source===i&&!(i instanceof zr)){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 Hi=cr.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){cr.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){cr.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=cr.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-"+g(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i,u,A=this._map,E=this._container,O=A.latLngToContainerPoint(A.getCenter()),Q=A.layerPointToContainerPoint(t),oe=this.options.direction,ue=E.offsetWidth,ve=E.offsetHeight,Pe=q(this.options.offset),qe=this._getAnchor();oe==="top"?(i=ue/2,u=ve):oe==="bottom"?(i=ue/2,u=0):oe==="center"?(i=ue/2,u=ve/2):oe==="right"?(i=0,u=ve/2):oe==="left"?(i=ue,u=ve/2):Q.xthis.options.maxZoom||uA?this._retainParent(E,O,Q,A):!1)},_retainChildren:function(t,i,u,A){for(var E=2*t;E<2*t+2;E++)for(var O=2*i;O<2*i+2;O++){var Q=new G(E,O);Q.z=u+1;var oe=this._tileCoordsToKey(Q),ue=this._tiles[oe];if(ue&&ue.active){ue.retain=!0;continue}else ue&&ue.loaded&&(ue.retain=!0);u+1this.options.maxZoom||this.options.minZoom!==void 0&&E1){this._setView(t,u);return}for(var qe=E.min.y;qe<=E.max.y;qe++)for(var nt=E.min.x;nt<=E.max.x;nt++){var on=new G(nt,qe);if(on.z=this._tileZoom,!!this._isValidTile(on)){var Jt=this._tiles[this._tileCoordsToKey(on)];Jt?Jt.current=!0:Q.push(on)}}if(Q.sort(function(bn,qi){return bn.distanceTo(O)-qi.distanceTo(O)}),Q.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var Fn=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),E=A.add(u),O=i.unproject(A,t.z),Q=i.unproject(E,t.z);return[O,Q]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),u=new K(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&&(Ft(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=y,t.onmousemove=y,Re.ielt9&&this.options.opacity<1&&_n(t,this.options.opacity)},_addTile:function(t,i){var u=this._getTilePos(t),A=this._tileCoordsToKey(t),E=this.createTile(this._wrapCoords(t),p(this._tileReady,this,t));this._initTile(E),this.createTile.length<2&&V(p(this._tileReady,this,t,null,E)),Kt(E,u),this._tiles[A]={el:E,coords:t,current:!0},i.appendChild(E),this.fire("tileloadstart",{tile:E,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?(_n(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(p(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?v(t.x,this._wrapX):t.x,this._wrapY?v(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new R(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 Vi(t){return new Vr(t)}var Ur=Vr.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",p(this._tileOnLoad,this,i,u)),Ye(u,"error",p(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 P(this._url,d(i,this.options))},_tileOnLoad:function(t,i){Re.ielt9?setTimeout(p(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=y,i.onerror=y,!i.complete)){i.src=I;var u=this._tiles[t].coords;Ft(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),Vr.prototype._removeTile.call(this,t)},_tileReady:function(t,i,u){if(!(!this._map||u&&u.getAttribute("src")===I))return Vr.prototype._tileReady.call(this,t,i,u)}});function Ca(t,i){return new Ur(t,i)}var Eo=Ur.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=d({},this.defaultWmsParams);for(var A in i)A in this.options||(u[A]=i[A]);i=C(this,i);var E=i.detectRetina&&Re.retina?2:1,O=this.getTileSize();u.width=O.x*E,u.height=O.y*E,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,Ur.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])),E=A.min,O=A.max,Q=(this._wmsVersion>=1.3&&this._crs===Dl?[E.y,E.x,O.y,O.x]:[E.x,E.y,O.x,O.y]).join(","),oe=Ur.prototype.getTileUrl.call(this,t);return oe+k(this.wmsParams,oe,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+Q},setParams:function(t,i){return d(this.wmsParams,t),i||this.redraw(),this}});function jl(t,i){return new Eo(t,i)}Ur.WMS=Eo,Ca.wms=jl;var dr=Jn.extend({options:{padding:.1},initialize:function(t){C(this,t),g(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),E=this._map.project(this._center,i),O=A.multiplyBy(-u).add(E).subtract(this._map._getNewPixelOrigin(t,i));Re.any3d?Qn(this._container,O,u):Kt(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 R(u,u.add(i.multiplyBy(1+t*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),Ea=dr.extend({options:{tolerance:0},getEvents:function(){var t=dr.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){dr.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,Ft(this._container),kt(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)){dr.prototype._update.call(this);var t=this._bounds,i=this._container,u=t.getSize(),A=Re.retina?2:1;Kt(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(){dr.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[g(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[g(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,E;for(E=0;E')}}catch{}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}})(),zl={_initContainer:function(){this._container=tt("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(dr.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=Ui("shape");et(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=Ui("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[g(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;Ft(i),t.removeInteractiveTarget(i),delete this._layers[g(t)]},_updateStyle:function(t){var i=t._stroke,u=t._fill,A=t.options,E=t._container;E.stroked=!!A.stroke,E.filled=!!A.fill,A.stroke?(i||(i=t._stroke=Ui("stroke")),E.appendChild(i),i.weight=A.weight+"px",i.color=A.color,i.opacity=A.opacity,A.dashArray?i.dashStyle=S(A.dashArray)?A.dashArray.join(" "):A.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=A.lineCap.replace("butt","flat"),i.joinstyle=A.lineJoin):i&&(E.removeChild(i),t._stroke=null),A.fill?(u||(u=t._fill=Ui("fill")),E.appendChild(u),u.color=A.fillColor||A.color,u.opacity=A.fillOpacity):u&&(E.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){Pi(t._container)},_bringToBack:function(t){yr(t._container)}},tr=Re.vml?Ui:lt,ui=dr.extend({_initContainer:function(){this._container=tr("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=tr("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){Ft(this._container),kt(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){dr.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)),Kt(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=tr("path");t.options.className&&et(i,t.options.className),t.options.interactive&&et(i,"leaflet-interactive"),this._updateStyle(t),this._layers[g(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){Ft(t._path),t.removeInteractiveTarget(t._path),delete this._layers[g(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,Rt(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,E="a"+u+","+A+" 0 1,0 ",O=t._empty()?"M0 0":"M"+(i.x-u)+","+i.y+E+u*2+",0 "+E+-u*2+",0 ";this._setPath(t,O)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){Pi(t._path)},_bringToBack:function(t){yr(t._path)}});Re.vml&&ui.include(zl);function ws(t){return Re.svg||Re.vml?new ui(t):null}ct.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&&ka(t)||ws(t)}});var Hl=Er.extend({initialize:function(t,i){Er.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 wd(t,i){return new Hl(t,i)}ui.create=tr,ui.pointsToPath=Rt,ur.geometryToLayer=Oi,ur.coordsToLatLng=gs,ur.coordsToLatLngs=bo,ur.latLngToCoords=As,ur.latLngsToCoords=xs,ur.getFeature=ji,ur.asFeature=vs,ct.mergeOptions({boxZoom:!0});var Zi=In.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(){kt(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){Ft(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(),is(),this._startPoint=this._map.mouseEventToContainerPoint(t),Ye(document,{contextmenu:Yn,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 R(this._point,this._startPoint),u=i.getSize();Kt(this._box,i.min),this._box.style.width=u.x+"px",this._box.style.height=u.y+"px"},_finish:function(){this._moved&&(Ft(this._box),Tt(this._container,"leaflet-crosshair")),Ri(),os(),kt(document,{contextmenu:Yn,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(p(this._resetState,this),0);var i=new K(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())}});ct.addInitHook("addHandler","boxZoom",Zi),ct.mergeOptions({doubleClickZoom:!0});var Vl=In.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,E=t.originalEvent.shiftKey?u-A:u+A;i.options.doubleClickZoom==="center"?i.setZoom(E):i.setZoomAround(t.containerPoint,E)}});ct.addInitHook("addHandler","doubleClickZoom",Vl),ct.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Sa=In.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Xn(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(){Tt(this._map._container,"leaflet-grab"),Tt(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,E=(A-i+u)%t+i-u,O=(A+i+u)%t-i-u,Q=Math.abs(E+u)0?O:-O))-i;this._delta=0,this._startTime=null,Q&&(t.options.scrollWheelZoom==="center"?t.setZoom(i+Q):t.setZoomAround(this._lastMousePos,i+Q))}});ct.addInitHook("addHandler","scrollWheelZoom",St);var Pa=600;ct.mergeOptions({tapHold:Re.touchNative&&Re.safari&&Re.mobile,tapTolerance:15});var ko=In.extend({addHooks:function(){Ye(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){kt(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(p(function(){this._cancel(),this._isTapValid()&&(Ye(document,"touchend",Ht),Ye(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",i))},this),Pa),Ye(document,"touchend touchcancel contextmenu",this._cancel,this),Ye(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function t(){kt(document,"touchend",Ht),kt(document,"touchend touchcancel",t)},_cancel:function(){clearTimeout(this._holdTimeout),kt(document,"touchend touchcancel contextmenu",this._cancel,this),kt(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)}});ct.addInitHook("addHandler","tapHold",ko),ct.mergeOptions({touchZoom:Re.touch,bounceAtZoomLimits:!0});var Wi=In.extend({addHooks:function(){et(this._map._container,"leaflet-touch-zoom"),Ye(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){Tt(this._map._container,"leaflet-touch-zoom"),kt(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),Ht(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]),E=u.distanceTo(A)/this._startDist;if(this._zoom=i.getScaleZoom(E,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&E>1)&&(this._zoom=i._limitZoom(this._zoom)),i.options.touchZoom==="center"){if(this._center=this._startLatLng,E===1)return}else{var O=u._add(A)._divideBy(2)._subtract(this._centerPoint);if(E===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 Q=p(i._move,i,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=V(Q,this,!0),Ht(t)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,ne(this._animRequest),kt(document,"touchmove",this._onTouchMove,this),kt(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))}});ct.addInitHook("addHandler","touchZoom",Wi),ct.BoxZoom=Zi,ct.DoubleClickZoom=Vl,ct.Drag=Sa,ct.Keyboard=Ba,ct.ScrollWheelZoom=St,ct.TapHold=ko,ct.TouchZoom=Wi,o.Bounds=R,o.Browser=Re,o.CRS=ke,o.Canvas=Ea,o.Circle=ps,o.CircleMarker=hs,o.Class=ie,o.Control=Dn,o.DivIcon=_s,o.DivOverlay=cr,o.DomEvent=ls,o.DomUtil=Ao,o.Draggable=Xn,o.Evented=pe,o.FeatureGroup=br,o.GeoJSON=ur,o.GridLayer=Vr,o.Handler=In,o.Icon=li,o.ImageOverlay=Hr,o.LatLng=de,o.LatLngBounds=K,o.Layer=Jn,o.LayerGroup=jr,o.LineUtil=Tl,o.Map=ct,o.Marker=Cr,o.Mixin=fa,o.Path=zr,o.Point=G,o.PolyUtil=dd,o.Polygon=Er,o.Polyline=Rn,o.Popup=ys,o.PosAnimation=us,o.Projection=gd,o.Rectangle=Hl,o.Renderer=dr,o.SVG=ui,o.SVGOverlay=wa,o.TileLayer=Ur,o.Tooltip=Hi,o.Transformation=bt,o.Util=J,o.VideoOverlay=_a,o.bind=p,o.bounds=U,o.canvas=ka,o.circle=wo,o.circleMarker=Nl,o.control=Or,o.divIcon=Ol,o.extend=d,o.featureGroup=Rl,o.geoJSON=Ll,o.geoJson=er,o.gridLayer=Vi,o.icon=Fl,o.imageOverlay=Ml,o.latLng=fe,o.latLngBounds=$,o.layerGroup=_o,o.map=Ir,o.marker=vd,o.point=q,o.polygon=_d,o.polyline=yd,o.popup=zi,o.rectangle=wd,o.setOptions=C,o.stamp=g,o.svg=ws,o.svgOverlay=ba,o.tileLayer=Ca,o.tooltip=Co,o.transformation=ft,o.version=l,o.videoOverlay=Il;var Ul=window.L;o.noConflict=function(){return window.L=Ul,this},window.L=o}))})(sl,sl.exports)),sl.exports}var td=J2();function N0(r,a,o){return Object.freeze({instance:r,context:a,container:o})}function L0(r,a){return a==null?function(l,d){const f=F.useRef();return f.current||(f.current=r(l,d)),f}:function(l,d){const f=F.useRef();f.current||(f.current=r(l,d));const p=F.useRef(l),{instance:h}=f.current;return F.useEffect(function(){p.current!==l&&(a(h,l,p.current),p.current=l)},[h,l,d]),f}}function wx(r,a){F.useEffect(function(){return(a.layerContainer??a.map).addLayer(r.instance),function(){var f;(f=a.layerContainer)==null||f.removeLayer(r.instance),a.map.removeLayer(r.instance)}},[a,r])}function eb(r){return function(o){const l=Jc(),d=r(ed(o,l),l);return vx(l.map,o.attribution),F0(d.current,o.eventHandlers),wx(d.current,l),d}}function tb(r,a){const o=F.useRef();F.useEffect(function(){if(a.pathOptions!==o.current){const d=a.pathOptions??{};r.instance.setStyle(d),o.current=d}},[r,a])}function nb(r){return function(o){const l=Jc(),d=r(ed(o,l),l);return F0(d.current,o.eventHandlers),wx(d.current,l),tb(d.current,o),d}}function rb(r,a){const o=L0(r),l=Y2(o,a);return Q2(l)}function ib(r,a){const o=L0(r,a),l=nb(o);return K2(l)}function ob(r,a){const o=L0(r,a),l=eb(o);return $2(l)}function sb(r,a,o){const{opacity:l,zIndex:d}=a;l!=null&&l!==o.opacity&&r.setOpacity(l),d!=null&&d!==o.zIndex&&r.setZIndex(d)}function ab(){return Jc().map}const lb=ib(function({center:a,children:o,...l},d){const f=new td.CircleMarker(a,l);return N0(f,G2(d,{overlayContainer:f}))},Z2);function a0(){return a0=Object.assign||function(r){for(var a=1;a(B==null?void 0:B.map)??null,[B]);const C=F.useCallback(D=>{if(D!==null&&B===null){const P=new td.Map(D,v);o!=null&&m!=null?P.setView(o,m):r!=null&&P.fitBounds(r,a),g!=null&&P.whenReady(g),T(q2(P))}},[]);F.useEffect(()=>()=>{B==null||B.map.remove()},[B]);const k=B?Ce.createElement(_x,{value:B},l):p??null;return Ce.createElement("div",a0({},w,{ref:C}),k)}const cb=F.forwardRef(ub),db=rb(function(a,o){const l=new td.Popup(a,o.overlayContainer);return N0(l,o)},function(a,o,{position:l},d){F.useEffect(function(){const{instance:p}=a;function h(m){m.popup===p&&(p.update(),d(!0))}function g(m){m.popup===p&&d(!1)}return o.map.on({popupopen:h,popupclose:g}),o.overlayContainer==null?(l!=null&&p.setLatLng(l),p.openOn(o.map)):o.overlayContainer.bindPopup(p),function(){var v;o.map.off({popupopen:h,popupclose:g}),(v=o.overlayContainer)==null||v.unbindPopup(),o.map.removeLayer(p)}},[a,o,d,l])}),fb=ob(function({url:a,...o},l){const d=new td.TileLayer(a,ed(o,l));return N0(d,l)},function(a,o,l){sb(a,o,l);const{url:d}=o;d!=null&&d!==l.url&&a.setUrl(d)});function hb(r){const o=Date.now()/1e3-r,l=3600,d=86400;return o{if(a&&a.lat!=null&&a.lon!=null){o.setView([a.lat,a.lon],12),d(!0);return}if(l)return;const f=()=>{if(r.length===0){o.setView([20,0],2),d(!0);return}if(r.length===1){o.setView([r[0].lat,r[0].lon],10),d(!0);return}const p=r.map(h=>[h.lat,h.lon]);o.fitBounds(p,{padding:[50,50],maxZoom:12}),d(!0)};"geolocation"in navigator?navigator.geolocation.getCurrentPosition(p=>{o.setView([p.coords.latitude,p.coords.longitude],8),d(!0)},()=>{f()},{timeout:5e3,maximumAge:3e5}):f()},[o,r,l,a]),null}function mb({contacts:r,focusedKey:a}){const o=F.useMemo(()=>{const p=Date.now()/1e3-604800;return r.filter(h=>h.lat!=null&&h.lon!=null&&h.last_seen!=null&&h.last_seen>p)},[r]),l=F.useMemo(()=>a&&o.find(p=>x0(p.public_key,a))||null,[a,o]),d=F.useRef({}),f=F.useCallback((p,h)=>{d.current[p]=h},[]);return F.useEffect(()=>{if(l&&d.current[l.public_key]){const p=setTimeout(()=>{var h;(h=d.current[l.public_key])==null||h.openPopup()},100);return()=>clearTimeout(p)}},[l]),b.jsxs("div",{className:"flex flex-col h-full",children:[b.jsxs("div",{className:"px-4 py-2 bg-muted/50 text-xs text-muted-foreground flex items-center justify-between",children:[b.jsxs("span",{children:["Showing ",o.length," contact",o.length!==1?"s":""," heard in the last 7 days"]}),b.jsxs("div",{className:"flex items-center gap-3",children:[b.jsxs("span",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"w-3 h-3 rounded-full bg-[#22c55e]"})," <1h"]}),b.jsxs("span",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"w-3 h-3 rounded-full bg-[#4ade80]"})," <1d"]}),b.jsxs("span",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"w-3 h-3 rounded-full bg-[#a3e635]"})," <3d"]}),b.jsxs("span",{className:"flex items-center gap-1",children:[b.jsx("span",{className:"w-3 h-3 rounded-full bg-[#9ca3af]"})," older"]})]})]}),b.jsx("div",{className:"flex-1 relative",style:{zIndex:0},children:b.jsxs(cb,{center:[20,0],zoom:2,className:"h-full w-full",style:{background:"#1a1a2e"},children:[b.jsx(fb,{attribution:'© OpenStreetMap',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),b.jsx(pb,{contacts:o,focusedContact:l}),o.map(p=>{const h=p.type===Oc,g=hb(p.last_seen),m=p.name||p.public_key.slice(0,12);return b.jsx(lb,{ref:v=>f(p.public_key,v),center:[p.lat,p.lon],radius:h?10:7,pathOptions:{color:h?g:"#000",fillColor:g,fillOpacity:.8,weight:h?0:1},children:b.jsx(db,{children:b.jsxs("div",{className:"text-sm",children:[b.jsxs("div",{className:"font-medium flex items-center gap-1",children:[h&&b.jsx("span",{title:"Repeater",children:"🛜"}),m]}),b.jsxs("div",{className:"text-xs text-gray-500 mt-1",children:["Last heard: ",Qs(p.last_seen)]}),b.jsxs("div",{className:"text-xs text-gray-400 mt-1 font-mono",children:[p.lat.toFixed(5),", ",p.lon.toFixed(5)]})]})})},p.public_key)})]})})]})}const gb="modulepreload",Ab=function(r){return"/"+r},mm={},xb=function(a,o,l){let d=Promise.resolve();if(o&&o.length>0){let p=function(m){return Promise.all(m.map(v=>Promise.resolve(v).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),g=(h==null?void 0:h.nonce)||(h==null?void 0:h.getAttribute("nonce"));d=p(o.map(m=>{if(m=Ab(m),m in mm)return;mm[m]=!0;const v=m.endsWith(".css"),y=v?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${y}`))return;const w=document.createElement("link");if(w.rel=v?"stylesheet":gb,v||(w.as="script"),w.crossOrigin="",w.href=m,g&&w.setAttribute("nonce",g),document.head.appendChild(w),v)return new Promise((B,T)=>{w.addEventListener("load",B),w.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${m}`)))})}))}function f(p){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=p,window.dispatchEvent(h),!h.defaultPrevented)throw p}return d.then(p=>{for(const h of p||[])h.status==="rejected"&&f(h.reason);return a().catch(f)})};var wi={},Ga={},xn={},gm;function sr(){if(gm)return xn;gm=1,Object.defineProperty(xn,"__esModule",{value:!0}),xn.RequestType=xn.AdvertFlags=xn.DeviceRole=xn.PayloadVersion=xn.ControlSubType=xn.PayloadType=xn.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||(xn.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||(xn.PayloadType=a={}));var o;(function(h){h[h.NodeDiscoverReq=128]="NodeDiscoverReq",h[h.NodeDiscoverResp=144]="NodeDiscoverResp"})(o||(xn.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||(xn.PayloadVersion=l={}));var d;(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"})(d||(xn.DeviceRole=d={}));var f;(function(h){h[h.HasLocation=16]="HasLocation",h[h.HasFeature1=32]="HasFeature1",h[h.HasFeature2=64]="HasFeature2",h[h.HasName=128]="HasName"})(f||(xn.AdvertFlags=f={}));var p;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"})(p||(xn.RequestType=p={})),xn}var Ho={},Am;function vn(){if(Am)return Ho;Am=1,Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.byteToHex=r,Ho.bytesToHex=a,Ho.numberToHex=o,Ho.hexToBytes=l;function r(d){return d.toString(16).padStart(2,"0").toUpperCase()}function a(d){return Array.from(d).map(r).join("")}function o(d,f=8){return(d>>>0).toString(16).padStart(f,"0").toUpperCase()}function l(d){const f=d.replace(/\s/g,"").toUpperCase();if(!/^[0-9A-F]*$/.test(f))throw new Error("Invalid hex string: invalid characters at position 0");if(f.length%2!==0)throw new Error("Invalid hex string: odd length");const p=new Uint8Array(f.length/2);for(let h=0;h>>2]>>>24-H%4*8&255;S[I+H>>>2]|=j<<24-(I+H)%4*8}else for(var ee=0;ee>>2]=N[ee>>>2];return this.sigBytes+=z,this},clamp:function(){var P=this.words,S=this.sigBytes;P[S>>>2]&=4294967295<<32-S%4*8,P.length=l.ceil(S/4)},clone:function(){var P=v.clone.call(this);return P.words=this.words.slice(0),P},random:function(P){for(var S=[],N=0;N>>2]>>>24-z%4*8&255;I.push((H>>>4).toString(16)),I.push((H&15).toString(16))}return I.join("")},parse:function(P){for(var S=P.length,N=[],I=0;I>>3]|=parseInt(P.substr(I,2),16)<<24-I%8*4;return new y.init(N,S/2)}},T=w.Latin1={stringify:function(P){for(var S=P.words,N=P.sigBytes,I=[],z=0;z>>2]>>>24-z%4*8&255;I.push(String.fromCharCode(H))}return I.join("")},parse:function(P){for(var S=P.length,N=[],I=0;I>>2]|=(P.charCodeAt(I)&255)<<24-I%4*8;return new y.init(N,S)}},C=w.Utf8={stringify:function(P){try{return decodeURIComponent(escape(T.stringify(P)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(P){return T.parse(unescape(encodeURIComponent(P)))}},k=m.BufferedBlockAlgorithm=v.extend({reset:function(){this._data=new y.init,this._nDataBytes=0},_append:function(P){typeof P=="string"&&(P=C.parse(P)),this._data.concat(P),this._nDataBytes+=P.sigBytes},_process:function(P){var S,N=this._data,I=N.words,z=N.sigBytes,H=this.blockSize,j=H*4,ee=z/j;P?ee=l.ceil(ee):ee=l.max((ee|0)-this._minBufferSize,0);var Z=ee*H,V=l.min(Z*4,z);if(Z){for(var ne=0;ne>>2]|=g[y]<<24-y%4*8;p.call(this,v,m)}else p.apply(this,arguments)};h.prototype=f}})(),o.lib.WordArray})})(Ku)),Ku.exports}var Qu={exports:{}},Eb=Qu.exports,wm;function kb(){return wm||(wm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Eb,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=l.enc;p.Utf16=p.Utf16BE={stringify:function(g){for(var m=g.words,v=g.sigBytes,y=[],w=0;w>>2]>>>16-w%4*8&65535;y.push(String.fromCharCode(B))}return y.join("")},parse:function(g){for(var m=g.length,v=[],y=0;y>>1]|=g.charCodeAt(y)<<16-y%2*16;return f.create(v,m*2)}},p.Utf16LE={stringify:function(g){for(var m=g.words,v=g.sigBytes,y=[],w=0;w>>2]>>>16-w%4*8&65535);y.push(String.fromCharCode(B))}return y.join("")},parse:function(g){for(var m=g.length,v=[],y=0;y>>1]|=h(g.charCodeAt(y)<<16-y%2*16);return f.create(v,m*2)}};function h(g){return g<<8&4278255360|g>>>8&16711935}})(),o.enc.Utf16})})(Qu)),Qu.exports}var $u={exports:{}},Sb=$u.exports,bm;function $o(){return bm||(bm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Sb,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=l.enc;p.Base64={stringify:function(g){var m=g.words,v=g.sigBytes,y=this._map;g.clamp();for(var w=[],B=0;B>>2]>>>24-B%4*8&255,C=m[B+1>>>2]>>>24-(B+1)%4*8&255,k=m[B+2>>>2]>>>24-(B+2)%4*8&255,D=T<<16|C<<8|k,P=0;P<4&&B+P*.75>>6*(3-P)&63));var S=y.charAt(64);if(S)for(;w.length%4;)w.push(S);return w.join("")},parse:function(g){var m=g.length,v=this._map,y=this._reverseMap;if(!y){y=this._reverseMap=[];for(var w=0;w>>6-B%4*2,k=T|C;y[w>>>2]|=k<<24-w%4*8,w++}return f.create(y,w)}})(),o.enc.Base64})})($u)),$u.exports}var Yu={exports:{}},Bb=Yu.exports,Cm;function Pb(){return Cm||(Cm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Bb,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=l.enc;p.Base64url={stringify:function(g,m){m===void 0&&(m=!0);var v=g.words,y=g.sigBytes,w=m?this._safe_map:this._map;g.clamp();for(var B=[],T=0;T>>2]>>>24-T%4*8&255,k=v[T+1>>>2]>>>24-(T+1)%4*8&255,D=v[T+2>>>2]>>>24-(T+2)%4*8&255,P=C<<16|k<<8|D,S=0;S<4&&T+S*.75>>6*(3-S)&63));var N=w.charAt(64);if(N)for(;B.length%4;)B.push(N);return B.join("")},parse:function(g,m){m===void 0&&(m=!0);var v=g.length,y=m?this._safe_map:this._map,w=this._reverseMap;if(!w){w=this._reverseMap=[];for(var B=0;B>>6-B%4*2,k=T|C;y[w>>>2]|=k<<24-w%4*8,w++}return f.create(y,w)}})(),o.enc.Base64url})})(Yu)),Yu.exports}var Xu={exports:{}},Tb=Xu.exports,Em;function Yo(){return Em||(Em=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Tb,function(o){return(function(l){var d=o,f=d.lib,p=f.WordArray,h=f.Hasher,g=d.algo,m=[];(function(){for(var C=0;C<64;C++)m[C]=l.abs(l.sin(C+1))*4294967296|0})();var v=g.MD5=h.extend({_doReset:function(){this._hash=new p.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(C,k){for(var D=0;D<16;D++){var P=k+D,S=C[P];C[P]=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360}var N=this._hash.words,I=C[k+0],z=C[k+1],H=C[k+2],j=C[k+3],ee=C[k+4],Z=C[k+5],V=C[k+6],ne=C[k+7],J=C[k+8],ie=C[k+9],he=C[k+10],ae=C[k+11],pe=C[k+12],G=C[k+13],Y=C[k+14],q=C[k+15],R=N[0],U=N[1],K=N[2],$=N[3];R=y(R,U,K,$,I,7,m[0]),$=y($,R,U,K,z,12,m[1]),K=y(K,$,R,U,H,17,m[2]),U=y(U,K,$,R,j,22,m[3]),R=y(R,U,K,$,ee,7,m[4]),$=y($,R,U,K,Z,12,m[5]),K=y(K,$,R,U,V,17,m[6]),U=y(U,K,$,R,ne,22,m[7]),R=y(R,U,K,$,J,7,m[8]),$=y($,R,U,K,ie,12,m[9]),K=y(K,$,R,U,he,17,m[10]),U=y(U,K,$,R,ae,22,m[11]),R=y(R,U,K,$,pe,7,m[12]),$=y($,R,U,K,G,12,m[13]),K=y(K,$,R,U,Y,17,m[14]),U=y(U,K,$,R,q,22,m[15]),R=w(R,U,K,$,z,5,m[16]),$=w($,R,U,K,V,9,m[17]),K=w(K,$,R,U,ae,14,m[18]),U=w(U,K,$,R,I,20,m[19]),R=w(R,U,K,$,Z,5,m[20]),$=w($,R,U,K,he,9,m[21]),K=w(K,$,R,U,q,14,m[22]),U=w(U,K,$,R,ee,20,m[23]),R=w(R,U,K,$,ie,5,m[24]),$=w($,R,U,K,Y,9,m[25]),K=w(K,$,R,U,j,14,m[26]),U=w(U,K,$,R,J,20,m[27]),R=w(R,U,K,$,G,5,m[28]),$=w($,R,U,K,H,9,m[29]),K=w(K,$,R,U,ne,14,m[30]),U=w(U,K,$,R,pe,20,m[31]),R=B(R,U,K,$,Z,4,m[32]),$=B($,R,U,K,J,11,m[33]),K=B(K,$,R,U,ae,16,m[34]),U=B(U,K,$,R,Y,23,m[35]),R=B(R,U,K,$,z,4,m[36]),$=B($,R,U,K,ee,11,m[37]),K=B(K,$,R,U,ne,16,m[38]),U=B(U,K,$,R,he,23,m[39]),R=B(R,U,K,$,G,4,m[40]),$=B($,R,U,K,I,11,m[41]),K=B(K,$,R,U,j,16,m[42]),U=B(U,K,$,R,V,23,m[43]),R=B(R,U,K,$,ie,4,m[44]),$=B($,R,U,K,pe,11,m[45]),K=B(K,$,R,U,q,16,m[46]),U=B(U,K,$,R,H,23,m[47]),R=T(R,U,K,$,I,6,m[48]),$=T($,R,U,K,ne,10,m[49]),K=T(K,$,R,U,Y,15,m[50]),U=T(U,K,$,R,Z,21,m[51]),R=T(R,U,K,$,pe,6,m[52]),$=T($,R,U,K,j,10,m[53]),K=T(K,$,R,U,he,15,m[54]),U=T(U,K,$,R,z,21,m[55]),R=T(R,U,K,$,J,6,m[56]),$=T($,R,U,K,q,10,m[57]),K=T(K,$,R,U,V,15,m[58]),U=T(U,K,$,R,G,21,m[59]),R=T(R,U,K,$,ee,6,m[60]),$=T($,R,U,K,ae,10,m[61]),K=T(K,$,R,U,H,15,m[62]),U=T(U,K,$,R,ie,21,m[63]),N[0]=N[0]+R|0,N[1]=N[1]+U|0,N[2]=N[2]+K|0,N[3]=N[3]+$|0},_doFinalize:function(){var C=this._data,k=C.words,D=this._nDataBytes*8,P=C.sigBytes*8;k[P>>>5]|=128<<24-P%32;var S=l.floor(D/4294967296),N=D;k[(P+64>>>9<<4)+15]=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360,k[(P+64>>>9<<4)+14]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360,C.sigBytes=(k.length+1)*4,this._process();for(var I=this._hash,z=I.words,H=0;H<4;H++){var j=z[H];z[H]=(j<<8|j>>>24)&16711935|(j<<24|j>>>8)&4278255360}return I},clone:function(){var C=h.clone.call(this);return C._hash=this._hash.clone(),C}});function y(C,k,D,P,S,N,I){var z=C+(k&D|~k&P)+S+I;return(z<>>32-N)+k}function w(C,k,D,P,S,N,I){var z=C+(k&P|D&~P)+S+I;return(z<>>32-N)+k}function B(C,k,D,P,S,N,I){var z=C+(k^D^P)+S+I;return(z<>>32-N)+k}function T(C,k,D,P,S,N,I){var z=C+(D^(k|~P))+S+I;return(z<>>32-N)+k}d.MD5=h._createHelper(v),d.HmacMD5=h._createHmacHelper(v)})(Math),o.MD5})})(Xu)),Xu.exports}var Ju={exports:{}},Db=Ju.exports,km;function bx(){return km||(km=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Db,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=d.Hasher,h=l.algo,g=[],m=h.SHA1=p.extend({_doReset:function(){this._hash=new f.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(v,y){for(var w=this._hash.words,B=w[0],T=w[1],C=w[2],k=w[3],D=w[4],P=0;P<80;P++){if(P<16)g[P]=v[y+P]|0;else{var S=g[P-3]^g[P-8]^g[P-14]^g[P-16];g[P]=S<<1|S>>>31}var N=(B<<5|B>>>27)+D+g[P];P<20?N+=(T&C|~T&k)+1518500249:P<40?N+=(T^C^k)+1859775393:P<60?N+=(T&C|T&k|C&k)-1894007588:N+=(T^C^k)-899497514,D=k,k=C,C=T<<30|T>>>2,T=B,B=N}w[0]=w[0]+B|0,w[1]=w[1]+T|0,w[2]=w[2]+C|0,w[3]=w[3]+k|0,w[4]=w[4]+D|0},_doFinalize:function(){var v=this._data,y=v.words,w=this._nDataBytes*8,B=v.sigBytes*8;return y[B>>>5]|=128<<24-B%32,y[(B+64>>>9<<4)+14]=Math.floor(w/4294967296),y[(B+64>>>9<<4)+15]=w,v.sigBytes=y.length*4,this._process(),this._hash},clone:function(){var v=p.clone.call(this);return v._hash=this._hash.clone(),v}});l.SHA1=p._createHelper(m),l.HmacSHA1=p._createHmacHelper(m)})(),o.SHA1})})(Ju)),Ju.exports}var ec={exports:{}},Rb=ec.exports,Sm;function ml(){return Sm||(Sm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(Rb,function(o){return(function(l){var d=o,f=d.lib,p=f.WordArray,h=f.Hasher,g=d.algo,m=[],v=[];(function(){function B(D){for(var P=l.sqrt(D),S=2;S<=P;S++)if(!(D%S))return!1;return!0}function T(D){return(D-(D|0))*4294967296|0}for(var C=2,k=0;k<64;)B(C)&&(k<8&&(m[k]=T(l.pow(C,1/2))),v[k]=T(l.pow(C,1/3)),k++),C++})();var y=[],w=g.SHA256=h.extend({_doReset:function(){this._hash=new p.init(m.slice(0))},_doProcessBlock:function(B,T){for(var C=this._hash.words,k=C[0],D=C[1],P=C[2],S=C[3],N=C[4],I=C[5],z=C[6],H=C[7],j=0;j<64;j++){if(j<16)y[j]=B[T+j]|0;else{var ee=y[j-15],Z=(ee<<25|ee>>>7)^(ee<<14|ee>>>18)^ee>>>3,V=y[j-2],ne=(V<<15|V>>>17)^(V<<13|V>>>19)^V>>>10;y[j]=Z+y[j-7]+ne+y[j-16]}var J=N&I^~N&z,ie=k&D^k&P^D&P,he=(k<<30|k>>>2)^(k<<19|k>>>13)^(k<<10|k>>>22),ae=(N<<26|N>>>6)^(N<<21|N>>>11)^(N<<7|N>>>25),pe=H+ae+J+v[j]+y[j],G=he+ie;H=z,z=I,I=N,N=S+pe|0,S=P,P=D,D=k,k=pe+G|0}C[0]=C[0]+k|0,C[1]=C[1]+D|0,C[2]=C[2]+P|0,C[3]=C[3]+S|0,C[4]=C[4]+N|0,C[5]=C[5]+I|0,C[6]=C[6]+z|0,C[7]=C[7]+H|0},_doFinalize:function(){var B=this._data,T=B.words,C=this._nDataBytes*8,k=B.sigBytes*8;return T[k>>>5]|=128<<24-k%32,T[(k+64>>>9<<4)+14]=l.floor(C/4294967296),T[(k+64>>>9<<4)+15]=C,B.sigBytes=T.length*4,this._process(),this._hash},clone:function(){var B=h.clone.call(this);return B._hash=this._hash.clone(),B}});d.SHA256=h._createHelper(w),d.HmacSHA256=h._createHmacHelper(w)})(Math),o.SHA256})})(ec)),ec.exports}var tc={exports:{}},Fb=tc.exports,Bm;function Nb(){return Bm||(Bm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),ml())})(Fb,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=l.algo,h=p.SHA256,g=p.SHA224=h.extend({_doReset:function(){this._hash=new f.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var m=h._doFinalize.call(this);return m.sigBytes-=4,m}});l.SHA224=h._createHelper(g),l.HmacSHA224=h._createHmacHelper(g)})(),o.SHA224})})(tc)),tc.exports}var nc={exports:{}},Lb=nc.exports,Pm;function Cx(){return Pm||(Pm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),nd())})(Lb,function(o){return(function(){var l=o,d=l.lib,f=d.Hasher,p=l.x64,h=p.Word,g=p.WordArray,m=l.algo;function v(){return h.create.apply(h,arguments)}var y=[v(1116352408,3609767458),v(1899447441,602891725),v(3049323471,3964484399),v(3921009573,2173295548),v(961987163,4081628472),v(1508970993,3053834265),v(2453635748,2937671579),v(2870763221,3664609560),v(3624381080,2734883394),v(310598401,1164996542),v(607225278,1323610764),v(1426881987,3590304994),v(1925078388,4068182383),v(2162078206,991336113),v(2614888103,633803317),v(3248222580,3479774868),v(3835390401,2666613458),v(4022224774,944711139),v(264347078,2341262773),v(604807628,2007800933),v(770255983,1495990901),v(1249150122,1856431235),v(1555081692,3175218132),v(1996064986,2198950837),v(2554220882,3999719339),v(2821834349,766784016),v(2952996808,2566594879),v(3210313671,3203337956),v(3336571891,1034457026),v(3584528711,2466948901),v(113926993,3758326383),v(338241895,168717936),v(666307205,1188179964),v(773529912,1546045734),v(1294757372,1522805485),v(1396182291,2643833823),v(1695183700,2343527390),v(1986661051,1014477480),v(2177026350,1206759142),v(2456956037,344077627),v(2730485921,1290863460),v(2820302411,3158454273),v(3259730800,3505952657),v(3345764771,106217008),v(3516065817,3606008344),v(3600352804,1432725776),v(4094571909,1467031594),v(275423344,851169720),v(430227734,3100823752),v(506948616,1363258195),v(659060556,3750685593),v(883997877,3785050280),v(958139571,3318307427),v(1322822218,3812723403),v(1537002063,2003034995),v(1747873779,3602036899),v(1955562222,1575990012),v(2024104815,1125592928),v(2227730452,2716904306),v(2361852424,442776044),v(2428436474,593698344),v(2756734187,3733110249),v(3204031479,2999351573),v(3329325298,3815920427),v(3391569614,3928383900),v(3515267271,566280711),v(3940187606,3454069534),v(4118630271,4000239992),v(116418474,1914138554),v(174292421,2731055270),v(289380356,3203993006),v(460393269,320620315),v(685471733,587496836),v(852142971,1086792851),v(1017036298,365543100),v(1126000580,2618297676),v(1288033470,3409855158),v(1501505948,4234509866),v(1607167915,987167468),v(1816402316,1246189591)],w=[];(function(){for(var T=0;T<80;T++)w[T]=v()})();var B=m.SHA512=f.extend({_doReset:function(){this._hash=new g.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(T,C){for(var k=this._hash.words,D=k[0],P=k[1],S=k[2],N=k[3],I=k[4],z=k[5],H=k[6],j=k[7],ee=D.high,Z=D.low,V=P.high,ne=P.low,J=S.high,ie=S.low,he=N.high,ae=N.low,pe=I.high,G=I.low,Y=z.high,q=z.low,R=H.high,U=H.low,K=j.high,$=j.low,de=ee,fe=Z,ke=V,Ae=ne,We=J,$e=ie,bt=he,ft=ae,Be=pe,Ze=G,lt=Y,Rt=q,vt=R,ot=U,Qe=K,Xe=$,xe=0;xe<80;xe++){var Te,pt,Zt=w[xe];if(xe<16)pt=Zt.high=T[C+xe*2]|0,Te=Zt.low=T[C+xe*2+1]|0;else{var tn=w[xe-15],jt=tn.high,nn=tn.low,mn=(jt>>>1|nn<<31)^(jt>>>8|nn<<24)^jt>>>7,Tn=(nn>>>1|jt<<31)^(nn>>>8|jt<<24)^(nn>>>7|jt<<25),Wt=w[xe-2],Pt=Wt.high,qt=Wt.low,qn=(Pt>>>19|qt<<13)^(Pt<<3|qt>>>29)^Pt>>>6,yn=(qt>>>19|Pt<<13)^(qt<<3|Pt>>>29)^(qt>>>6|Pt<<26),ge=w[xe-7],be=ge.high,De=ge.low,re=w[xe-16],me=re.high,Se=re.low;Te=Tn+De,pt=mn+be+(Te>>>0>>0?1:0),Te=Te+yn,pt=pt+qn+(Te>>>0>>0?1:0),Te=Te+Se,pt=pt+me+(Te>>>0>>0?1:0),Zt.high=pt,Zt.low=Te}var Ne=Be<^~Be&vt,Ve=Ze&Rt^~Ze&ot,$t=de&ke^de&We^ke&We,Ue=fe&Ae^fe&$e^Ae&$e,mt=(de>>>28|fe<<4)^(de<<30|fe>>>2)^(de<<25|fe>>>7),Bt=(fe>>>28|de<<4)^(fe<<30|de>>>2)^(fe<<25|de>>>7),Lt=(Be>>>14|Ze<<18)^(Be>>>18|Ze<<14)^(Be<<23|Ze>>>9),Mn=(Ze>>>14|Be<<18)^(Ze>>>18|Be<<14)^(Ze<<23|Be>>>9),it=y[xe],Et=it.high,Gn=it.low,gt=Xe+Mn,Mt=Qe+Lt+(gt>>>0>>0?1:0),gt=gt+Ve,Mt=Mt+Ne+(gt>>>0>>0?1:0),gt=gt+Gn,Mt=Mt+Et+(gt>>>0>>0?1:0),gt=gt+Te,Mt=Mt+pt+(gt>>>0>>0?1:0),Gt=Bt+Ue,Re=mt+$t+(Gt>>>0>>0?1:0);Qe=vt,Xe=ot,vt=lt,ot=Rt,lt=Be,Rt=Ze,Ze=ft+gt|0,Be=bt+Mt+(Ze>>>0>>0?1:0)|0,bt=We,ft=$e,We=ke,$e=Ae,ke=de,Ae=fe,fe=gt+Gt|0,de=Mt+Re+(fe>>>0>>0?1:0)|0}Z=D.low=Z+fe,D.high=ee+de+(Z>>>0>>0?1:0),ne=P.low=ne+Ae,P.high=V+ke+(ne>>>0>>0?1:0),ie=S.low=ie+$e,S.high=J+We+(ie>>>0<$e>>>0?1:0),ae=N.low=ae+ft,N.high=he+bt+(ae>>>0>>0?1:0),G=I.low=G+Ze,I.high=pe+Be+(G>>>0>>0?1:0),q=z.low=q+Rt,z.high=Y+lt+(q>>>0>>0?1:0),U=H.low=U+ot,H.high=R+vt+(U>>>0>>0?1:0),$=j.low=$+Xe,j.high=K+Qe+($>>>0>>0?1:0)},_doFinalize:function(){var T=this._data,C=T.words,k=this._nDataBytes*8,D=T.sigBytes*8;C[D>>>5]|=128<<24-D%32,C[(D+128>>>10<<5)+30]=Math.floor(k/4294967296),C[(D+128>>>10<<5)+31]=k,T.sigBytes=C.length*4,this._process();var P=this._hash.toX32();return P},clone:function(){var T=f.clone.call(this);return T._hash=this._hash.clone(),T},blockSize:1024/32});l.SHA512=f._createHelper(B),l.HmacSHA512=f._createHmacHelper(B)})(),o.SHA512})})(nc)),nc.exports}var rc={exports:{}},Mb=rc.exports,Tm;function Ib(){return Tm||(Tm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),nd(),Cx())})(Mb,function(o){return(function(){var l=o,d=l.x64,f=d.Word,p=d.WordArray,h=l.algo,g=h.SHA512,m=h.SHA384=g.extend({_doReset:function(){this._hash=new p.init([new f.init(3418070365,3238371032),new f.init(1654270250,914150663),new f.init(2438529370,812702999),new f.init(355462360,4144912697),new f.init(1731405415,4290775857),new f.init(2394180231,1750603025),new f.init(3675008525,1694076839),new f.init(1203062813,3204075428)])},_doFinalize:function(){var v=g._doFinalize.call(this);return v.sigBytes-=16,v}});l.SHA384=g._createHelper(m),l.HmacSHA384=g._createHmacHelper(m)})(),o.SHA384})})(rc)),rc.exports}var ic={exports:{}},Ob=ic.exports,Dm;function jb(){return Dm||(Dm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),nd())})(Ob,function(o){return(function(l){var d=o,f=d.lib,p=f.WordArray,h=f.Hasher,g=d.x64,m=g.Word,v=d.algo,y=[],w=[],B=[];(function(){for(var k=1,D=0,P=0;P<24;P++){y[k+5*D]=(P+1)*(P+2)/2%64;var S=D%5,N=(2*k+3*D)%5;k=S,D=N}for(var k=0;k<5;k++)for(var D=0;D<5;D++)w[k+5*D]=D+(2*k+3*D)%5*5;for(var I=1,z=0;z<24;z++){for(var H=0,j=0,ee=0;ee<7;ee++){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 H=P[N];H.high^=z,H.low^=I}for(var j=0;j<24;j++){for(var ee=0;ee<5;ee++){for(var Z=0,V=0,ne=0;ne<5;ne++){var H=P[ee+5*ne];Z^=H.high,V^=H.low}var J=T[ee];J.high=Z,J.low=V}for(var ee=0;ee<5;ee++)for(var ie=T[(ee+4)%5],he=T[(ee+1)%5],ae=he.high,pe=he.low,Z=ie.high^(ae<<1|pe>>>31),V=ie.low^(pe<<1|ae>>>31),ne=0;ne<5;ne++){var H=P[ee+5*ne];H.high^=Z,H.low^=V}for(var G=1;G<25;G++){var Z,V,H=P[G],Y=H.high,q=H.low,R=y[G];R<32?(Z=Y<>>32-R,V=q<>>32-R):(Z=q<>>64-R,V=Y<>>64-R);var U=T[w[G]];U.high=Z,U.low=V}var K=T[0],$=P[0];K.high=$.high,K.low=$.low;for(var ee=0;ee<5;ee++)for(var ne=0;ne<5;ne++){var G=ee+5*ne,H=P[G],de=T[G],fe=T[(ee+1)%5+5*ne],ke=T[(ee+2)%5+5*ne];H.high=de.high^~fe.high&ke.high,H.low=de.low^~fe.low&ke.low}var H=P[0],Ae=B[j];H.high^=Ae.high,H.low^=Ae.low}},_doFinalize:function(){var k=this._data,D=k.words;this._nDataBytes*8;var P=k.sigBytes*8,S=this.blockSize*32;D[P>>>5]|=1<<24-P%32,D[(l.ceil((P+1)/S)*S>>>5)-1]|=128,k.sigBytes=D.length*4,this._process();for(var N=this._state,I=this.cfg.outputLength/8,z=I/8,H=[],j=0;j>>24)&16711935|(Z<<24|Z>>>8)&4278255360,V=(V<<8|V>>>24)&16711935|(V<<24|V>>>8)&4278255360,H.push(V),H.push(Z)}return new p.init(H,I)},clone:function(){for(var k=h.clone.call(this),D=k._state=this._state.slice(0),P=0;P<25;P++)D[P]=D[P].clone();return k}});d.SHA3=h._createHelper(C),d.HmacSHA3=h._createHmacHelper(C)})(Math),o.SHA3})})(ic)),ic.exports}var oc={exports:{}},zb=oc.exports,Rm;function Hb(){return Rm||(Rm=1,(function(r,a){(function(o,l){r.exports=l(dt())})(zb,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: @@ -139,7 +139,7 @@ For more information, see https://radix-ui.com/primitives/docs/components/${a.do * Counter block mode compatible with Dr Brian Gladman fileenc.c * derived from CryptoJS.mode.CTR * Jan Hruby jhruby.web@gmail.com - */return o.mode.CTRGladman=(function(){var l=o.lib.BlockCipherMode.extend();function d(h){if((h>>24&255)===255){var g=h>>16&255,m=h>>8&255,v=h&255;g===255?(g=0,m===255?(m=0,v===255?v=0:++v):++m):++g,h=0,h+=g<<16,h+=m<<8,h+=v}else h+=1<<24;return h}function f(h){return(h[0]=d(h[0]))===0&&(h[1]=d(h[1])),h}var p=l.Encryptor=l.extend({processBlock:function(h,g){var m=this._cipher,v=m.blockSize,y=this._iv,w=this._counter;y&&(w=this._counter=y.slice(0),this._iv=void 0),f(w);var B=w.slice(0);m.encryptBlock(B,0);for(var T=0;T>>2]|=h<<24-g%4*8,l.sigBytes+=h},unpad:function(l){var d=l.words[l.sigBytes-1>>>2]&255;l.sigBytes-=d}},o.pad.Ansix923})})(mc)),mc.exports}var gc={exports:{}},oC=gc.exports,Um;function sC(){return Um||(Um=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(oC,function(o){return o.pad.Iso10126={pad:function(l,d){var f=d*4,p=f-l.sigBytes%f;l.concat(o.lib.WordArray.random(p-1)).concat(o.lib.WordArray.create([p<<24],1))},unpad:function(l){var d=l.words[l.sigBytes-1>>>2]&255;l.sigBytes-=d}},o.pad.Iso10126})})(gc)),gc.exports}var Ac={exports:{}},aC=Ac.exports,Zm;function lC(){return Zm||(Zm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(aC,function(o){return o.pad.Iso97971={pad:function(l,d){l.concat(o.lib.WordArray.create([2147483648],1)),o.pad.ZeroPadding.pad(l,d)},unpad:function(l){o.pad.ZeroPadding.unpad(l),l.sigBytes--}},o.pad.Iso97971})})(Ac)),Ac.exports}var xc={exports:{}},uC=xc.exports,Wm;function cC(){return Wm||(Wm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(uC,function(o){return o.pad.ZeroPadding={pad:function(l,d){var f=d*4;l.clamp(),l.sigBytes+=f-(l.sigBytes%f||f)},unpad:function(l){for(var d=l.words,f=l.sigBytes-1,f=l.sigBytes-1;f>=0;f--)if(d[f>>>2]>>>24-f%4*8&255){l.sigBytes=f+1;break}}},o.pad.ZeroPadding})})(xc)),xc.exports}var vc={exports:{}},dC=vc.exports,qm;function fC(){return qm||(qm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(dC,function(o){return o.pad.NoPadding={pad:function(){},unpad:function(){}},o.pad.NoPadding})})(vc)),vc.exports}var yc={exports:{}},hC=yc.exports,Gm;function pC(){return Gm||(Gm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(hC,function(o){return(function(l){var d=o,f=d.lib,p=f.CipherParams,h=d.enc,g=h.Hex,m=d.format;m.Hex={stringify:function(v){return v.ciphertext.toString(g)},parse:function(v){var y=g.parse(v);return p.create({ciphertext:y})}}})(),o.format.Hex})})(yc)),yc.exports}var _c={exports:{}},mC=_c.exports,Km;function gC(){return Km||(Km=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(mC,function(o){return(function(){var l=o,d=l.lib,f=d.BlockCipher,p=l.algo,h=[],g=[],m=[],v=[],y=[],w=[],B=[],T=[],C=[],k=[];(function(){for(var S=[],N=0;N<256;N++)N<128?S[N]=N<<1:S[N]=N<<1^283;for(var I=0,z=0,N=0;N<256;N++){var H=z^z<<1^z<<2^z<<3^z<<4;H=H>>>8^H&255^99,h[I]=H,g[H]=I;var j=S[I],ee=S[j],Z=S[ee],V=S[H]*257^H*16843008;m[I]=V<<24|V>>>8,v[I]=V<<16|V>>>16,y[I]=V<<8|V>>>24,w[I]=V;var V=Z*16843009^ee*65537^j*257^I*16843008;B[H]=V<<24|V>>>8,T[H]=V<<16|V>>>16,C[H]=V<<8|V>>>24,k[H]=V,I?(I=j^S[S[S[Z^j]]],z^=S[S[z]]):I=z=1}})();var D=[0,1,2,4,8,16,32,64,128,27,54],P=p.AES=f.extend({_doReset:function(){var S;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var N=this._keyPriorReset=this._key,I=N.words,z=N.sigBytes/4,H=this._nRounds=z+6,j=(H+1)*4,ee=this._keySchedule=[],Z=0;Z6&&Z%z==4&&(S=h[S>>>24]<<24|h[S>>>16&255]<<16|h[S>>>8&255]<<8|h[S&255]):(S=S<<8|S>>>24,S=h[S>>>24]<<24|h[S>>>16&255]<<16|h[S>>>8&255]<<8|h[S&255],S^=D[Z/z|0]<<24),ee[Z]=ee[Z-z]^S);for(var V=this._invKeySchedule=[],ne=0;ne>>24]]^T[h[S>>>16&255]]^C[h[S>>>8&255]]^k[h[S&255]]}}},encryptBlock:function(S,N){this._doCryptBlock(S,N,this._keySchedule,m,v,y,w,h)},decryptBlock:function(S,N){var I=S[N+1];S[N+1]=S[N+3],S[N+3]=I,this._doCryptBlock(S,N,this._invKeySchedule,B,T,C,k,g);var I=S[N+1];S[N+1]=S[N+3],S[N+3]=I},_doCryptBlock:function(S,N,I,z,H,j,ee,Z){for(var V=this._nRounds,ne=S[N]^I[0],J=S[N+1]^I[1],ie=S[N+2]^I[2],he=S[N+3]^I[3],ae=4,pe=1;pe>>24]^H[J>>>16&255]^j[ie>>>8&255]^ee[he&255]^I[ae++],Y=z[J>>>24]^H[ie>>>16&255]^j[he>>>8&255]^ee[ne&255]^I[ae++],q=z[ie>>>24]^H[he>>>16&255]^j[ne>>>8&255]^ee[J&255]^I[ae++],R=z[he>>>24]^H[ne>>>16&255]^j[J>>>8&255]^ee[ie&255]^I[ae++];ne=G,J=Y,ie=q,he=R}var G=(Z[ne>>>24]<<24|Z[J>>>16&255]<<16|Z[ie>>>8&255]<<8|Z[he&255])^I[ae++],Y=(Z[J>>>24]<<24|Z[ie>>>16&255]<<16|Z[he>>>8&255]<<8|Z[ne&255])^I[ae++],q=(Z[ie>>>24]<<24|Z[he>>>16&255]<<16|Z[ne>>>8&255]<<8|Z[J&255])^I[ae++],R=(Z[he>>>24]<<24|Z[ne>>>16&255]<<16|Z[J>>>8&255]<<8|Z[ie&255])^I[ae++];S[N]=G,S[N+1]=Y,S[N+2]=q,S[N+3]=R},keySize:256/32});l.AES=f._createHelper(P)})(),o.AES})})(_c)),_c.exports}var wc={exports:{}},AC=wc.exports,Qm;function xC(){return Qm||(Qm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(AC,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=d.BlockCipher,h=l.algo,g=[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],m=[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],v=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],y=[{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],B=h.DES=p.extend({_doReset:function(){for(var D=this._key,P=D.words,S=[],N=0;N<56;N++){var I=g[N]-1;S[N]=P[I>>>5]>>>31-I%32&1}for(var z=this._subKeys=[],H=0;H<16;H++){for(var j=z[H]=[],ee=v[H],N=0;N<24;N++)j[N/6|0]|=S[(m[N]-1+ee)%28]<<31-N%6,j[4+(N/6|0)]|=S[28+(m[N+24]-1+ee)%28]<<31-N%6;j[0]=j[0]<<1|j[0]>>>31;for(var N=1;N<7;N++)j[N]=j[N]>>>(N-1)*4+3;j[7]=j[7]<<5|j[7]>>>27}for(var Z=this._invSubKeys=[],N=0;N<16;N++)Z[N]=z[15-N]},encryptBlock:function(D,P){this._doCryptBlock(D,P,this._subKeys)},decryptBlock:function(D,P){this._doCryptBlock(D,P,this._invSubKeys)},_doCryptBlock:function(D,P,S){this._lBlock=D[P],this._rBlock=D[P+1],T.call(this,4,252645135),T.call(this,16,65535),C.call(this,2,858993459),C.call(this,8,16711935),T.call(this,1,1431655765);for(var N=0;N<16;N++){for(var I=S[N],z=this._lBlock,H=this._rBlock,j=0,ee=0;ee<8;ee++)j|=y[ee][((H^I[ee])&w[ee])>>>0];this._lBlock=H,this._rBlock=z^j}var Z=this._lBlock;this._lBlock=this._rBlock,this._rBlock=Z,T.call(this,1,1431655765),C.call(this,8,16711935),C.call(this,2,858993459),T.call(this,16,65535),T.call(this,4,252645135),D[P]=this._lBlock,D[P+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function T(D,P){var S=(this._lBlock>>>D^this._rBlock)&P;this._rBlock^=S,this._lBlock^=S<>>D^this._lBlock)&P;this._lBlock^=S,this._rBlock^=S<192.");var S=P.slice(0,2),N=P.length<4?P.slice(0,2):P.slice(2,4),I=P.length<6?P.slice(0,2):P.slice(4,6);this._des1=B.createEncryptor(f.create(S)),this._des2=B.createEncryptor(f.create(N)),this._des3=B.createEncryptor(f.create(I))},encryptBlock:function(D,P){this._des1.encryptBlock(D,P),this._des2.decryptBlock(D,P),this._des3.encryptBlock(D,P)},decryptBlock:function(D,P){this._des3.decryptBlock(D,P),this._des2.encryptBlock(D,P),this._des1.decryptBlock(D,P)},keySize:192/32,ivSize:64/32,blockSize:64/32});l.TripleDES=p._createHelper(k)})(),o.TripleDES})})(wc)),wc.exports}var bc={exports:{}},vC=bc.exports,$m;function yC(){return $m||($m=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(vC,function(o){return(function(){var l=o,d=l.lib,f=d.StreamCipher,p=l.algo,h=p.RC4=f.extend({_doReset:function(){for(var v=this._key,y=v.words,w=v.sigBytes,B=this._S=[],T=0;T<256;T++)B[T]=T;for(var T=0,C=0;T<256;T++){var k=T%w,D=y[k>>>2]>>>24-k%4*8&255;C=(C+B[T]+D)%256;var P=B[T];B[T]=B[C],B[C]=P}this._i=this._j=0},_doProcessBlock:function(v,y){v[y]^=g.call(this)},keySize:256/32,ivSize:0});function g(){for(var v=this._S,y=this._i,w=this._j,B=0,T=0;T<4;T++){y=(y+1)%256,w=(w+v[y])%256;var C=v[y];v[y]=v[w],v[w]=C,B|=v[(v[y]+v[w])%256]<<24-T*8}return this._i=y,this._j=w,B}l.RC4=f._createHelper(h);var m=p.RC4Drop=h.extend({cfg:h.cfg.extend({drop:192}),_doReset:function(){h._doReset.call(this);for(var v=this.cfg.drop;v>0;v--)g.call(this)}});l.RC4Drop=f._createHelper(m)})(),o.RC4})})(bc)),bc.exports}var Cc={exports:{}},_C=Cc.exports,Ym;function wC(){return Ym||(Ym=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(_C,function(o){return(function(){var l=o,d=l.lib,f=d.StreamCipher,p=l.algo,h=[],g=[],m=[],v=p.Rabbit=f.extend({_doReset:function(){for(var w=this._key.words,B=this.cfg.iv,T=0;T<4;T++)w[T]=(w[T]<<8|w[T]>>>24)&16711935|(w[T]<<24|w[T]>>>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],k=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 T=0;T<4;T++)y.call(this);for(var T=0;T<8;T++)k[T]^=C[T+4&7];if(B){var D=B.words,P=D[0],S=D[1],N=(P<<8|P>>>24)&16711935|(P<<24|P>>>8)&4278255360,I=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360,z=N>>>16|I&4294901760,H=I<<16|N&65535;k[0]^=N,k[1]^=z,k[2]^=I,k[3]^=H,k[4]^=N,k[5]^=z,k[6]^=I,k[7]^=H;for(var T=0;T<4;T++)y.call(this)}},_doProcessBlock:function(w,B){var T=this._X;y.call(this),h[0]=T[0]^T[5]>>>16^T[3]<<16,h[1]=T[2]^T[7]>>>16^T[5]<<16,h[2]=T[4]^T[1]>>>16^T[7]<<16,h[3]=T[6]^T[3]>>>16^T[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[B+C]^=h[C]},blockSize:128/32,ivSize:64/32});function y(){for(var w=this._X,B=this._C,T=0;T<8;T++)g[T]=B[T];B[0]=B[0]+1295307597+this._b|0,B[1]=B[1]+3545052371+(B[0]>>>0>>0?1:0)|0,B[2]=B[2]+886263092+(B[1]>>>0>>0?1:0)|0,B[3]=B[3]+1295307597+(B[2]>>>0>>0?1:0)|0,B[4]=B[4]+3545052371+(B[3]>>>0>>0?1:0)|0,B[5]=B[5]+886263092+(B[4]>>>0>>0?1:0)|0,B[6]=B[6]+1295307597+(B[5]>>>0>>0?1:0)|0,B[7]=B[7]+3545052371+(B[6]>>>0>>0?1:0)|0,this._b=B[7]>>>0>>0?1:0;for(var T=0;T<8;T++){var C=w[T]+B[T],k=C&65535,D=C>>>16,P=((k*k>>>17)+k*D>>>15)+D*D,S=((C&4294901760)*C|0)+((C&65535)*C|0);m[T]=P^S}w[0]=m[0]+(m[7]<<16|m[7]>>>16)+(m[6]<<16|m[6]>>>16)|0,w[1]=m[1]+(m[0]<<8|m[0]>>>24)+m[7]|0,w[2]=m[2]+(m[1]<<16|m[1]>>>16)+(m[0]<<16|m[0]>>>16)|0,w[3]=m[3]+(m[2]<<8|m[2]>>>24)+m[1]|0,w[4]=m[4]+(m[3]<<16|m[3]>>>16)+(m[2]<<16|m[2]>>>16)|0,w[5]=m[5]+(m[4]<<8|m[4]>>>24)+m[3]|0,w[6]=m[6]+(m[5]<<16|m[5]>>>16)+(m[4]<<16|m[4]>>>16)|0,w[7]=m[7]+(m[6]<<8|m[6]>>>24)+m[5]|0}l.Rabbit=f._createHelper(v)})(),o.Rabbit})})(Cc)),Cc.exports}var Ec={exports:{}},bC=Ec.exports,Xm;function CC(){return Xm||(Xm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(bC,function(o){return(function(){var l=o,d=l.lib,f=d.StreamCipher,p=l.algo,h=[],g=[],m=[],v=p.RabbitLegacy=f.extend({_doReset:function(){var w=this._key.words,B=this.cfg.iv,T=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 k=0;k<4;k++)y.call(this);for(var k=0;k<8;k++)C[k]^=T[k+4&7];if(B){var D=B.words,P=D[0],S=D[1],N=(P<<8|P>>>24)&16711935|(P<<24|P>>>8)&4278255360,I=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360,z=N>>>16|I&4294901760,H=I<<16|N&65535;C[0]^=N,C[1]^=z,C[2]^=I,C[3]^=H,C[4]^=N,C[5]^=z,C[6]^=I,C[7]^=H;for(var k=0;k<4;k++)y.call(this)}},_doProcessBlock:function(w,B){var T=this._X;y.call(this),h[0]=T[0]^T[5]>>>16^T[3]<<16,h[1]=T[2]^T[7]>>>16^T[5]<<16,h[2]=T[4]^T[1]>>>16^T[7]<<16,h[3]=T[6]^T[3]>>>16^T[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[B+C]^=h[C]},blockSize:128/32,ivSize:64/32});function y(){for(var w=this._X,B=this._C,T=0;T<8;T++)g[T]=B[T];B[0]=B[0]+1295307597+this._b|0,B[1]=B[1]+3545052371+(B[0]>>>0>>0?1:0)|0,B[2]=B[2]+886263092+(B[1]>>>0>>0?1:0)|0,B[3]=B[3]+1295307597+(B[2]>>>0>>0?1:0)|0,B[4]=B[4]+3545052371+(B[3]>>>0>>0?1:0)|0,B[5]=B[5]+886263092+(B[4]>>>0>>0?1:0)|0,B[6]=B[6]+1295307597+(B[5]>>>0>>0?1:0)|0,B[7]=B[7]+3545052371+(B[6]>>>0>>0?1:0)|0,this._b=B[7]>>>0>>0?1:0;for(var T=0;T<8;T++){var C=w[T]+B[T],k=C&65535,D=C>>>16,P=((k*k>>>17)+k*D>>>15)+D*D,S=((C&4294901760)*C|0)+((C&65535)*C|0);m[T]=P^S}w[0]=m[0]+(m[7]<<16|m[7]>>>16)+(m[6]<<16|m[6]>>>16)|0,w[1]=m[1]+(m[0]<<8|m[0]>>>24)+m[7]|0,w[2]=m[2]+(m[1]<<16|m[1]>>>16)+(m[0]<<16|m[0]>>>16)|0,w[3]=m[3]+(m[2]<<8|m[2]>>>24)+m[1]|0,w[4]=m[4]+(m[3]<<16|m[3]>>>16)+(m[2]<<16|m[2]>>>16)|0,w[5]=m[5]+(m[4]<<8|m[4]>>>24)+m[3]|0,w[6]=m[6]+(m[5]<<16|m[5]>>>16)+(m[4]<<16|m[4]>>>16)|0,w[7]=m[7]+(m[6]<<8|m[6]>>>24)+m[5]|0}l.RabbitLegacy=f._createHelper(v)})(),o.RabbitLegacy})})(Ec)),Ec.exports}var kc={exports:{}},EC=kc.exports,Jm;function kC(){return Jm||(Jm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(EC,function(o){return(function(){var l=o,d=l.lib,f=d.BlockCipher,p=l.algo;const h=16,g=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],m=[[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 v={pbox:[],sbox:[]};function y(k,D){let P=D>>24&255,S=D>>16&255,N=D>>8&255,I=D&255,z=k.sbox[0][P]+k.sbox[1][S];return z=z^k.sbox[2][N],z=z+k.sbox[3][I],z}function w(k,D,P){let S=D,N=P,I;for(let z=0;z1;--z)S=S^k.pbox[z],N=y(k,S)^N,I=S,S=N,N=I;return I=S,S=N,N=I,N=N^k.pbox[1],S=S^k.pbox[0],{left:S,right:N}}function T(k,D,P){for(let H=0;H<4;H++){k.sbox[H]=[];for(let j=0;j<256;j++)k.sbox[H][j]=m[H][j]}let S=0;for(let H=0;H=P&&(S=0);let N=0,I=0,z=0;for(let H=0;H=0&&(I=I.substring(0,z));const H=I.indexOf(": ");let j,ee;if(H>0&&H<50){const Z=I.substring(0,H);/[:\[\]]/.test(Z)?ee=I:(j=Z,ee=I.substring(H+2))}else ee=I;return{success:!0,data:{timestamp:D,flags:P,sender:j,message:ee}}}catch(h){return{success:!1,error:h instanceof Error?h.message:"Decryption failed"}}}static calculateChannelHash(d){const f=(0,r.SHA256)(r.enc.Hex.parse(d));return(0,a.hexToBytes)(f.toString(r.enc.Hex))[0].toString(16).padStart(2,"0")}}return Qa.ChannelCrypto=o,Qa}var ng;function kx(){if(ng)return Ka;ng=1,Object.defineProperty(Ka,"__esModule",{value:!0}),Ka.MeshCoreKeyStore=void 0;const r=M0();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(([d,f])=>{this.addNodeKey(d,f)})}addNodeKey(l,d){const f=l.toUpperCase();this.nodeKeys.set(f,d)}hasChannelKey(l){const d=l.toLowerCase();return this.channelHashToKeys.has(d)}hasNodeKey(l){const d=l.toUpperCase();return this.nodeKeys.has(d)}getChannelKeys(l){const d=l.toLowerCase();return this.channelHashToKeys.get(d)||[]}getNodeKey(l){const d=l.toUpperCase();return this.nodeKeys.get(d)}addChannelSecrets(l){for(const d of l){const f=r.ChannelCrypto.calculateChannelHash(d).toLowerCase();this.channelHashToKeys.has(f)||this.channelHashToKeys.set(f,[]),this.channelHashToKeys.get(f).push(d)}}}return Ka.MeshCoreKeyStore=a,Ka}var $a={},Dr={};/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Sx={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Bn,n:Sc,Gx:rg,Gy:ig,a:Gf,d:Kf}=Sx,BC=8n,ei=32,cl=64,or=(r="")=>{throw new Error(r)},PC=r=>typeof r=="bigint",Bx=r=>typeof r=="string",TC=r=>r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array",Qo=(r,a)=>!TC(r)||typeof a=="number"&&a>0&&r.length!==a?or("Uint8Array expected"):r,id=r=>new Uint8Array(r),I0=r=>Uint8Array.from(r),Px=(r,a)=>r.toString(16).padStart(a,"0"),O0=r=>Array.from(Qo(r)).map(a=>Px(a,2)).join(""),Ci={_0:48,_9:57,A:65,F:70,a:97,f:102},og=r=>{if(r>=Ci._0&&r<=Ci._9)return r-Ci._0;if(r>=Ci.A&&r<=Ci.F)return r-(Ci.A-10);if(r>=Ci.a&&r<=Ci.f)return r-(Ci.a-10)},j0=r=>{const a="hex invalid";if(!Bx(r))return or(a);const o=r.length,l=o/2;if(o%2)return or(a);const d=id(l);for(let f=0,p=0;fQo(Bx(r)?j0(r):I0(Qo(r)),a),Tx=()=>globalThis==null?void 0:globalThis.crypto,DC=()=>{var r;return((r=Tx())==null?void 0:r.subtle)??or("crypto.subtle must be defined")},dl=(...r)=>{const a=id(r.reduce((l,d)=>l+Qo(d).length,0));let o=0;return r.forEach(l=>{a.set(l,o),o+=l.length}),a},Dx=(r=ei)=>Tx().getRandomValues(id(r)),Lc=BigInt,Wo=(r,a,o,l="bad number: out of range")=>PC(r)&&a<=r&&r{const o=r%a;return o>=0n?o:a+o},Rx=r=>je(r,Sc),Fx=(r,a)=>{(r===0n||a<=0n)&&or("no inverse n="+r+" mod="+a);let o=je(r,a),l=a,d=0n,f=1n;for(;o!==0n;){const p=l/o,h=l%o,g=d-f*p;l=o,o=h,d=f,f=g}return l===1n?je(d,a):or("no inverse")},RC=r=>{const a=q0[r];return typeof a!="function"&&or("hashes."+r+" not set"),a},sg=r=>r instanceof Nr?r:or("Point expected"),u0=2n**256n,$r=class $r{constructor(a,o,l,d){Oo(this,"ex");Oo(this,"ey");Oo(this,"ez");Oo(this,"et");const f=u0;this.ex=Wo(a,0n,f),this.ey=Wo(o,0n,f),this.ez=Wo(l,1n,f),this.et=Wo(d,0n,f),Object.freeze(this)}static fromAffine(a){return new $r(a.x,a.y,1n,je(a.x*a.y))}static fromBytes(a,o=!1){const l=Kf,d=I0(Qo(a,ei)),f=a[31];d[31]=f&-129;const p=z0(d);Wo(p,0n,o?u0:Bn);const g=je(p*p),m=je(g-1n),v=je(l*g+1n);let{isValid:y,value:w}=NC(m,v);y||or("bad point: y not sqrt");const B=(w&1n)===1n,T=(f&128)!==0;return!o&&w===0n&&T&&or("bad point: x==0, isLastByteOdd"),T!==B&&(w=je(-w)),new $r(w,p,1n,je(w*p))}assertValidity(){const a=Gf,o=Kf,l=this;if(l.is0())throw new Error("bad point: ZERO");const{ex:d,ey:f,ez:p,et:h}=l,g=je(d*d),m=je(f*f),v=je(p*p),y=je(v*v),w=je(g*a),B=je(v*je(w+m)),T=je(y+je(o*je(g*m)));if(B!==T)throw new Error("bad point: equation left != right (1)");const C=je(d*f),k=je(p*h);if(C!==k)throw new Error("bad point: equation left != right (2)");return this}equals(a){const{ex:o,ey:l,ez:d}=this,{ex:f,ey:p,ez:h}=sg(a),g=je(o*h),m=je(f*d),v=je(l*h),y=je(p*d);return g===m&&v===y}is0(){return this.equals(Ws)}negate(){return new $r(je(-this.ex),this.ey,this.ez,je(-this.et))}double(){const{ex:a,ey:o,ez:l}=this,d=Gf,f=je(a*a),p=je(o*o),h=je(2n*je(l*l)),g=je(d*f),m=a+o,v=je(je(m*m)-f-p),y=g+p,w=y-h,B=g-p,T=je(v*w),C=je(y*B),k=je(v*B),D=je(w*y);return new $r(T,C,D,k)}add(a){const{ex:o,ey:l,ez:d,et:f}=this,{ex:p,ey:h,ez:g,et:m}=sg(a),v=Gf,y=Kf,w=je(o*p),B=je(l*h),T=je(f*y*m),C=je(d*g),k=je((o+l)*(p+h)-w-B),D=je(C-T),P=je(C+T),S=je(B-v*w),N=je(k*D),I=je(P*S),z=je(k*S),H=je(D*P);return new $r(N,I,H,z)}multiply(a,o=!0){if(!o&&(a===0n||this.is0()))return Ws;if(Wo(a,1n,Sc),a===1n)return this;if(this.equals(ki))return ZC(a).p;let l=Ws,d=ki;for(let f=this;a>0n;f=f.double(),a>>=1n)a&1n?l=l.add(f):o&&(d=d.add(f));return l}toAffine(){const{ex:a,ey:o,ez:l}=this;if(this.equals(Ws))return{x:0n,y:1n};const d=Fx(l,Bn);return je(l*d)!==1n&&or("invalid inverse"),{x:je(a*d),y:je(o*d)}}toBytes(){const{x:a,y:o}=this.assertValidity().toAffine(),l=Nx(o);return l[31]|=a&1n?128:0,l}toHex(){return O0(this.toBytes())}clearCofactor(){return this.multiply(Lc(BC),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let a=this.multiply(Sc/2n,!1).double();return Sc%2n&&(a=a.add(this)),a.is0()}static fromHex(a,o){return $r.fromBytes(co(a),o)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}toRawBytes(){return this.toBytes()}};Oo($r,"BASE"),Oo($r,"ZERO");let Nr=$r;const ki=new Nr(rg,ig,1n,je(rg*ig)),Ws=new Nr(0n,1n,1n,0n);Nr.BASE=ki;Nr.ZERO=Ws;const Nx=r=>j0(Px(Wo(r,0n,u0),cl)).reverse(),z0=r=>Lc("0x"+O0(I0(Qo(r)).reverse())),Qr=(r,a)=>{let o=r;for(;a-- >0n;)o*=o,o%=Bn;return o},FC=r=>{const o=r*r%Bn*r%Bn,l=Qr(o,2n)*o%Bn,d=Qr(l,1n)*r%Bn,f=Qr(d,5n)*d%Bn,p=Qr(f,10n)*f%Bn,h=Qr(p,20n)*p%Bn,g=Qr(h,40n)*h%Bn,m=Qr(g,80n)*g%Bn,v=Qr(m,80n)*g%Bn,y=Qr(v,10n)*f%Bn;return{pow_p_5_8:Qr(y,2n)*r%Bn,b2:o}},ag=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,NC=(r,a)=>{const o=je(a*a*a),l=je(o*o*a),d=FC(r*l).pow_p_5_8;let f=je(r*o*d);const p=je(a*f*f),h=f,g=je(f*ag),m=p===r,v=p===je(-r),y=p===je(-r*ag);return m&&(f=h),(v||y)&&(f=g),(je(f)&1n)===1n&&(f=je(-f)),{isValid:m||v,value:f}},Mc=r=>Rx(z0(r)),H0=(...r)=>q0.sha512Async(...r),V0=(...r)=>RC("sha512Sync")(...r),Lx=r=>{const a=r.slice(0,ei);a[0]&=248,a[31]&=127,a[31]|=64;const o=r.slice(ei,cl),l=Mc(a),d=ki.multiply(l),f=d.toBytes();return{head:a,prefix:o,scalar:l,point:d,pointBytes:f}},U0=r=>H0(co(r,ei)).then(Lx),Z0=r=>Lx(V0(co(r,ei))),LC=r=>U0(r).then(a=>a.pointBytes),MC=r=>Z0(r).pointBytes,Mx=r=>H0(r.hashable).then(r.finish),Ix=r=>r.finish(V0(r.hashable)),Ox=(r,a,o)=>{const{pointBytes:l,scalar:d}=r,f=Mc(a),p=ki.multiply(f).toBytes();return{hashable:dl(p,l,o),finish:m=>{const v=Rx(f+Mc(m)*d);return Qo(dl(p,Nx(v)),cl)}}},IC=async(r,a)=>{const o=co(r),l=await U0(a),d=await H0(l.prefix,o);return Mx(Ox(l,d,o))},OC=(r,a)=>{const o=co(r),l=Z0(a),d=V0(l.prefix,o);return Ix(Ox(l,d,o))},W0={zip215:!0},jx=(r,a,o,l=W0)=>{r=co(r,cl),a=co(a),o=co(o,ei);const{zip215:d}=l;let f,p,h,g,m=Uint8Array.of();try{f=Nr.fromHex(o,d),p=Nr.fromHex(r.slice(0,ei),d),h=z0(r.slice(ei,cl)),g=ki.multiply(h,!1),m=dl(p.toBytes(),f.toBytes(),a)}catch{}return{hashable:m,finish:y=>{if(g==null||!d&&f.isSmallOrder())return!1;const w=Mc(y);return p.add(f.multiply(w,!1)).add(g.negate()).clearCofactor().is0()}}},jC=async(r,a,o,l=W0)=>Mx(jx(r,a,o,l)),zC=(r,a,o,l=W0)=>Ix(jx(r,a,o,l)),q0={sha512Async:async(...r)=>{const a=DC(),o=dl(...r);return id(await a.digest("SHA-512",o.buffer))},sha512Sync:void 0,bytesToHex:O0,hexToBytes:j0,concatBytes:dl,mod:je,invert:Fx,randomBytes:Dx},HC={getExtendedPublicKeyAsync:U0,getExtendedPublicKey:Z0,randomPrivateKey:()=>Dx(ei),precompute:(r=8,a=ki)=>(a.multiply(3n),a)},Ic=8,VC=256,zx=Math.ceil(VC/Ic)+1,c0=2**(Ic-1),UC=()=>{const r=[];let a=ki,o=a;for(let l=0;l{const o=a.negate();return r?o:a},ZC=r=>{const a=lg||(lg=UC());let o=Ws,l=ki;const d=2**Ic,f=d,p=Lc(d-1),h=Lc(Ic);for(let g=0;g>=h,m>c0&&(m-=f,r+=1n);const v=g*c0,y=v,w=v+Math.abs(m)-1,B=g%2!==0,T=m<0;m===0?l=l.add(ug(B,a[y])):o=o.add(ug(T,a[w]))}return{p:o,f:l}},WC=Object.freeze(Object.defineProperty({__proto__:null,CURVE:Sx,ExtendedPoint:Nr,Point:Nr,etc:q0,getPublicKey:MC,getPublicKeyAsync:LC,sign:OC,signAsync:IC,utils:HC,verify:zC,verifyAsync:jC},Symbol.toStringTag,{value:"Module"})),qC=Mg(WC);var Vo={},Qf={exports:{}},cg;function GC(){return cg||(cg=1,(function(r,a){var o=(()=>{var d;var l=typeof document<"u"?(d=document.currentScript)==null?void 0:d.src:void 0;return(async function(f={}){var yn;var p,h=f,g=typeof window=="object",m=typeof WorkerGlobalScope<"u",v=typeof process=="object"&&((yn=process.versions)==null?void 0:yn.node)&&process.type!="renderer";typeof __filename<"u"?l=__filename:m&&(l=self.location.href);var y="";function w(ge){return h.locateFile?h.locateFile(ge,y):y+ge}var B,T;if(v){var C=Nc;y=__dirname+"/",T=ge=>{ge=S(ge)?new URL(ge):ge;var be=C.readFileSync(ge);return be},B=async(ge,be=!0)=>{ge=S(ge)?new URL(ge):ge;var De=C.readFileSync(ge,be?void 0:"utf8");return De},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2)}else if(g||m){try{y=new URL(".",l).href}catch{}m&&(T=ge=>{var be=new XMLHttpRequest;return be.open("GET",ge,!1),be.responseType="arraybuffer",be.send(null),new Uint8Array(be.response)}),B=async ge=>{if(S(ge))return new Promise((De,re)=>{var me=new XMLHttpRequest;me.open("GET",ge,!0),me.responseType="arraybuffer",me.onload=()=>{if(me.status==200||me.status==0&&me.response){De(me.response);return}re(me.status)},me.onerror=re,me.send(null)});var be=await fetch(ge,{credentials:"same-origin"});if(be.ok)return be.arrayBuffer();throw new Error(be.status+" : "+be.url)}}console.log.bind(console);var k=console.error.bind(console),D,P=!1,S=ge=>ge.startsWith("file://"),N,I,z,H,j,ee=!1;function Z(){var ge=z.buffer;h.HEAP8=H=new Int8Array(ge),h.HEAPU8=j=new Uint8Array(ge),h.HEAP32=new Int32Array(ge),h.HEAPU32=new Uint32Array(ge),new BigInt64Array(ge),new BigUint64Array(ge)}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(){ee=!0,Pt.b()}function J(){if(h.postRun)for(typeof h.postRun=="function"&&(h.postRun=[h.postRun]);h.postRun.length;)We(h.postRun.shift());ke(Ae)}var ie=0,he=null;function ae(ge){var be;ie++,(be=h.monitorRunDependencies)==null||be.call(h,ie)}function pe(ge){var De;if(ie--,(De=h.monitorRunDependencies)==null||De.call(h,ie),ie==0&&he){var be=he;he=null,be()}}function G(ge){var De;(De=h.onAbort)==null||De.call(h,ge),ge="Aborted("+ge+")",k(ge),P=!0,ge+=". Build with -sASSERTIONS for more info.";var be=new WebAssembly.RuntimeError(ge);throw I==null||I(be),be}var Y;function q(){return w("orlp-ed25519.wasm")}function R(ge){if(ge==Y&&D)return new Uint8Array(D);if(T)return T(ge);throw"both async and sync fetching of the wasm failed"}async function U(ge){if(!D)try{var be=await B(ge);return new Uint8Array(be)}catch{}return R(ge)}async function K(ge,be){try{var De=await U(ge),re=await WebAssembly.instantiate(De,be);return re}catch(me){k(`failed to asynchronously prepare wasm: ${me}`),G(me)}}async function $(ge,be,De){if(!ge&&typeof WebAssembly.instantiateStreaming=="function"&&!S(be)&&!v)try{var re=fetch(be,{credentials:"same-origin"}),me=await WebAssembly.instantiateStreaming(re,De);return me}catch(Se){k(`wasm streaming compile failed: ${Se}`),k("falling back to ArrayBuffer instantiation")}return K(be,De)}function de(){return{a:Wt}}async function fe(){function ge(Se,Ne){return Pt=Se.exports,z=Pt.a,Z(),Tn(Pt),pe(),Pt}ae();function be(Se){return ge(Se.instance)}var De=de();if(h.instantiateWasm)return new Promise((Se,Ne)=>{h.instantiateWasm(De,(Ve,$t)=>{Se(ge(Ve))})});Y??(Y=q());var re=await $(D,Y,De),me=be(re);return me}var ke=ge=>{for(;ge.length>0;)ge.shift()(h)},Ae=[],We=ge=>Ae.push(ge),$e=[],wt=ge=>$e.push(ge),ft=ge=>jt(ge),Be=()=>mn(),Ze=ge=>{var be=h["_"+ge];return be},lt=(ge,be)=>{H.set(ge,be)},Rt=ge=>{for(var be=0,De=0;De=55296&&re<=57343?(be+=4,++De):be+=3}return be},vt=(ge,be,De,re)=>{if(!(re>0))return 0;for(var me=De,Se=De+re-1,Ne=0;Ne=Se)break;be[De++]=Ve}else if(Ve<=2047){if(De+1>=Se)break;be[De++]=192|Ve>>6,be[De++]=128|Ve&63}else if(Ve<=65535){if(De+2>=Se)break;be[De++]=224|Ve>>12,be[De++]=128|Ve>>6&63,be[De++]=128|Ve&63}else{if(De+3>=Se)break;be[De++]=240|Ve>>18,be[De++]=128|Ve>>12&63,be[De++]=128|Ve>>6&63,be[De++]=128|Ve&63,Ne++}}return be[De]=0,De-me},ot=(ge,be,De)=>vt(ge,j,be,De),Qe=ge=>nn(ge),Xe=ge=>{var be=Rt(ge)+1,De=Qe(be);return ot(ge,De,be),De},xe=typeof TextDecoder<"u"?new TextDecoder:void 0,Te=(ge,be=0,De=NaN)=>{for(var re=be+De,me=be;ge[me]&&!(me>=re);)++me;if(me-be>16&&ge.buffer&&xe)return xe.decode(ge.subarray(be,me));for(var Se="";be>10,56320|Ue&1023)}}return Se},pt=(ge,be)=>ge?Te(j,ge,be):"",Zt=(ge,be,De,re,me)=>{var Se={string:it=>{var Et=0;return it!=null&&it!==0&&(Et=Xe(it)),Et},array:it=>{var Et=Qe(it.length);return lt(it,Et),Et}};function Ne(it){return be==="string"?pt(it):be==="boolean"?!!it:it}var Ve=Ze(ge),$t=[],Ue=0;if(re)for(var mt=0;mt{var me=!De||De.every(Ne=>Ne==="number"||Ne==="boolean"),Se=be!=="string";return Se&&me&&!re?Ze(ge):(...Ne)=>Zt(ge,be,De,Ne)};h.noExitRuntime&&h.noExitRuntime,h.print&&h.print,h.printErr&&(k=h.printErr),h.wasmBinary&&(D=h.wasmBinary),h.arguments&&h.arguments,h.thisProgram&&h.thisProgram,h.ccall=Zt,h.cwrap=tn;var jt,nn,mn;function Tn(ge){h._orlp_derive_public_key=ge.c,h._orlp_validate_keypair=ge.d,h._orlp_sign=ge.e,h._orlp_verify=ge.f,jt=ge.g,nn=ge.h,mn=ge.i}var Wt={},Pt=await fe();function qt(){if(ie>0){he=qt;return}if(V(),ie>0){he=qt;return}function ge(){var be;h.calledRun=!0,!P&&(ne(),N==null||N(h),(be=h.onRuntimeInitialized)==null||be.call(h),J())}h.setStatus?(h.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>h.setStatus(""),1),ge()},1)):ge()}function qn(){if(h.preInit)for(typeof h.preInit=="function"&&(h.preInit=[h.preInit]);h.preInit.length>0;)h.preInit.shift()()}return qn(),qt(),ee?p=h:p=new Promise((ge,be)=>{N=ge,I=be}),p})})();r.exports=o,r.exports.default=o})(Qf)),Qf.exports}var dg;function G0(){if(dg)return Vo;dg=1,Object.defineProperty(Vo,"__esModule",{value:!0}),Vo.derivePublicKey=l,Vo.validateKeyPair=d,Vo.sign=f,Vo.verify=p;const r=vn(),a=GC();async function o(){return await a()}async function l(h){const g=await o(),m=(0,r.hexToBytes)(h);if(m.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${m.length}`);const v=1024,y=1088;if(g.HEAPU8.set(m,v),g.ccall("orlp_derive_public_key","number",["number","number"],[y,v])!==0)throw new Error("orlp key derivation failed: invalid private key");const B=new Uint8Array(32);return B.set(g.HEAPU8.subarray(y,y+32)),(0,r.bytesToHex)(B)}async function d(h,g){try{const m=await o(),v=(0,r.hexToBytes)(h),y=(0,r.hexToBytes)(g);if(v.length!==64||y.length!==32)return!1;const w=2048,B=2112;return m.HEAPU8.set(v,w),m.HEAPU8.set(y,B),m.ccall("orlp_validate_keypair","number",["number","number"],[B,w])===1}catch{return!1}}async function f(h,g,m){const v=await o(),y=(0,r.hexToBytes)(h),w=(0,r.hexToBytes)(g),B=(0,r.hexToBytes)(m);if(w.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${w.length}`);if(B.length!==32)throw new Error(`Invalid public key length: expected 32 bytes, got ${B.length}`);const T=1e5,C=2e5,k=3e5,D=4e5;v.HEAPU8.set(y,T),v.HEAPU8.set(w,C),v.HEAPU8.set(B,k),v.ccall("orlp_sign","void",["number","number","number","number","number"],[D,T,y.length,k,C]);const P=new Uint8Array(64);return P.set(v.HEAPU8.subarray(D,D+64)),(0,r.bytesToHex)(P)}async function p(h,g,m){try{const v=await o(),y=(0,r.hexToBytes)(h),w=(0,r.hexToBytes)(g),B=(0,r.hexToBytes)(m);if(y.length!==64||B.length!==32)return!1;const T=5e5,C=6e5,k=7e5;return v.HEAPU8.set(y,C),v.HEAPU8.set(w,T),v.HEAPU8.set(B,k),v.ccall("orlp_verify","number",["number","number","number","number"],[C,T,w.length,k])===1}catch{return!1}}return Vo}var fg;function Hx(){if(fg)return Dr;fg=1;var r=Dr&&Dr.__createBinding||(Object.create?(function(m,v,y,w){w===void 0&&(w=y);var B=Object.getOwnPropertyDescriptor(v,y);(!B||("get"in B?!v.__esModule:B.writable||B.configurable))&&(B={enumerable:!0,get:function(){return v[y]}}),Object.defineProperty(m,w,B)}):(function(m,v,y,w){w===void 0&&(w=y),m[w]=v[y]})),a=Dr&&Dr.__setModuleDefault||(Object.create?(function(m,v){Object.defineProperty(m,"default",{enumerable:!0,value:v})}):function(m,v){m.default=v}),o=Dr&&Dr.__importStar||(function(){var m=function(v){return m=Object.getOwnPropertyNames||function(y){var w=[];for(var B in y)Object.prototype.hasOwnProperty.call(y,B)&&(w[w.length]=B);return w},m(v)};return function(v){if(v&&v.__esModule)return v;var y={};if(v!=null)for(var w=m(v),B=0;B>>24&255,B[T*4+1]=C>>>16&255,B[T*4+2]=C>>>8&255,B[T*4+3]=C&255}return B}catch{throw new Error("No SHA-512 implementation available for synchronous operation")}}l.etc.sha512Async=p;try{l.etc.sha512Sync=h}catch(m){console.debug("Could not set up synchronous SHA-512:",m)}class g{static async verifyAdvertisementSignature(v,y,w,B){try{const T=(0,d.hexToBytes)(v),C=(0,d.hexToBytes)(y),k=(0,d.hexToBytes)(B),D=this.constructAdvertSignedMessage(v,w,k);return await l.verify(C,D,T)}catch(T){return console.error("Ed25519 signature verification failed:",T),!1}}static constructAdvertSignedMessage(v,y,w){const B=(0,d.hexToBytes)(v),T=new Uint8Array(4);T[0]=y&255,T[1]=y>>8&255,T[2]=y>>16&255,T[3]=y>>24&255;const C=new Uint8Array(36+w.length);return C.set(B,0),C.set(T,32),C.set(w,36),C}static getSignedMessageDescription(v,y,w){return`Public Key: ${v} + Timestamp: ${y} (${new Date(y*1e3).toISOString()}) + App Data: ${w}`}static getSignedMessageHex(v,y,w){const B=(0,d.hexToBytes)(w),T=this.constructAdvertSignedMessage(v,y,B);return(0,d.bytesToHex)(T)}static async derivePublicKey(v){try{const y=(0,d.hexToBytes)(v);if(y.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${y.length}`);return await(0,f.derivePublicKey)(v)}catch(y){throw new Error(`Failed to derive public key: ${y instanceof Error?y.message:"Unknown error"}`)}}static derivePublicKeySync(v){try{const y=(0,d.hexToBytes)(v);throw y.length!==64?new Error(`Invalid private key length: expected 64 bytes, got ${y.length}`):new Error("Synchronous key derivation not supported with WASM. Use derivePublicKey() instead.")}catch(y){throw new Error(`Failed to derive public key: ${y instanceof Error?y.message:"Unknown error"}`)}}static async validateKeyPair(v,y){try{return await(0,f.validateKeyPair)(v,y)}catch{return!1}}}return Dr.Ed25519SignatureVerifier=g,Dr}var hg;function KC(){if(hg)return $a;hg=1,Object.defineProperty($a,"__esModule",{value:!0}),$a.AdvertPayloadDecoder=void 0;const r=sr(),a=vn(),o=ul(),l=Hx();class d{static decode(p,h){try{if(p.length<101){const D={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&&(D.segments=[{name:"Invalid Advert Data",description:"Advert payload too short (minimum 101 bytes required)",startByte:h.segmentOffset||0,endByte:(h.segmentOffset||0)+p.length-1,value:(0,a.bytesToHex)(p)}]),D}const g=[],m=(h==null?void 0:h.segmentOffset)||0;let v=0;const y=(0,a.bytesToHex)(p.subarray(v,v+32));h!=null&&h.includeSegments&&g.push({name:"Public Key",description:"Ed25519 public key",startByte:m+v,endByte:m+v+31,value:y}),v+=32;const w=this.readUint32LE(p,v);if(h!=null&&h.includeSegments){const D=new Date(w*1e3);g.push({name:"Timestamp",description:`${w} (${D.toISOString().slice(0,19)}Z)`,startByte:m+v,endByte:m+v+3,value:(0,a.bytesToHex)(p.subarray(v,v+4))})}v+=4;const B=(0,a.bytesToHex)(p.subarray(v,v+64));h!=null&&h.includeSegments&&g.push({name:"Signature",description:"Ed25519 signature",startByte:m+v,endByte:m+v+63,value:B}),v+=64;const T=p[v];if(h!=null&&h.includeSegments){const D=T.toString(2).padStart(8,"0"),P=this.parseDeviceRole(T),N=` | Bits 0-3 (Role): ${(0,o.getDeviceRoleName)(P)} | Bit 4 (Location): ${T&r.AdvertFlags.HasLocation?"Yes":"No"} | Bit 7 (Name): ${T&r.AdvertFlags.HasName?"Yes":"No"}`;g.push({name:"App Flags",description:`Binary: ${D}${N}`,startByte:m+v,endByte:m+v,value:T.toString(16).padStart(2,"0").toUpperCase()})}v+=1;const C={type:r.PayloadType.Advert,version:r.PayloadVersion.Version1,isValid:!0,publicKey:y,timestamp:w,signature:B,appData:{flags:T,deviceRole:this.parseDeviceRole(T),hasLocation:!!(T&r.AdvertFlags.HasLocation),hasName:!!(T&r.AdvertFlags.HasName)}};let k=v;if(T&r.AdvertFlags.HasLocation&&p.length>=k+8){const D=this.readInt32LE(p,k)/1e6,P=this.readInt32LE(p,k+4)/1e6;C.appData.location={latitude:Math.round(D*1e6)/1e6,longitude:Math.round(P*1e6)/1e6},h!=null&&h.includeSegments&&(g.push({name:"Latitude",description:`${D}° (${D})`,startByte:m+k,endByte:m+k+3,value:(0,a.bytesToHex)(p.subarray(k,k+4))}),g.push({name:"Longitude",description:`${P}° (${P})`,startByte:m+k+4,endByte:m+k+7,value:(0,a.bytesToHex)(p.subarray(k+4,k+8))})),k+=8}if(T&r.AdvertFlags.HasFeature1&&(k+=2),T&r.AdvertFlags.HasFeature2&&(k+=2),T&r.AdvertFlags.HasName&&p.length>k){const D=p.subarray(k),P=new TextDecoder("utf-8").decode(D).replace(/\0.*$/,"");C.appData.name=this.sanitizeControlCharacters(P)||P,h!=null&&h.includeSegments&&g.push({name:"Node Name",description:`Node name: "${C.appData.name}"`,startByte:m+k,endByte:m+p.length-1,value:(0,a.bytesToHex)(D)})}return h!=null&&h.includeSegments&&(C.segments=g),C}catch(g){return{type:r.PayloadType.Advert,version:r.PayloadVersion.Version1,isValid:!1,errors:[g instanceof Error?g.message:"Failed to decode advertisement payload"],publicKey:"",timestamp:0,signature:"",appData:{flags:0,deviceRole:r.DeviceRole.ChatNode,hasLocation:!1,hasName:!1}}}}static async decodeWithVerification(p,h){const g=this.decode(p,h);if(!g||!g.isValid)return g;try{const v=p.subarray(100),y=(0,a.bytesToHex)(v),w=await l.Ed25519SignatureVerifier.verifyAdvertisementSignature(g.publicKey,g.signature,g.timestamp,y);g.signatureValid=w,w||(g.signatureError="Ed25519 signature verification failed",g.isValid=!1,g.errors||(g.errors=[]),g.errors.push("Invalid Ed25519 signature"))}catch(m){g.signatureValid=!1,g.signatureError=m instanceof Error?m.message:"Signature verification error",g.isValid=!1,g.errors||(g.errors=[]),g.errors.push("Signature verification failed: "+(m instanceof Error?m.message:"Unknown error"))}return g}static parseDeviceRole(p){switch(p&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(p,h){return p[h]|p[h+1]<<8|p[h+2]<<16|p[h+3]<<24}static readInt32LE(p,h){const g=this.readUint32LE(p,h);return g>2147483647?g-4294967296:g}static sanitizeControlCharacters(p){return p&&p.trim().replace(/[\x00-\x1F\x7F]/g,"")||null}}return $a.AdvertPayloadDecoder=d,$a}var Ya={},pg;function QC(){if(pg)return Ya;pg=1,Object.defineProperty(Ya,"__esModule",{value:!0}),Ya.TracePayloadDecoder=void 0;const r=sr(),a=vn();class o{static decode(d,f,p){try{if(d.length<9){const P={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 p!=null&&p.includeSegments&&(P.segments=[{name:"Invalid Trace Data",description:"Trace payload too short (minimum 9 bytes required)",startByte:p.segmentOffset||0,endByte:(p.segmentOffset||0)+d.length-1,value:(0,a.bytesToHex)(d)}]),P}let h=0;const g=[],m=(p==null?void 0:p.segmentOffset)||0,v=this.readUint32LE(d,h),y=(0,a.numberToHex)(v,8);p!=null&&p.includeSegments&&g.push({name:"Trace Tag",description:`Unique identifier for this trace: 0x${v.toString(16).padStart(8,"0")}`,startByte:m+h,endByte:m+h+3,value:(0,a.bytesToHex)(d.slice(h,h+4))}),h+=4;const w=this.readUint32LE(d,h);p!=null&&p.includeSegments&&g.push({name:"Auth Code",description:`Authentication/verification code: ${w}`,startByte:m+h,endByte:m+h+3,value:(0,a.bytesToHex)(d.slice(h,h+4))}),h+=4;const B=d[h];p!=null&&p.includeSegments&&g.push({name:"Flags",description:`Application-defined control flags: 0x${B.toString(16).padStart(2,"0")} (${B.toString(2).padStart(8,"0")}b)`,startByte:m+h,endByte:m+h,value:B.toString(16).padStart(2,"0").toUpperCase()}),h+=1;const T=[],C=h;for(;h0){const P=T.join(" ");g.push({name:"Path Hashes",description:`Node hashes in trace path: ${P}`,startByte:m+C,endByte:m+d.length-1,value:(0,a.bytesToHex)(d.slice(C))})}let k;f&&f.length>0&&(k=f.map(P=>{const S=parseInt(P,16);return(S>127?S-256:S)/4}));const D={type:r.PayloadType.Trace,version:r.PayloadVersion.Version1,isValid:!0,traceTag:y,authCode:w,flags:B,pathHashes:T,snrValues:k};return p!=null&&p.includeSegments&&(D.segments=g),D}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(d,f){return d[f]|d[f+1]<<8|d[f+2]<<16|d[f+3]<<24}}return Ya.TracePayloadDecoder=o,Ya}var Xa={},mg;function $C(){if(mg)return Xa;mg=1,Object.defineProperty(Xa,"__esModule",{value:!0}),Xa.GroupTextPayloadDecoder=void 0;const r=sr(),a=M0(),o=vn();class l{static decode(f,p){try{if(f.length<3){const T={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 p!=null&&p.includeSegments&&(T.segments=[{name:"Invalid GroupText Data",description:"GroupText payload too short (minimum 3 bytes required)",startByte:p.segmentOffset||0,endByte:(p.segmentOffset||0)+f.length-1,value:(0,o.bytesToHex)(f)}]),T}const h=[],g=(p==null?void 0:p.segmentOffset)||0;let m=0;const v=(0,o.byteToHex)(f[m]);p!=null&&p.includeSegments&&h.push({name:"Channel Hash",description:"First byte of SHA256 of channel's shared key",startByte:g+m,endByte:g+m,value:v}),m+=1;const y=(0,o.bytesToHex)(f.subarray(m,m+2));p!=null&&p.includeSegments&&h.push({name:"Cipher MAC",description:"MAC for encrypted data",startByte:g+m,endByte:g+m+1,value:y}),m+=2;const w=(0,o.bytesToHex)(f.subarray(m));p!=null&&p.includeSegments&&f.length>m&&h.push({name:"Ciphertext",description:"Encrypted message content (timestamp + flags + message)",startByte:g+m,endByte:g+f.length-1,value:w});const B={type:r.PayloadType.GroupText,version:r.PayloadVersion.Version1,isValid:!0,channelHash:v,cipherMac:y,ciphertext:w,ciphertextLength:f.length-3};if(p!=null&&p.keyStore&&p.keyStore.hasChannelKey(v)){const T=p.keyStore.getChannelKeys(v);for(const C of T){const k=a.ChannelCrypto.decryptGroupTextMessage(w,y,C);if(k.success&&k.data){B.decrypted={timestamp:k.data.timestamp,flags:k.data.flags,sender:k.data.sender,message:k.data.message};break}}}return p!=null&&p.includeSegments&&(B.segments=h),B}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 Xa.GroupTextPayloadDecoder=l,Xa}var Ja={},gg;function YC(){if(gg)return Ja;gg=1,Object.defineProperty(Ja,"__esModule",{value:!0}),Ja.RequestPayloadDecoder=void 0;const r=sr(),a=vn();class o{static decode(d,f){try{if(d.length<4){const T={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 f!=null&&f.includeSegments&&(T.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:f.segmentOffset||0,endByte:(f.segmentOffset||0)+d.length-1,value:(0,a.bytesToHex)(d)}]),T}const p=[],h=(f==null?void 0:f.segmentOffset)||0;let g=0;const m=(0,a.bytesToHex)(d.subarray(g,g+1));f!=null&&f.includeSegments&&p.push({name:"Destination Hash",description:`First byte of destination node public key: 0x${m}`,startByte:h+g,endByte:h+g,value:m}),g+=1;const v=(0,a.bytesToHex)(d.subarray(g,g+1));f!=null&&f.includeSegments&&p.push({name:"Source Hash",description:`First byte of source node public key: 0x${v}`,startByte:h+g,endByte:h+g,value:v}),g+=1;const y=(0,a.bytesToHex)(d.subarray(g,g+2));f!=null&&f.includeSegments&&p.push({name:"Cipher MAC",description:"MAC for encrypted data verification (2 bytes)",startByte:h+g,endByte:h+g+1,value:y}),g+=2;const w=(0,a.bytesToHex)(d.subarray(g));f!=null&&f.includeSegments&&d.length>g&&p.push({name:"Ciphertext",description:`Encrypted message data (${d.length-g} bytes). Contains encrypted plaintext with this structure: + */return o.mode.CTRGladman=(function(){var l=o.lib.BlockCipherMode.extend();function d(h){if((h>>24&255)===255){var g=h>>16&255,m=h>>8&255,v=h&255;g===255?(g=0,m===255?(m=0,v===255?v=0:++v):++m):++g,h=0,h+=g<<16,h+=m<<8,h+=v}else h+=1<<24;return h}function f(h){return(h[0]=d(h[0]))===0&&(h[1]=d(h[1])),h}var p=l.Encryptor=l.extend({processBlock:function(h,g){var m=this._cipher,v=m.blockSize,y=this._iv,w=this._counter;y&&(w=this._counter=y.slice(0),this._iv=void 0),f(w);var B=w.slice(0);m.encryptBlock(B,0);for(var T=0;T>>2]|=h<<24-g%4*8,l.sigBytes+=h},unpad:function(l){var d=l.words[l.sigBytes-1>>>2]&255;l.sigBytes-=d}},o.pad.Ansix923})})(mc)),mc.exports}var gc={exports:{}},oC=gc.exports,Um;function sC(){return Um||(Um=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(oC,function(o){return o.pad.Iso10126={pad:function(l,d){var f=d*4,p=f-l.sigBytes%f;l.concat(o.lib.WordArray.random(p-1)).concat(o.lib.WordArray.create([p<<24],1))},unpad:function(l){var d=l.words[l.sigBytes-1>>>2]&255;l.sigBytes-=d}},o.pad.Iso10126})})(gc)),gc.exports}var Ac={exports:{}},aC=Ac.exports,Zm;function lC(){return Zm||(Zm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(aC,function(o){return o.pad.Iso97971={pad:function(l,d){l.concat(o.lib.WordArray.create([2147483648],1)),o.pad.ZeroPadding.pad(l,d)},unpad:function(l){o.pad.ZeroPadding.unpad(l),l.sigBytes--}},o.pad.Iso97971})})(Ac)),Ac.exports}var xc={exports:{}},uC=xc.exports,Wm;function cC(){return Wm||(Wm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(uC,function(o){return o.pad.ZeroPadding={pad:function(l,d){var f=d*4;l.clamp(),l.sigBytes+=f-(l.sigBytes%f||f)},unpad:function(l){for(var d=l.words,f=l.sigBytes-1,f=l.sigBytes-1;f>=0;f--)if(d[f>>>2]>>>24-f%4*8&255){l.sigBytes=f+1;break}}},o.pad.ZeroPadding})})(xc)),xc.exports}var vc={exports:{}},dC=vc.exports,qm;function fC(){return qm||(qm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(dC,function(o){return o.pad.NoPadding={pad:function(){},unpad:function(){}},o.pad.NoPadding})})(vc)),vc.exports}var yc={exports:{}},hC=yc.exports,Gm;function pC(){return Gm||(Gm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),pn())})(hC,function(o){return(function(l){var d=o,f=d.lib,p=f.CipherParams,h=d.enc,g=h.Hex,m=d.format;m.Hex={stringify:function(v){return v.ciphertext.toString(g)},parse:function(v){var y=g.parse(v);return p.create({ciphertext:y})}}})(),o.format.Hex})})(yc)),yc.exports}var _c={exports:{}},mC=_c.exports,Km;function gC(){return Km||(Km=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(mC,function(o){return(function(){var l=o,d=l.lib,f=d.BlockCipher,p=l.algo,h=[],g=[],m=[],v=[],y=[],w=[],B=[],T=[],C=[],k=[];(function(){for(var S=[],N=0;N<256;N++)N<128?S[N]=N<<1:S[N]=N<<1^283;for(var I=0,z=0,N=0;N<256;N++){var H=z^z<<1^z<<2^z<<3^z<<4;H=H>>>8^H&255^99,h[I]=H,g[H]=I;var j=S[I],ee=S[j],Z=S[ee],V=S[H]*257^H*16843008;m[I]=V<<24|V>>>8,v[I]=V<<16|V>>>16,y[I]=V<<8|V>>>24,w[I]=V;var V=Z*16843009^ee*65537^j*257^I*16843008;B[H]=V<<24|V>>>8,T[H]=V<<16|V>>>16,C[H]=V<<8|V>>>24,k[H]=V,I?(I=j^S[S[S[Z^j]]],z^=S[S[z]]):I=z=1}})();var D=[0,1,2,4,8,16,32,64,128,27,54],P=p.AES=f.extend({_doReset:function(){var S;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var N=this._keyPriorReset=this._key,I=N.words,z=N.sigBytes/4,H=this._nRounds=z+6,j=(H+1)*4,ee=this._keySchedule=[],Z=0;Z6&&Z%z==4&&(S=h[S>>>24]<<24|h[S>>>16&255]<<16|h[S>>>8&255]<<8|h[S&255]):(S=S<<8|S>>>24,S=h[S>>>24]<<24|h[S>>>16&255]<<16|h[S>>>8&255]<<8|h[S&255],S^=D[Z/z|0]<<24),ee[Z]=ee[Z-z]^S);for(var V=this._invKeySchedule=[],ne=0;ne>>24]]^T[h[S>>>16&255]]^C[h[S>>>8&255]]^k[h[S&255]]}}},encryptBlock:function(S,N){this._doCryptBlock(S,N,this._keySchedule,m,v,y,w,h)},decryptBlock:function(S,N){var I=S[N+1];S[N+1]=S[N+3],S[N+3]=I,this._doCryptBlock(S,N,this._invKeySchedule,B,T,C,k,g);var I=S[N+1];S[N+1]=S[N+3],S[N+3]=I},_doCryptBlock:function(S,N,I,z,H,j,ee,Z){for(var V=this._nRounds,ne=S[N]^I[0],J=S[N+1]^I[1],ie=S[N+2]^I[2],he=S[N+3]^I[3],ae=4,pe=1;pe>>24]^H[J>>>16&255]^j[ie>>>8&255]^ee[he&255]^I[ae++],Y=z[J>>>24]^H[ie>>>16&255]^j[he>>>8&255]^ee[ne&255]^I[ae++],q=z[ie>>>24]^H[he>>>16&255]^j[ne>>>8&255]^ee[J&255]^I[ae++],R=z[he>>>24]^H[ne>>>16&255]^j[J>>>8&255]^ee[ie&255]^I[ae++];ne=G,J=Y,ie=q,he=R}var G=(Z[ne>>>24]<<24|Z[J>>>16&255]<<16|Z[ie>>>8&255]<<8|Z[he&255])^I[ae++],Y=(Z[J>>>24]<<24|Z[ie>>>16&255]<<16|Z[he>>>8&255]<<8|Z[ne&255])^I[ae++],q=(Z[ie>>>24]<<24|Z[he>>>16&255]<<16|Z[ne>>>8&255]<<8|Z[J&255])^I[ae++],R=(Z[he>>>24]<<24|Z[ne>>>16&255]<<16|Z[J>>>8&255]<<8|Z[ie&255])^I[ae++];S[N]=G,S[N+1]=Y,S[N+2]=q,S[N+3]=R},keySize:256/32});l.AES=f._createHelper(P)})(),o.AES})})(_c)),_c.exports}var wc={exports:{}},AC=wc.exports,Qm;function xC(){return Qm||(Qm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(AC,function(o){return(function(){var l=o,d=l.lib,f=d.WordArray,p=d.BlockCipher,h=l.algo,g=[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],m=[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],v=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],y=[{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],B=h.DES=p.extend({_doReset:function(){for(var D=this._key,P=D.words,S=[],N=0;N<56;N++){var I=g[N]-1;S[N]=P[I>>>5]>>>31-I%32&1}for(var z=this._subKeys=[],H=0;H<16;H++){for(var j=z[H]=[],ee=v[H],N=0;N<24;N++)j[N/6|0]|=S[(m[N]-1+ee)%28]<<31-N%6,j[4+(N/6|0)]|=S[28+(m[N+24]-1+ee)%28]<<31-N%6;j[0]=j[0]<<1|j[0]>>>31;for(var N=1;N<7;N++)j[N]=j[N]>>>(N-1)*4+3;j[7]=j[7]<<5|j[7]>>>27}for(var Z=this._invSubKeys=[],N=0;N<16;N++)Z[N]=z[15-N]},encryptBlock:function(D,P){this._doCryptBlock(D,P,this._subKeys)},decryptBlock:function(D,P){this._doCryptBlock(D,P,this._invSubKeys)},_doCryptBlock:function(D,P,S){this._lBlock=D[P],this._rBlock=D[P+1],T.call(this,4,252645135),T.call(this,16,65535),C.call(this,2,858993459),C.call(this,8,16711935),T.call(this,1,1431655765);for(var N=0;N<16;N++){for(var I=S[N],z=this._lBlock,H=this._rBlock,j=0,ee=0;ee<8;ee++)j|=y[ee][((H^I[ee])&w[ee])>>>0];this._lBlock=H,this._rBlock=z^j}var Z=this._lBlock;this._lBlock=this._rBlock,this._rBlock=Z,T.call(this,1,1431655765),C.call(this,8,16711935),C.call(this,2,858993459),T.call(this,16,65535),T.call(this,4,252645135),D[P]=this._lBlock,D[P+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function T(D,P){var S=(this._lBlock>>>D^this._rBlock)&P;this._rBlock^=S,this._lBlock^=S<>>D^this._lBlock)&P;this._lBlock^=S,this._rBlock^=S<192.");var S=P.slice(0,2),N=P.length<4?P.slice(0,2):P.slice(2,4),I=P.length<6?P.slice(0,2):P.slice(4,6);this._des1=B.createEncryptor(f.create(S)),this._des2=B.createEncryptor(f.create(N)),this._des3=B.createEncryptor(f.create(I))},encryptBlock:function(D,P){this._des1.encryptBlock(D,P),this._des2.decryptBlock(D,P),this._des3.encryptBlock(D,P)},decryptBlock:function(D,P){this._des3.decryptBlock(D,P),this._des2.encryptBlock(D,P),this._des1.decryptBlock(D,P)},keySize:192/32,ivSize:64/32,blockSize:64/32});l.TripleDES=p._createHelper(k)})(),o.TripleDES})})(wc)),wc.exports}var bc={exports:{}},vC=bc.exports,$m;function yC(){return $m||($m=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(vC,function(o){return(function(){var l=o,d=l.lib,f=d.StreamCipher,p=l.algo,h=p.RC4=f.extend({_doReset:function(){for(var v=this._key,y=v.words,w=v.sigBytes,B=this._S=[],T=0;T<256;T++)B[T]=T;for(var T=0,C=0;T<256;T++){var k=T%w,D=y[k>>>2]>>>24-k%4*8&255;C=(C+B[T]+D)%256;var P=B[T];B[T]=B[C],B[C]=P}this._i=this._j=0},_doProcessBlock:function(v,y){v[y]^=g.call(this)},keySize:256/32,ivSize:0});function g(){for(var v=this._S,y=this._i,w=this._j,B=0,T=0;T<4;T++){y=(y+1)%256,w=(w+v[y])%256;var C=v[y];v[y]=v[w],v[w]=C,B|=v[(v[y]+v[w])%256]<<24-T*8}return this._i=y,this._j=w,B}l.RC4=f._createHelper(h);var m=p.RC4Drop=h.extend({cfg:h.cfg.extend({drop:192}),_doReset:function(){h._doReset.call(this);for(var v=this.cfg.drop;v>0;v--)g.call(this)}});l.RC4Drop=f._createHelper(m)})(),o.RC4})})(bc)),bc.exports}var Cc={exports:{}},_C=Cc.exports,Ym;function wC(){return Ym||(Ym=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(_C,function(o){return(function(){var l=o,d=l.lib,f=d.StreamCipher,p=l.algo,h=[],g=[],m=[],v=p.Rabbit=f.extend({_doReset:function(){for(var w=this._key.words,B=this.cfg.iv,T=0;T<4;T++)w[T]=(w[T]<<8|w[T]>>>24)&16711935|(w[T]<<24|w[T]>>>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],k=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 T=0;T<4;T++)y.call(this);for(var T=0;T<8;T++)k[T]^=C[T+4&7];if(B){var D=B.words,P=D[0],S=D[1],N=(P<<8|P>>>24)&16711935|(P<<24|P>>>8)&4278255360,I=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360,z=N>>>16|I&4294901760,H=I<<16|N&65535;k[0]^=N,k[1]^=z,k[2]^=I,k[3]^=H,k[4]^=N,k[5]^=z,k[6]^=I,k[7]^=H;for(var T=0;T<4;T++)y.call(this)}},_doProcessBlock:function(w,B){var T=this._X;y.call(this),h[0]=T[0]^T[5]>>>16^T[3]<<16,h[1]=T[2]^T[7]>>>16^T[5]<<16,h[2]=T[4]^T[1]>>>16^T[7]<<16,h[3]=T[6]^T[3]>>>16^T[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[B+C]^=h[C]},blockSize:128/32,ivSize:64/32});function y(){for(var w=this._X,B=this._C,T=0;T<8;T++)g[T]=B[T];B[0]=B[0]+1295307597+this._b|0,B[1]=B[1]+3545052371+(B[0]>>>0>>0?1:0)|0,B[2]=B[2]+886263092+(B[1]>>>0>>0?1:0)|0,B[3]=B[3]+1295307597+(B[2]>>>0>>0?1:0)|0,B[4]=B[4]+3545052371+(B[3]>>>0>>0?1:0)|0,B[5]=B[5]+886263092+(B[4]>>>0>>0?1:0)|0,B[6]=B[6]+1295307597+(B[5]>>>0>>0?1:0)|0,B[7]=B[7]+3545052371+(B[6]>>>0>>0?1:0)|0,this._b=B[7]>>>0>>0?1:0;for(var T=0;T<8;T++){var C=w[T]+B[T],k=C&65535,D=C>>>16,P=((k*k>>>17)+k*D>>>15)+D*D,S=((C&4294901760)*C|0)+((C&65535)*C|0);m[T]=P^S}w[0]=m[0]+(m[7]<<16|m[7]>>>16)+(m[6]<<16|m[6]>>>16)|0,w[1]=m[1]+(m[0]<<8|m[0]>>>24)+m[7]|0,w[2]=m[2]+(m[1]<<16|m[1]>>>16)+(m[0]<<16|m[0]>>>16)|0,w[3]=m[3]+(m[2]<<8|m[2]>>>24)+m[1]|0,w[4]=m[4]+(m[3]<<16|m[3]>>>16)+(m[2]<<16|m[2]>>>16)|0,w[5]=m[5]+(m[4]<<8|m[4]>>>24)+m[3]|0,w[6]=m[6]+(m[5]<<16|m[5]>>>16)+(m[4]<<16|m[4]>>>16)|0,w[7]=m[7]+(m[6]<<8|m[6]>>>24)+m[5]|0}l.Rabbit=f._createHelper(v)})(),o.Rabbit})})(Cc)),Cc.exports}var Ec={exports:{}},bC=Ec.exports,Xm;function CC(){return Xm||(Xm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(bC,function(o){return(function(){var l=o,d=l.lib,f=d.StreamCipher,p=l.algo,h=[],g=[],m=[],v=p.RabbitLegacy=f.extend({_doReset:function(){var w=this._key.words,B=this.cfg.iv,T=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 k=0;k<4;k++)y.call(this);for(var k=0;k<8;k++)C[k]^=T[k+4&7];if(B){var D=B.words,P=D[0],S=D[1],N=(P<<8|P>>>24)&16711935|(P<<24|P>>>8)&4278255360,I=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360,z=N>>>16|I&4294901760,H=I<<16|N&65535;C[0]^=N,C[1]^=z,C[2]^=I,C[3]^=H,C[4]^=N,C[5]^=z,C[6]^=I,C[7]^=H;for(var k=0;k<4;k++)y.call(this)}},_doProcessBlock:function(w,B){var T=this._X;y.call(this),h[0]=T[0]^T[5]>>>16^T[3]<<16,h[1]=T[2]^T[7]>>>16^T[5]<<16,h[2]=T[4]^T[1]>>>16^T[7]<<16,h[3]=T[6]^T[3]>>>16^T[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[B+C]^=h[C]},blockSize:128/32,ivSize:64/32});function y(){for(var w=this._X,B=this._C,T=0;T<8;T++)g[T]=B[T];B[0]=B[0]+1295307597+this._b|0,B[1]=B[1]+3545052371+(B[0]>>>0>>0?1:0)|0,B[2]=B[2]+886263092+(B[1]>>>0>>0?1:0)|0,B[3]=B[3]+1295307597+(B[2]>>>0>>0?1:0)|0,B[4]=B[4]+3545052371+(B[3]>>>0>>0?1:0)|0,B[5]=B[5]+886263092+(B[4]>>>0>>0?1:0)|0,B[6]=B[6]+1295307597+(B[5]>>>0>>0?1:0)|0,B[7]=B[7]+3545052371+(B[6]>>>0>>0?1:0)|0,this._b=B[7]>>>0>>0?1:0;for(var T=0;T<8;T++){var C=w[T]+B[T],k=C&65535,D=C>>>16,P=((k*k>>>17)+k*D>>>15)+D*D,S=((C&4294901760)*C|0)+((C&65535)*C|0);m[T]=P^S}w[0]=m[0]+(m[7]<<16|m[7]>>>16)+(m[6]<<16|m[6]>>>16)|0,w[1]=m[1]+(m[0]<<8|m[0]>>>24)+m[7]|0,w[2]=m[2]+(m[1]<<16|m[1]>>>16)+(m[0]<<16|m[0]>>>16)|0,w[3]=m[3]+(m[2]<<8|m[2]>>>24)+m[1]|0,w[4]=m[4]+(m[3]<<16|m[3]>>>16)+(m[2]<<16|m[2]>>>16)|0,w[5]=m[5]+(m[4]<<8|m[4]>>>24)+m[3]|0,w[6]=m[6]+(m[5]<<16|m[5]>>>16)+(m[4]<<16|m[4]>>>16)|0,w[7]=m[7]+(m[6]<<8|m[6]>>>24)+m[5]|0}l.RabbitLegacy=f._createHelper(v)})(),o.RabbitLegacy})})(Ec)),Ec.exports}var kc={exports:{}},EC=kc.exports,Jm;function kC(){return Jm||(Jm=1,(function(r,a){(function(o,l,d){r.exports=l(dt(),$o(),Yo(),fo(),pn())})(EC,function(o){return(function(){var l=o,d=l.lib,f=d.BlockCipher,p=l.algo;const h=16,g=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],m=[[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 v={pbox:[],sbox:[]};function y(k,D){let P=D>>24&255,S=D>>16&255,N=D>>8&255,I=D&255,z=k.sbox[0][P]+k.sbox[1][S];return z=z^k.sbox[2][N],z=z+k.sbox[3][I],z}function w(k,D,P){let S=D,N=P,I;for(let z=0;z1;--z)S=S^k.pbox[z],N=y(k,S)^N,I=S,S=N,N=I;return I=S,S=N,N=I,N=N^k.pbox[1],S=S^k.pbox[0],{left:S,right:N}}function T(k,D,P){for(let H=0;H<4;H++){k.sbox[H]=[];for(let j=0;j<256;j++)k.sbox[H][j]=m[H][j]}let S=0;for(let H=0;H=P&&(S=0);let N=0,I=0,z=0;for(let H=0;H=0&&(I=I.substring(0,z));const H=I.indexOf(": ");let j,ee;if(H>0&&H<50){const Z=I.substring(0,H);/[:\[\]]/.test(Z)?ee=I:(j=Z,ee=I.substring(H+2))}else ee=I;return{success:!0,data:{timestamp:D,flags:P,sender:j,message:ee}}}catch(h){return{success:!1,error:h instanceof Error?h.message:"Decryption failed"}}}static calculateChannelHash(d){const f=(0,r.SHA256)(r.enc.Hex.parse(d));return(0,a.hexToBytes)(f.toString(r.enc.Hex))[0].toString(16).padStart(2,"0")}}return Qa.ChannelCrypto=o,Qa}var ng;function kx(){if(ng)return Ka;ng=1,Object.defineProperty(Ka,"__esModule",{value:!0}),Ka.MeshCoreKeyStore=void 0;const r=M0();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(([d,f])=>{this.addNodeKey(d,f)})}addNodeKey(l,d){const f=l.toUpperCase();this.nodeKeys.set(f,d)}hasChannelKey(l){const d=l.toLowerCase();return this.channelHashToKeys.has(d)}hasNodeKey(l){const d=l.toUpperCase();return this.nodeKeys.has(d)}getChannelKeys(l){const d=l.toLowerCase();return this.channelHashToKeys.get(d)||[]}getNodeKey(l){const d=l.toUpperCase();return this.nodeKeys.get(d)}addChannelSecrets(l){for(const d of l){const f=r.ChannelCrypto.calculateChannelHash(d).toLowerCase();this.channelHashToKeys.has(f)||this.channelHashToKeys.set(f,[]),this.channelHashToKeys.get(f).push(d)}}}return Ka.MeshCoreKeyStore=a,Ka}var $a={},Dr={};/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Sx={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Bn,n:Sc,Gx:rg,Gy:ig,a:Gf,d:Kf}=Sx,BC=8n,ei=32,cl=64,or=(r="")=>{throw new Error(r)},PC=r=>typeof r=="bigint",Bx=r=>typeof r=="string",TC=r=>r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array",Qo=(r,a)=>!TC(r)||typeof a=="number"&&a>0&&r.length!==a?or("Uint8Array expected"):r,id=r=>new Uint8Array(r),I0=r=>Uint8Array.from(r),Px=(r,a)=>r.toString(16).padStart(a,"0"),O0=r=>Array.from(Qo(r)).map(a=>Px(a,2)).join(""),Ci={_0:48,_9:57,A:65,F:70,a:97,f:102},og=r=>{if(r>=Ci._0&&r<=Ci._9)return r-Ci._0;if(r>=Ci.A&&r<=Ci.F)return r-(Ci.A-10);if(r>=Ci.a&&r<=Ci.f)return r-(Ci.a-10)},j0=r=>{const a="hex invalid";if(!Bx(r))return or(a);const o=r.length,l=o/2;if(o%2)return or(a);const d=id(l);for(let f=0,p=0;fQo(Bx(r)?j0(r):I0(Qo(r)),a),Tx=()=>globalThis==null?void 0:globalThis.crypto,DC=()=>{var r;return((r=Tx())==null?void 0:r.subtle)??or("crypto.subtle must be defined")},dl=(...r)=>{const a=id(r.reduce((l,d)=>l+Qo(d).length,0));let o=0;return r.forEach(l=>{a.set(l,o),o+=l.length}),a},Dx=(r=ei)=>Tx().getRandomValues(id(r)),Lc=BigInt,Wo=(r,a,o,l="bad number: out of range")=>PC(r)&&a<=r&&r{const o=r%a;return o>=0n?o:a+o},Rx=r=>je(r,Sc),Fx=(r,a)=>{(r===0n||a<=0n)&&or("no inverse n="+r+" mod="+a);let o=je(r,a),l=a,d=0n,f=1n;for(;o!==0n;){const p=l/o,h=l%o,g=d-f*p;l=o,o=h,d=f,f=g}return l===1n?je(d,a):or("no inverse")},RC=r=>{const a=q0[r];return typeof a!="function"&&or("hashes."+r+" not set"),a},sg=r=>r instanceof Nr?r:or("Point expected"),u0=2n**256n,$r=class $r{constructor(a,o,l,d){Oo(this,"ex");Oo(this,"ey");Oo(this,"ez");Oo(this,"et");const f=u0;this.ex=Wo(a,0n,f),this.ey=Wo(o,0n,f),this.ez=Wo(l,1n,f),this.et=Wo(d,0n,f),Object.freeze(this)}static fromAffine(a){return new $r(a.x,a.y,1n,je(a.x*a.y))}static fromBytes(a,o=!1){const l=Kf,d=I0(Qo(a,ei)),f=a[31];d[31]=f&-129;const p=z0(d);Wo(p,0n,o?u0:Bn);const g=je(p*p),m=je(g-1n),v=je(l*g+1n);let{isValid:y,value:w}=NC(m,v);y||or("bad point: y not sqrt");const B=(w&1n)===1n,T=(f&128)!==0;return!o&&w===0n&&T&&or("bad point: x==0, isLastByteOdd"),T!==B&&(w=je(-w)),new $r(w,p,1n,je(w*p))}assertValidity(){const a=Gf,o=Kf,l=this;if(l.is0())throw new Error("bad point: ZERO");const{ex:d,ey:f,ez:p,et:h}=l,g=je(d*d),m=je(f*f),v=je(p*p),y=je(v*v),w=je(g*a),B=je(v*je(w+m)),T=je(y+je(o*je(g*m)));if(B!==T)throw new Error("bad point: equation left != right (1)");const C=je(d*f),k=je(p*h);if(C!==k)throw new Error("bad point: equation left != right (2)");return this}equals(a){const{ex:o,ey:l,ez:d}=this,{ex:f,ey:p,ez:h}=sg(a),g=je(o*h),m=je(f*d),v=je(l*h),y=je(p*d);return g===m&&v===y}is0(){return this.equals(Ws)}negate(){return new $r(je(-this.ex),this.ey,this.ez,je(-this.et))}double(){const{ex:a,ey:o,ez:l}=this,d=Gf,f=je(a*a),p=je(o*o),h=je(2n*je(l*l)),g=je(d*f),m=a+o,v=je(je(m*m)-f-p),y=g+p,w=y-h,B=g-p,T=je(v*w),C=je(y*B),k=je(v*B),D=je(w*y);return new $r(T,C,D,k)}add(a){const{ex:o,ey:l,ez:d,et:f}=this,{ex:p,ey:h,ez:g,et:m}=sg(a),v=Gf,y=Kf,w=je(o*p),B=je(l*h),T=je(f*y*m),C=je(d*g),k=je((o+l)*(p+h)-w-B),D=je(C-T),P=je(C+T),S=je(B-v*w),N=je(k*D),I=je(P*S),z=je(k*S),H=je(D*P);return new $r(N,I,H,z)}multiply(a,o=!0){if(!o&&(a===0n||this.is0()))return Ws;if(Wo(a,1n,Sc),a===1n)return this;if(this.equals(ki))return ZC(a).p;let l=Ws,d=ki;for(let f=this;a>0n;f=f.double(),a>>=1n)a&1n?l=l.add(f):o&&(d=d.add(f));return l}toAffine(){const{ex:a,ey:o,ez:l}=this;if(this.equals(Ws))return{x:0n,y:1n};const d=Fx(l,Bn);return je(l*d)!==1n&&or("invalid inverse"),{x:je(a*d),y:je(o*d)}}toBytes(){const{x:a,y:o}=this.assertValidity().toAffine(),l=Nx(o);return l[31]|=a&1n?128:0,l}toHex(){return O0(this.toBytes())}clearCofactor(){return this.multiply(Lc(BC),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let a=this.multiply(Sc/2n,!1).double();return Sc%2n&&(a=a.add(this)),a.is0()}static fromHex(a,o){return $r.fromBytes(co(a),o)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}toRawBytes(){return this.toBytes()}};Oo($r,"BASE"),Oo($r,"ZERO");let Nr=$r;const ki=new Nr(rg,ig,1n,je(rg*ig)),Ws=new Nr(0n,1n,1n,0n);Nr.BASE=ki;Nr.ZERO=Ws;const Nx=r=>j0(Px(Wo(r,0n,u0),cl)).reverse(),z0=r=>Lc("0x"+O0(I0(Qo(r)).reverse())),Qr=(r,a)=>{let o=r;for(;a-- >0n;)o*=o,o%=Bn;return o},FC=r=>{const o=r*r%Bn*r%Bn,l=Qr(o,2n)*o%Bn,d=Qr(l,1n)*r%Bn,f=Qr(d,5n)*d%Bn,p=Qr(f,10n)*f%Bn,h=Qr(p,20n)*p%Bn,g=Qr(h,40n)*h%Bn,m=Qr(g,80n)*g%Bn,v=Qr(m,80n)*g%Bn,y=Qr(v,10n)*f%Bn;return{pow_p_5_8:Qr(y,2n)*r%Bn,b2:o}},ag=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,NC=(r,a)=>{const o=je(a*a*a),l=je(o*o*a),d=FC(r*l).pow_p_5_8;let f=je(r*o*d);const p=je(a*f*f),h=f,g=je(f*ag),m=p===r,v=p===je(-r),y=p===je(-r*ag);return m&&(f=h),(v||y)&&(f=g),(je(f)&1n)===1n&&(f=je(-f)),{isValid:m||v,value:f}},Mc=r=>Rx(z0(r)),H0=(...r)=>q0.sha512Async(...r),V0=(...r)=>RC("sha512Sync")(...r),Lx=r=>{const a=r.slice(0,ei);a[0]&=248,a[31]&=127,a[31]|=64;const o=r.slice(ei,cl),l=Mc(a),d=ki.multiply(l),f=d.toBytes();return{head:a,prefix:o,scalar:l,point:d,pointBytes:f}},U0=r=>H0(co(r,ei)).then(Lx),Z0=r=>Lx(V0(co(r,ei))),LC=r=>U0(r).then(a=>a.pointBytes),MC=r=>Z0(r).pointBytes,Mx=r=>H0(r.hashable).then(r.finish),Ix=r=>r.finish(V0(r.hashable)),Ox=(r,a,o)=>{const{pointBytes:l,scalar:d}=r,f=Mc(a),p=ki.multiply(f).toBytes();return{hashable:dl(p,l,o),finish:m=>{const v=Rx(f+Mc(m)*d);return Qo(dl(p,Nx(v)),cl)}}},IC=async(r,a)=>{const o=co(r),l=await U0(a),d=await H0(l.prefix,o);return Mx(Ox(l,d,o))},OC=(r,a)=>{const o=co(r),l=Z0(a),d=V0(l.prefix,o);return Ix(Ox(l,d,o))},W0={zip215:!0},jx=(r,a,o,l=W0)=>{r=co(r,cl),a=co(a),o=co(o,ei);const{zip215:d}=l;let f,p,h,g,m=Uint8Array.of();try{f=Nr.fromHex(o,d),p=Nr.fromHex(r.slice(0,ei),d),h=z0(r.slice(ei,cl)),g=ki.multiply(h,!1),m=dl(p.toBytes(),f.toBytes(),a)}catch{}return{hashable:m,finish:y=>{if(g==null||!d&&f.isSmallOrder())return!1;const w=Mc(y);return p.add(f.multiply(w,!1)).add(g.negate()).clearCofactor().is0()}}},jC=async(r,a,o,l=W0)=>Mx(jx(r,a,o,l)),zC=(r,a,o,l=W0)=>Ix(jx(r,a,o,l)),q0={sha512Async:async(...r)=>{const a=DC(),o=dl(...r);return id(await a.digest("SHA-512",o.buffer))},sha512Sync:void 0,bytesToHex:O0,hexToBytes:j0,concatBytes:dl,mod:je,invert:Fx,randomBytes:Dx},HC={getExtendedPublicKeyAsync:U0,getExtendedPublicKey:Z0,randomPrivateKey:()=>Dx(ei),precompute:(r=8,a=ki)=>(a.multiply(3n),a)},Ic=8,VC=256,zx=Math.ceil(VC/Ic)+1,c0=2**(Ic-1),UC=()=>{const r=[];let a=ki,o=a;for(let l=0;l{const o=a.negate();return r?o:a},ZC=r=>{const a=lg||(lg=UC());let o=Ws,l=ki;const d=2**Ic,f=d,p=Lc(d-1),h=Lc(Ic);for(let g=0;g>=h,m>c0&&(m-=f,r+=1n);const v=g*c0,y=v,w=v+Math.abs(m)-1,B=g%2!==0,T=m<0;m===0?l=l.add(ug(B,a[y])):o=o.add(ug(T,a[w]))}return{p:o,f:l}},WC=Object.freeze(Object.defineProperty({__proto__:null,CURVE:Sx,ExtendedPoint:Nr,Point:Nr,etc:q0,getPublicKey:MC,getPublicKeyAsync:LC,sign:OC,signAsync:IC,utils:HC,verify:zC,verifyAsync:jC},Symbol.toStringTag,{value:"Module"})),qC=Mg(WC);var Vo={},Qf={exports:{}},cg;function GC(){return cg||(cg=1,(function(r,a){var o=(()=>{var d;var l=typeof document<"u"?(d=document.currentScript)==null?void 0:d.src:void 0;return(async function(f={}){var yn;var p,h=f,g=typeof window=="object",m=typeof WorkerGlobalScope<"u",v=typeof process=="object"&&((yn=process.versions)==null?void 0:yn.node)&&process.type!="renderer";typeof __filename<"u"?l=__filename:m&&(l=self.location.href);var y="";function w(ge){return h.locateFile?h.locateFile(ge,y):y+ge}var B,T;if(v){var C=Nc;y=__dirname+"/",T=ge=>{ge=S(ge)?new URL(ge):ge;var be=C.readFileSync(ge);return be},B=async(ge,be=!0)=>{ge=S(ge)?new URL(ge):ge;var De=C.readFileSync(ge,be?void 0:"utf8");return De},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2)}else if(g||m){try{y=new URL(".",l).href}catch{}m&&(T=ge=>{var be=new XMLHttpRequest;return be.open("GET",ge,!1),be.responseType="arraybuffer",be.send(null),new Uint8Array(be.response)}),B=async ge=>{if(S(ge))return new Promise((De,re)=>{var me=new XMLHttpRequest;me.open("GET",ge,!0),me.responseType="arraybuffer",me.onload=()=>{if(me.status==200||me.status==0&&me.response){De(me.response);return}re(me.status)},me.onerror=re,me.send(null)});var be=await fetch(ge,{credentials:"same-origin"});if(be.ok)return be.arrayBuffer();throw new Error(be.status+" : "+be.url)}}console.log.bind(console);var k=console.error.bind(console),D,P=!1,S=ge=>ge.startsWith("file://"),N,I,z,H,j,ee=!1;function Z(){var ge=z.buffer;h.HEAP8=H=new Int8Array(ge),h.HEAPU8=j=new Uint8Array(ge),h.HEAP32=new Int32Array(ge),h.HEAPU32=new Uint32Array(ge),new BigInt64Array(ge),new BigUint64Array(ge)}function V(){if(h.preRun)for(typeof h.preRun=="function"&&(h.preRun=[h.preRun]);h.preRun.length;)bt(h.preRun.shift());ke($e)}function ne(){ee=!0,Pt.b()}function J(){if(h.postRun)for(typeof h.postRun=="function"&&(h.postRun=[h.postRun]);h.postRun.length;)We(h.postRun.shift());ke(Ae)}var ie=0,he=null;function ae(ge){var be;ie++,(be=h.monitorRunDependencies)==null||be.call(h,ie)}function pe(ge){var De;if(ie--,(De=h.monitorRunDependencies)==null||De.call(h,ie),ie==0&&he){var be=he;he=null,be()}}function G(ge){var De;(De=h.onAbort)==null||De.call(h,ge),ge="Aborted("+ge+")",k(ge),P=!0,ge+=". Build with -sASSERTIONS for more info.";var be=new WebAssembly.RuntimeError(ge);throw I==null||I(be),be}var Y;function q(){return w("orlp-ed25519.wasm")}function R(ge){if(ge==Y&&D)return new Uint8Array(D);if(T)return T(ge);throw"both async and sync fetching of the wasm failed"}async function U(ge){if(!D)try{var be=await B(ge);return new Uint8Array(be)}catch{}return R(ge)}async function K(ge,be){try{var De=await U(ge),re=await WebAssembly.instantiate(De,be);return re}catch(me){k(`failed to asynchronously prepare wasm: ${me}`),G(me)}}async function $(ge,be,De){if(!ge&&typeof WebAssembly.instantiateStreaming=="function"&&!S(be)&&!v)try{var re=fetch(be,{credentials:"same-origin"}),me=await WebAssembly.instantiateStreaming(re,De);return me}catch(Se){k(`wasm streaming compile failed: ${Se}`),k("falling back to ArrayBuffer instantiation")}return K(be,De)}function de(){return{a:Wt}}async function fe(){function ge(Se,Ne){return Pt=Se.exports,z=Pt.a,Z(),Tn(Pt),pe(),Pt}ae();function be(Se){return ge(Se.instance)}var De=de();if(h.instantiateWasm)return new Promise((Se,Ne)=>{h.instantiateWasm(De,(Ve,$t)=>{Se(ge(Ve))})});Y??(Y=q());var re=await $(D,Y,De),me=be(re);return me}var ke=ge=>{for(;ge.length>0;)ge.shift()(h)},Ae=[],We=ge=>Ae.push(ge),$e=[],bt=ge=>$e.push(ge),ft=ge=>jt(ge),Be=()=>mn(),Ze=ge=>{var be=h["_"+ge];return be},lt=(ge,be)=>{H.set(ge,be)},Rt=ge=>{for(var be=0,De=0;De=55296&&re<=57343?(be+=4,++De):be+=3}return be},vt=(ge,be,De,re)=>{if(!(re>0))return 0;for(var me=De,Se=De+re-1,Ne=0;Ne=Se)break;be[De++]=Ve}else if(Ve<=2047){if(De+1>=Se)break;be[De++]=192|Ve>>6,be[De++]=128|Ve&63}else if(Ve<=65535){if(De+2>=Se)break;be[De++]=224|Ve>>12,be[De++]=128|Ve>>6&63,be[De++]=128|Ve&63}else{if(De+3>=Se)break;be[De++]=240|Ve>>18,be[De++]=128|Ve>>12&63,be[De++]=128|Ve>>6&63,be[De++]=128|Ve&63,Ne++}}return be[De]=0,De-me},ot=(ge,be,De)=>vt(ge,j,be,De),Qe=ge=>nn(ge),Xe=ge=>{var be=Rt(ge)+1,De=Qe(be);return ot(ge,De,be),De},xe=typeof TextDecoder<"u"?new TextDecoder:void 0,Te=(ge,be=0,De=NaN)=>{for(var re=be+De,me=be;ge[me]&&!(me>=re);)++me;if(me-be>16&&ge.buffer&&xe)return xe.decode(ge.subarray(be,me));for(var Se="";be>10,56320|Ue&1023)}}return Se},pt=(ge,be)=>ge?Te(j,ge,be):"",Zt=(ge,be,De,re,me)=>{var Se={string:it=>{var Et=0;return it!=null&&it!==0&&(Et=Xe(it)),Et},array:it=>{var Et=Qe(it.length);return lt(it,Et),Et}};function Ne(it){return be==="string"?pt(it):be==="boolean"?!!it:it}var Ve=Ze(ge),$t=[],Ue=0;if(re)for(var mt=0;mt{var me=!De||De.every(Ne=>Ne==="number"||Ne==="boolean"),Se=be!=="string";return Se&&me&&!re?Ze(ge):(...Ne)=>Zt(ge,be,De,Ne)};h.noExitRuntime&&h.noExitRuntime,h.print&&h.print,h.printErr&&(k=h.printErr),h.wasmBinary&&(D=h.wasmBinary),h.arguments&&h.arguments,h.thisProgram&&h.thisProgram,h.ccall=Zt,h.cwrap=tn;var jt,nn,mn;function Tn(ge){h._orlp_derive_public_key=ge.c,h._orlp_validate_keypair=ge.d,h._orlp_sign=ge.e,h._orlp_verify=ge.f,jt=ge.g,nn=ge.h,mn=ge.i}var Wt={},Pt=await fe();function qt(){if(ie>0){he=qt;return}if(V(),ie>0){he=qt;return}function ge(){var be;h.calledRun=!0,!P&&(ne(),N==null||N(h),(be=h.onRuntimeInitialized)==null||be.call(h),J())}h.setStatus?(h.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>h.setStatus(""),1),ge()},1)):ge()}function qn(){if(h.preInit)for(typeof h.preInit=="function"&&(h.preInit=[h.preInit]);h.preInit.length>0;)h.preInit.shift()()}return qn(),qt(),ee?p=h:p=new Promise((ge,be)=>{N=ge,I=be}),p})})();r.exports=o,r.exports.default=o})(Qf)),Qf.exports}var dg;function G0(){if(dg)return Vo;dg=1,Object.defineProperty(Vo,"__esModule",{value:!0}),Vo.derivePublicKey=l,Vo.validateKeyPair=d,Vo.sign=f,Vo.verify=p;const r=vn(),a=GC();async function o(){return await a()}async function l(h){const g=await o(),m=(0,r.hexToBytes)(h);if(m.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${m.length}`);const v=1024,y=1088;if(g.HEAPU8.set(m,v),g.ccall("orlp_derive_public_key","number",["number","number"],[y,v])!==0)throw new Error("orlp key derivation failed: invalid private key");const B=new Uint8Array(32);return B.set(g.HEAPU8.subarray(y,y+32)),(0,r.bytesToHex)(B)}async function d(h,g){try{const m=await o(),v=(0,r.hexToBytes)(h),y=(0,r.hexToBytes)(g);if(v.length!==64||y.length!==32)return!1;const w=2048,B=2112;return m.HEAPU8.set(v,w),m.HEAPU8.set(y,B),m.ccall("orlp_validate_keypair","number",["number","number"],[B,w])===1}catch{return!1}}async function f(h,g,m){const v=await o(),y=(0,r.hexToBytes)(h),w=(0,r.hexToBytes)(g),B=(0,r.hexToBytes)(m);if(w.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${w.length}`);if(B.length!==32)throw new Error(`Invalid public key length: expected 32 bytes, got ${B.length}`);const T=1e5,C=2e5,k=3e5,D=4e5;v.HEAPU8.set(y,T),v.HEAPU8.set(w,C),v.HEAPU8.set(B,k),v.ccall("orlp_sign","void",["number","number","number","number","number"],[D,T,y.length,k,C]);const P=new Uint8Array(64);return P.set(v.HEAPU8.subarray(D,D+64)),(0,r.bytesToHex)(P)}async function p(h,g,m){try{const v=await o(),y=(0,r.hexToBytes)(h),w=(0,r.hexToBytes)(g),B=(0,r.hexToBytes)(m);if(y.length!==64||B.length!==32)return!1;const T=5e5,C=6e5,k=7e5;return v.HEAPU8.set(y,C),v.HEAPU8.set(w,T),v.HEAPU8.set(B,k),v.ccall("orlp_verify","number",["number","number","number","number"],[C,T,w.length,k])===1}catch{return!1}}return Vo}var fg;function Hx(){if(fg)return Dr;fg=1;var r=Dr&&Dr.__createBinding||(Object.create?(function(m,v,y,w){w===void 0&&(w=y);var B=Object.getOwnPropertyDescriptor(v,y);(!B||("get"in B?!v.__esModule:B.writable||B.configurable))&&(B={enumerable:!0,get:function(){return v[y]}}),Object.defineProperty(m,w,B)}):(function(m,v,y,w){w===void 0&&(w=y),m[w]=v[y]})),a=Dr&&Dr.__setModuleDefault||(Object.create?(function(m,v){Object.defineProperty(m,"default",{enumerable:!0,value:v})}):function(m,v){m.default=v}),o=Dr&&Dr.__importStar||(function(){var m=function(v){return m=Object.getOwnPropertyNames||function(y){var w=[];for(var B in y)Object.prototype.hasOwnProperty.call(y,B)&&(w[w.length]=B);return w},m(v)};return function(v){if(v&&v.__esModule)return v;var y={};if(v!=null)for(var w=m(v),B=0;B>>24&255,B[T*4+1]=C>>>16&255,B[T*4+2]=C>>>8&255,B[T*4+3]=C&255}return B}catch{throw new Error("No SHA-512 implementation available for synchronous operation")}}l.etc.sha512Async=p;try{l.etc.sha512Sync=h}catch(m){console.debug("Could not set up synchronous SHA-512:",m)}class g{static async verifyAdvertisementSignature(v,y,w,B){try{const T=(0,d.hexToBytes)(v),C=(0,d.hexToBytes)(y),k=(0,d.hexToBytes)(B),D=this.constructAdvertSignedMessage(v,w,k);return await l.verify(C,D,T)}catch(T){return console.error("Ed25519 signature verification failed:",T),!1}}static constructAdvertSignedMessage(v,y,w){const B=(0,d.hexToBytes)(v),T=new Uint8Array(4);T[0]=y&255,T[1]=y>>8&255,T[2]=y>>16&255,T[3]=y>>24&255;const C=new Uint8Array(36+w.length);return C.set(B,0),C.set(T,32),C.set(w,36),C}static getSignedMessageDescription(v,y,w){return`Public Key: ${v} + Timestamp: ${y} (${new Date(y*1e3).toISOString()}) + App Data: ${w}`}static getSignedMessageHex(v,y,w){const B=(0,d.hexToBytes)(w),T=this.constructAdvertSignedMessage(v,y,B);return(0,d.bytesToHex)(T)}static async derivePublicKey(v){try{const y=(0,d.hexToBytes)(v);if(y.length!==64)throw new Error(`Invalid private key length: expected 64 bytes, got ${y.length}`);return await(0,f.derivePublicKey)(v)}catch(y){throw new Error(`Failed to derive public key: ${y instanceof Error?y.message:"Unknown error"}`)}}static derivePublicKeySync(v){try{const y=(0,d.hexToBytes)(v);throw y.length!==64?new Error(`Invalid private key length: expected 64 bytes, got ${y.length}`):new Error("Synchronous key derivation not supported with WASM. Use derivePublicKey() instead.")}catch(y){throw new Error(`Failed to derive public key: ${y instanceof Error?y.message:"Unknown error"}`)}}static async validateKeyPair(v,y){try{return await(0,f.validateKeyPair)(v,y)}catch{return!1}}}return Dr.Ed25519SignatureVerifier=g,Dr}var hg;function KC(){if(hg)return $a;hg=1,Object.defineProperty($a,"__esModule",{value:!0}),$a.AdvertPayloadDecoder=void 0;const r=sr(),a=vn(),o=ul(),l=Hx();class d{static decode(p,h){try{if(p.length<101){const D={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&&(D.segments=[{name:"Invalid Advert Data",description:"Advert payload too short (minimum 101 bytes required)",startByte:h.segmentOffset||0,endByte:(h.segmentOffset||0)+p.length-1,value:(0,a.bytesToHex)(p)}]),D}const g=[],m=(h==null?void 0:h.segmentOffset)||0;let v=0;const y=(0,a.bytesToHex)(p.subarray(v,v+32));h!=null&&h.includeSegments&&g.push({name:"Public Key",description:"Ed25519 public key",startByte:m+v,endByte:m+v+31,value:y}),v+=32;const w=this.readUint32LE(p,v);if(h!=null&&h.includeSegments){const D=new Date(w*1e3);g.push({name:"Timestamp",description:`${w} (${D.toISOString().slice(0,19)}Z)`,startByte:m+v,endByte:m+v+3,value:(0,a.bytesToHex)(p.subarray(v,v+4))})}v+=4;const B=(0,a.bytesToHex)(p.subarray(v,v+64));h!=null&&h.includeSegments&&g.push({name:"Signature",description:"Ed25519 signature",startByte:m+v,endByte:m+v+63,value:B}),v+=64;const T=p[v];if(h!=null&&h.includeSegments){const D=T.toString(2).padStart(8,"0"),P=this.parseDeviceRole(T),N=` | Bits 0-3 (Role): ${(0,o.getDeviceRoleName)(P)} | Bit 4 (Location): ${T&r.AdvertFlags.HasLocation?"Yes":"No"} | Bit 7 (Name): ${T&r.AdvertFlags.HasName?"Yes":"No"}`;g.push({name:"App Flags",description:`Binary: ${D}${N}`,startByte:m+v,endByte:m+v,value:T.toString(16).padStart(2,"0").toUpperCase()})}v+=1;const C={type:r.PayloadType.Advert,version:r.PayloadVersion.Version1,isValid:!0,publicKey:y,timestamp:w,signature:B,appData:{flags:T,deviceRole:this.parseDeviceRole(T),hasLocation:!!(T&r.AdvertFlags.HasLocation),hasName:!!(T&r.AdvertFlags.HasName)}};let k=v;if(T&r.AdvertFlags.HasLocation&&p.length>=k+8){const D=this.readInt32LE(p,k)/1e6,P=this.readInt32LE(p,k+4)/1e6;C.appData.location={latitude:Math.round(D*1e6)/1e6,longitude:Math.round(P*1e6)/1e6},h!=null&&h.includeSegments&&(g.push({name:"Latitude",description:`${D}° (${D})`,startByte:m+k,endByte:m+k+3,value:(0,a.bytesToHex)(p.subarray(k,k+4))}),g.push({name:"Longitude",description:`${P}° (${P})`,startByte:m+k+4,endByte:m+k+7,value:(0,a.bytesToHex)(p.subarray(k+4,k+8))})),k+=8}if(T&r.AdvertFlags.HasFeature1&&(k+=2),T&r.AdvertFlags.HasFeature2&&(k+=2),T&r.AdvertFlags.HasName&&p.length>k){const D=p.subarray(k),P=new TextDecoder("utf-8").decode(D).replace(/\0.*$/,"");C.appData.name=this.sanitizeControlCharacters(P)||P,h!=null&&h.includeSegments&&g.push({name:"Node Name",description:`Node name: "${C.appData.name}"`,startByte:m+k,endByte:m+p.length-1,value:(0,a.bytesToHex)(D)})}return h!=null&&h.includeSegments&&(C.segments=g),C}catch(g){return{type:r.PayloadType.Advert,version:r.PayloadVersion.Version1,isValid:!1,errors:[g instanceof Error?g.message:"Failed to decode advertisement payload"],publicKey:"",timestamp:0,signature:"",appData:{flags:0,deviceRole:r.DeviceRole.ChatNode,hasLocation:!1,hasName:!1}}}}static async decodeWithVerification(p,h){const g=this.decode(p,h);if(!g||!g.isValid)return g;try{const v=p.subarray(100),y=(0,a.bytesToHex)(v),w=await l.Ed25519SignatureVerifier.verifyAdvertisementSignature(g.publicKey,g.signature,g.timestamp,y);g.signatureValid=w,w||(g.signatureError="Ed25519 signature verification failed",g.isValid=!1,g.errors||(g.errors=[]),g.errors.push("Invalid Ed25519 signature"))}catch(m){g.signatureValid=!1,g.signatureError=m instanceof Error?m.message:"Signature verification error",g.isValid=!1,g.errors||(g.errors=[]),g.errors.push("Signature verification failed: "+(m instanceof Error?m.message:"Unknown error"))}return g}static parseDeviceRole(p){switch(p&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(p,h){return p[h]|p[h+1]<<8|p[h+2]<<16|p[h+3]<<24}static readInt32LE(p,h){const g=this.readUint32LE(p,h);return g>2147483647?g-4294967296:g}static sanitizeControlCharacters(p){return p&&p.trim().replace(/[\x00-\x1F\x7F]/g,"")||null}}return $a.AdvertPayloadDecoder=d,$a}var Ya={},pg;function QC(){if(pg)return Ya;pg=1,Object.defineProperty(Ya,"__esModule",{value:!0}),Ya.TracePayloadDecoder=void 0;const r=sr(),a=vn();class o{static decode(d,f,p){try{if(d.length<9){const P={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 p!=null&&p.includeSegments&&(P.segments=[{name:"Invalid Trace Data",description:"Trace payload too short (minimum 9 bytes required)",startByte:p.segmentOffset||0,endByte:(p.segmentOffset||0)+d.length-1,value:(0,a.bytesToHex)(d)}]),P}let h=0;const g=[],m=(p==null?void 0:p.segmentOffset)||0,v=this.readUint32LE(d,h),y=(0,a.numberToHex)(v,8);p!=null&&p.includeSegments&&g.push({name:"Trace Tag",description:`Unique identifier for this trace: 0x${v.toString(16).padStart(8,"0")}`,startByte:m+h,endByte:m+h+3,value:(0,a.bytesToHex)(d.slice(h,h+4))}),h+=4;const w=this.readUint32LE(d,h);p!=null&&p.includeSegments&&g.push({name:"Auth Code",description:`Authentication/verification code: ${w}`,startByte:m+h,endByte:m+h+3,value:(0,a.bytesToHex)(d.slice(h,h+4))}),h+=4;const B=d[h];p!=null&&p.includeSegments&&g.push({name:"Flags",description:`Application-defined control flags: 0x${B.toString(16).padStart(2,"0")} (${B.toString(2).padStart(8,"0")}b)`,startByte:m+h,endByte:m+h,value:B.toString(16).padStart(2,"0").toUpperCase()}),h+=1;const T=[],C=h;for(;h0){const P=T.join(" ");g.push({name:"Path Hashes",description:`Node hashes in trace path: ${P}`,startByte:m+C,endByte:m+d.length-1,value:(0,a.bytesToHex)(d.slice(C))})}let k;f&&f.length>0&&(k=f.map(P=>{const S=parseInt(P,16);return(S>127?S-256:S)/4}));const D={type:r.PayloadType.Trace,version:r.PayloadVersion.Version1,isValid:!0,traceTag:y,authCode:w,flags:B,pathHashes:T,snrValues:k};return p!=null&&p.includeSegments&&(D.segments=g),D}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(d,f){return d[f]|d[f+1]<<8|d[f+2]<<16|d[f+3]<<24}}return Ya.TracePayloadDecoder=o,Ya}var Xa={},mg;function $C(){if(mg)return Xa;mg=1,Object.defineProperty(Xa,"__esModule",{value:!0}),Xa.GroupTextPayloadDecoder=void 0;const r=sr(),a=M0(),o=vn();class l{static decode(f,p){try{if(f.length<3){const T={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 p!=null&&p.includeSegments&&(T.segments=[{name:"Invalid GroupText Data",description:"GroupText payload too short (minimum 3 bytes required)",startByte:p.segmentOffset||0,endByte:(p.segmentOffset||0)+f.length-1,value:(0,o.bytesToHex)(f)}]),T}const h=[],g=(p==null?void 0:p.segmentOffset)||0;let m=0;const v=(0,o.byteToHex)(f[m]);p!=null&&p.includeSegments&&h.push({name:"Channel Hash",description:"First byte of SHA256 of channel's shared key",startByte:g+m,endByte:g+m,value:v}),m+=1;const y=(0,o.bytesToHex)(f.subarray(m,m+2));p!=null&&p.includeSegments&&h.push({name:"Cipher MAC",description:"MAC for encrypted data",startByte:g+m,endByte:g+m+1,value:y}),m+=2;const w=(0,o.bytesToHex)(f.subarray(m));p!=null&&p.includeSegments&&f.length>m&&h.push({name:"Ciphertext",description:"Encrypted message content (timestamp + flags + message)",startByte:g+m,endByte:g+f.length-1,value:w});const B={type:r.PayloadType.GroupText,version:r.PayloadVersion.Version1,isValid:!0,channelHash:v,cipherMac:y,ciphertext:w,ciphertextLength:f.length-3};if(p!=null&&p.keyStore&&p.keyStore.hasChannelKey(v)){const T=p.keyStore.getChannelKeys(v);for(const C of T){const k=a.ChannelCrypto.decryptGroupTextMessage(w,y,C);if(k.success&&k.data){B.decrypted={timestamp:k.data.timestamp,flags:k.data.flags,sender:k.data.sender,message:k.data.message};break}}}return p!=null&&p.includeSegments&&(B.segments=h),B}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 Xa.GroupTextPayloadDecoder=l,Xa}var Ja={},gg;function YC(){if(gg)return Ja;gg=1,Object.defineProperty(Ja,"__esModule",{value:!0}),Ja.RequestPayloadDecoder=void 0;const r=sr(),a=vn();class o{static decode(d,f){try{if(d.length<4){const T={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 f!=null&&f.includeSegments&&(T.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:f.segmentOffset||0,endByte:(f.segmentOffset||0)+d.length-1,value:(0,a.bytesToHex)(d)}]),T}const p=[],h=(f==null?void 0:f.segmentOffset)||0;let g=0;const m=(0,a.bytesToHex)(d.subarray(g,g+1));f!=null&&f.includeSegments&&p.push({name:"Destination Hash",description:`First byte of destination node public key: 0x${m}`,startByte:h+g,endByte:h+g,value:m}),g+=1;const v=(0,a.bytesToHex)(d.subarray(g,g+1));f!=null&&f.includeSegments&&p.push({name:"Source Hash",description:`First byte of source node public key: 0x${v}`,startByte:h+g,endByte:h+g,value:v}),g+=1;const y=(0,a.bytesToHex)(d.subarray(g,g+2));f!=null&&f.includeSegments&&p.push({name:"Cipher MAC",description:"MAC for encrypted data verification (2 bytes)",startByte:h+g,endByte:h+g+1,value:y}),g+=2;const w=(0,a.bytesToHex)(d.subarray(g));f!=null&&f.includeSegments&&d.length>g&&p.push({name:"Ciphertext",description:`Encrypted message data (${d.length-g} 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+g,endByte:h+d.length-1,value:w});const B={type:r.PayloadType.Request,version:r.PayloadVersion.Version1,isValid:!0,timestamp:0,requestType:r.RequestType.GetStats,requestData:"",destinationHash:m,sourceHash:v,cipherMac:y,ciphertext:w};return f!=null&&f.includeSegments&&(B.segments=p),B}catch(p){return{type:r.PayloadType.Request,version:r.PayloadVersion.Version1,isValid:!1,errors:[p instanceof Error?p.message:"Failed to decode request payload"],timestamp:0,requestType:r.RequestType.GetStats,requestData:"",destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:""}}}}return Ja.RequestPayloadDecoder=o,Ja}var el={},Ag;function XC(){if(Ag)return el;Ag=1,Object.defineProperty(el,"__esModule",{value:!0}),el.ResponsePayloadDecoder=void 0;const r=sr(),a=vn();class o{static decode(d,f){try{if(d.length<4){const T={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 f!=null&&f.includeSegments&&(T.segments=[{name:"Invalid Response Data",description:"Response payload too short (minimum 4 bytes required)",startByte:f.segmentOffset||0,endByte:(f.segmentOffset||0)+d.length-1,value:(0,a.bytesToHex)(d)}]),T}const p=[],h=(f==null?void 0:f.segmentOffset)||0;let g=0;const m=(0,a.byteToHex)(d[g]);f!=null&&f.includeSegments&&p.push({name:"Destination Hash",description:"First byte of destination node public key",startByte:h+g,endByte:h+g,value:m}),g+=1;const v=(0,a.byteToHex)(d[g]);f!=null&&f.includeSegments&&p.push({name:"Source Hash",description:"First byte of source node public key",startByte:h+g,endByte:h+g,value:v}),g+=1;const y=(0,a.bytesToHex)(d.subarray(g,g+2));f!=null&&f.includeSegments&&p.push({name:"Cipher MAC",description:"MAC for encrypted data in next field",startByte:h+g,endByte:h+g+1,value:y}),g+=2;const w=(0,a.bytesToHex)(d.subarray(g));f!=null&&f.includeSegments&&d.length>g&&p.push({name:"Ciphertext",description:"Encrypted response data (tag + content)",startByte:h+g,endByte:h+d.length-1,value:w});const B={type:r.PayloadType.Response,version:r.PayloadVersion.Version1,isValid:!0,destinationHash:m,sourceHash:v,cipherMac:y,ciphertext:w,ciphertextLength:d.length-4};return f!=null&&f.includeSegments&&(B.segments=p),B}catch(p){return{type:r.PayloadType.Response,version:r.PayloadVersion.Version1,isValid:!1,errors:[p instanceof Error?p.message:"Failed to decode response payload"],destinationHash:"",sourceHash:"",cipherMac:"",ciphertext:"",ciphertextLength:0}}}}return el.ResponsePayloadDecoder=o,el}var tl={},xg;function JC(){if(xg)return tl;xg=1,Object.defineProperty(tl,"__esModule",{value:!0}),tl.AnonRequestPayloadDecoder=void 0;const r=sr(),a=vn();class o{static decode(d,f){try{if(d.length<35){const T={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 f!=null&&f.includeSegments&&(T.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:f.segmentOffset||0,endByte:(f.segmentOffset||0)+d.length-1,value:(0,a.bytesToHex)(d)}]),T}const p=[],h=(f==null?void 0:f.segmentOffset)||0;let g=0;const m=(0,a.byteToHex)(d[0]);f!=null&&f.includeSegments&&p.push({name:"Destination Hash",description:`First byte of destination node public key: 0x${m}`,startByte:h+g,endByte:h+g,value:m}),g+=1;const v=(0,a.bytesToHex)(d.subarray(1,33));f!=null&&f.includeSegments&&p.push({name:"Sender Public Key",description:"Ed25519 public key of the sender (32 bytes)",startByte:h+g,endByte:h+g+31,value:v}),g+=32;const y=(0,a.bytesToHex)(d.subarray(33,35));f!=null&&f.includeSegments&&p.push({name:"Cipher MAC",description:"MAC for encrypted data verification (2 bytes)",startByte:h+g,endByte:h+g+1,value:y}),g+=2;const w=(0,a.bytesToHex)(d.subarray(35));f!=null&&f.includeSegments&&d.length>35&&p.push({name:"Ciphertext",description:`Encrypted message data (${d.length-35} bytes). Contains encrypted plaintext with this structure: @@ -538,5 +538,5 @@ fn main(@builtin(global_invocation_id) global_id: vec3) { 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 Yf=d,Yf}var bE=wE();const CE=Xs(bE);function EE(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 Be=new yE;J.current=Be,j(Be.isGpuAvailable());const Ze=new CE;return ie.current=Ze,()=>{Be.destroy(),J.current=null,Ze.disable(),ie.current=null}},[]),F.useEffect(()=>{!d||I||xb(async()=>{const{ENGLISH_WORDLIST:Be}=await import("./wordlist-BtmChKSf.js");return{ENGLISH_WORDLIST:Be}},[]).then(({ENGLISH_WORDLIST:Be})=>{J.current&&(J.current.setWordlist(Be),z(!0))}).catch(Be=>{console.error("Failed to load wordlist:",Be),bt.error("Failed to load wordlist",{description:"Cracking will not be available"})})},[d,I]),F.useEffect(()=>{const Be=()=>{rt.getUndecryptedPacketCount().then(({count:lt})=>Z(lt)).catch(()=>Z(null))};Be();const Ze=setInterval(Be,3e4);return()=>clearInterval(Ze)},[]);const de=F.useMemo(()=>new Set(a.map(Be=>Be.key.toUpperCase())),[a]),fe=r.filter(Be=>Be.payload_type==="GROUP_TEXT"&&!Be.decrypted);F.useEffect(()=>{let Be=0;P(Ze=>{const lt=new Map(Ze);let Rt=!1;for(const vt of fe)if(!lt.has(vt.id)){const ot=EE(vt.data);if(ot&&$.current.has(ot)){Be++;continue}ot&&$.current.add(ot),lt.set(vt.id,{packet:vt,attempts:0,lastAttemptLength:0,status:"pending"}),Rt=!0}return Rt?(G.current=lt,lt):Ze}),Be>0&&ne(Ze=>Ze+Be)},[fe.length]),F.useEffect(()=>{G.current=D},[D]),F.useEffect(()=>{Y.current=m},[m]),F.useEffect(()=>{q.current=h},[h]),F.useEffect(()=>{R.current=y},[y]),F.useEffect(()=>{U.current=B},[B]),F.useEffect(()=>{K.current=new Set(fe.map(Be=>Be.id))},[fe]),F.useEffect(()=>{l==null||l(f)},[f,l]);const ke=Array.from(D.values()).filter(Be=>Be.status==="pending").length,Ae=Array.from(D.values()).filter(Be=>Be.status==="cracked").length,We=Array.from(D.values()).filter(Be=>Be.status==="failed").length,$e=F.useCallback(async()=>{if(pe.current||!J.current||!he.current)return;const Be=G.current;let Ze=null,lt=null;for(const[Qe,Xe]of Be.entries())if(Xe.status==="pending"){Ze=Xe,lt=Qe;break}if(!Ze&&Y.current){const Qe=Array.from(Be.entries()).filter(([,Xe])=>Xe.status==="failed"&&Xe.lastAttemptLength<10);Qe.length>0&&(Qe.sort((Xe,xe)=>Xe[1].lastAttemptLength-xe[1].lastAttemptLength),[lt,Ze]=Qe[0])}if(!Ze||lt===null){he.current&&setTimeout(()=>$e(),1e3);return}if(!K.current.has(lt)){P(Qe=>{const Xe=new Map(Qe);return Xe.delete(lt),Xe}),he.current&&setTimeout(()=>$e(),10);return}pe.current=!0;const Rt=q.current,vt=Ze.lastAttemptLength>0,ot=vt?Ze.lastAttemptLength+1:Rt;try{const Qe=await J.current.crack(Ze.packet.data,{maxLength:ot,useSenderFilter:!0,useTimestampFilter:!0,useUtf8Filter:!0,...U.current&&{gpuDispatchMs:1e4},...vt&&{useDictionary:!1,startingLength:ot}},Xe=>{k(Xe)});if(ae.current){ae.current=!1,pe.current=!1,k(null);return}if(Qe.found&&Qe.roomName&&Qe.key){P(Te=>{const pt=new Map(Te),Zt=pt.get(lt);return Zt&&pt.set(lt,{...Zt,status:"cracked",attempts:Zt.attempts+1,lastAttemptLength:ot}),pt});const Xe={roomName:Qe.roomName,key:Qe.key,packetId:lt,message:Qe.decryptedMessage||"",crackedAt:Date.now()};N(Te=>[...Te,Xe]);const xe=Qe.key.toUpperCase();if(!de.has(xe))try{const Te="#"+Qe.roomName;await o(Te,Qe.key),R.current&&await rt.decryptHistoricalPackets({key_type:"channel",channel_name:Te})}catch(Te){console.error("Failed to create channel or decrypt historical:",Te),bt.error("Failed to save cracked channel",{description:Te instanceof Error?Te.message:"Channel discovered but could not be saved"})}}else P(Xe=>{const xe=new Map(Xe),Te=xe.get(lt);return Te&&xe.set(lt,{...Te,status:"failed",attempts:Te.attempts+1,lastAttemptLength:ot}),xe})}catch(Qe){console.error("Cracking error:",Qe),P(Xe=>{const xe=new Map(Xe),Te=xe.get(lt);return Te&&xe.set(lt,{...Te,status:"failed",attempts:Te.attempts+1,lastAttemptLength:ot}),xe})}pe.current=!1,k(null),he.current&&setTimeout(()=>$e(),100)},[de,o]),wt=()=>{var Be;if(!H){bt.error("WebGPU not available",{description:"Cracking requires Chrome 113+ or Edge 113+ with WebGPU support."});return}p(!0),he.current=!0,ae.current=!1,(Be=ie.current)==null||Be.enable(),$e()},ft=()=>{var Be,Ze;p(!1),he.current=!1,ae.current=!0,(Be=J.current)==null||Be.abort(),(Ze=ie.current)==null||Ze.disable()};return b.jsxs("div",{className:"flex flex-col h-full p-3 gap-3 bg-background border-t border-border overflow-auto",children:[b.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("label",{className:"text-sm text-muted-foreground",children:"Max Length:"}),b.jsx("input",{type:"number",min:1,max:10,value:h,onChange:Be=>g(Math.min(10,Math.max(1,parseInt(Be.target.value)||6))),className:"w-14 px-2 py-1 text-sm bg-muted border border-border rounded"})]}),b.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[b.jsx("input",{type:"checkbox",checked:m,onChange:Be=>v(Be.target.checked),className:"rounded"}),"Retry failed at n+1"]}),b.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[b.jsx("input",{type:"checkbox",checked:y,onChange:Be=>w(Be.target.checked),className:"rounded"}),"Decrypt historical packets if key found"]}),y&&b.jsx("span",{className:"text-xs text-muted-foreground",children:ee!==null&&ee>0?`(${ee.toLocaleString()} packets; messages will stream in as decrypted)`:"(messages will stream in as decrypted)"}),b.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[b.jsx("input",{type:"checkbox",checked:B,onChange:Be=>T(Be.target.checked),className:"rounded"}),"Turbo mode (experimental)"]})]}),b.jsx("button",{onClick:f?ft:wt,disabled:!I||H===!1,className:at("w-48 px-4 py-1.5 rounded text-sm font-medium",f?"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:f?"Stop Search":H===!1?"GPU Not Available":I?"Find Rooms":"Loading dictionary..."}),b.jsxs("div",{className:"flex gap-4 text-sm",children:[b.jsxs("span",{className:"text-muted-foreground",children:["Pending: ",b.jsx("span",{className:"text-foreground font-medium",children:ke})]}),b.jsxs("span",{className:"text-muted-foreground",children:["Cracked: ",b.jsx("span",{className:"text-green-500 font-medium",children:Ae})]}),b.jsxs("span",{className:"text-muted-foreground",children:["Failed: ",b.jsx("span",{className:"text-destructive font-medium",children:We})]}),V>0&&b.jsxs("span",{className:"text-muted-foreground",children:["Skipped (dup):"," ",b.jsx("span",{className:"text-muted-foreground font-medium",children:V})]})]}),C&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[b.jsxs("span",{children:[C.phase==="wordlist"?"Dictionary":C.phase==="bruteforce"?"Bruteforce":"Public Key",C.phase==="bruteforce"&&` - Length ${C.currentLength}`,":"," ",C.currentPosition]}),b.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`]})]}),b.jsx("div",{className:"h-2 bg-muted rounded overflow-hidden",children:b.jsx("div",{className:"h-full bg-primary transition-all duration-200",style:{width:`${C.percent}%`}})})]}),H===!1&&b.jsx("div",{className:"text-sm text-destructive",children:"WebGPU not available. Cracking requires Chrome 113+ or Edge 113+."}),!I&&H!==!1&&b.jsx("div",{className:"text-sm text-muted-foreground",children:"Loading wordlist..."}),S.length>0&&b.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0",children:[b.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"Cracked Rooms:"}),b.jsx("div",{className:"space-y-1",children:S.map((Be,Ze)=>b.jsxs("div",{className:"text-sm bg-green-950/30 border border-green-900/50 rounded px-2 py-1",children:[b.jsxs("span",{className:"text-green-400 font-medium",children:["#",Be.roomName]}),b.jsxs("span",{className:"text-muted-foreground ml-2 text-xs",children:['"',Be.message.slice(0,50),Be.message.length>50?"...":"",'"']})]},Ze))})]}),b.jsx("hr",{className:"border-border"}),b.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["For unknown-keyed GroupText packets, this will attempt to dictionary attack, then brute force payloads as they arrive, testing room names up to the specified length to discover active rooms on the local mesh (GroupText packets may not be hashtag messages; we have no way of knowing but try as if they are).",b.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.",b.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.",b.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."]})]})}const SE=LA,BE=MA,qx=F.forwardRef(({className:r,...a},o)=>b.jsx(Uc,{className:at("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}));qx.displayName=Uc.displayName;const PE=b0("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"}}),Gx=F.forwardRef(({side:r="right",className:a,children:o,hideCloseButton:l=!1,...d},f)=>b.jsxs(BE,{children:[b.jsx(qx,{}),b.jsxs(Zc,{ref:f,className:at(PE({side:r}),a),...d,children:[!l&&b.jsxs(IA,{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:[b.jsx(Hg,{className:"h-4 w-4"}),b.jsx("span",{className:"sr-only",children:"Close"})]}),o]})]}));Gx.displayName=Zc.displayName;const Kx=({className:r,...a})=>b.jsx("div",{className:at("flex flex-col space-y-2 text-center sm:text-left",r),...a});Kx.displayName="SheetHeader";const Qx=F.forwardRef(({className:r,...a},o)=>b.jsx(Wc,{ref:o,className:at("text-lg font-semibold text-foreground",r),...a}));Qx.displayName=Wc.displayName;const TE=F.forwardRef(({className:r,...a},o)=>b.jsx(qc,{ref:o,className:at("text-sm text-muted-foreground",r),...a}));TE.displayName=qc.displayName;const Lg=500;function DE(){const r=F.useRef(null),a=F.useRef(null),o=F.useRef(new Set),[l,d]=F.useState(null),[f,p]=F.useState(null),[h,g]=F.useState(null),[m,v]=F.useState([]),[y,w]=F.useState([]),[B,T]=F.useState([]),[C,k]=F.useState(null),[D,P]=F.useState(!1),[S,N]=F.useState(!1),[I,z]=F.useState(!1),[H,j]=F.useState(0),[ee,Z]=F.useState(!1),[V,ne]=F.useState(!1),[J,ie]=F.useState(jc),he=F.useRef(null),ae=F.useRef(null);F.useEffect(()=>{ae.current=(f==null?void 0:f.name)??null},[f==null?void 0:f.name]);const pe=F.useCallback(re=>{const me=ae.current;if(!me)return!1;const Se=me.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`@\\[${Se}\\]`,"i").test(re)},[]),{messages:G,messagesLoading:Y,loadingOlder:q,hasOlderMessages:R,setMessages:U,fetchMessages:K,fetchOlderMessages:$,addMessageIfNew:de,updateMessageAck:fe}=Py(C),{unreadCounts:ke,mentions:Ae,lastMessageTimes:We,incrementUnread:$e,markAllRead:wt,trackNewMessage:ft}=ey(y,m,C,f==null?void 0:f.name),{repeaterLoggedIn:Be,activeContactIsRepeater:Ze,handleTelemetryRequest:lt,handleRepeaterCommand:Rt}=Yv(C,m,U),vt=F.useMemo(()=>({onHealth:re=>{const me=he.current;he.current=re,d(re),me!==null&&me.radio_connected!==re.radio_connected&&(re.radio_connected?(bt.success("Radio connected",{description:re.serial_port?`Connected to ${re.serial_port}`:void 0}),rt.getRadioConfig().then(p).catch(console.error)):bt.error("Radio disconnected",{description:"Check radio connection and power"}))},onError:re=>{bt.error(re.message,{description:re.details})},onContacts:re=>v(re),onChannels:re=>w(re),onMessage:re=>{const me=a.current,Se=me?re.type==="CHAN"&&me.type==="channel"?re.conversation_key===me.id:re.type==="PRIV"&&me.type==="contact"?re.conversation_key&&x0(me.id,re.conversation_key):!1:!1;if(Se&&de(re),ft(re),!re.outgoing&&!Se){const Ne=Vu(re);if(o.current.has(Ne))return;if(o.current.add(Ne),o.current.size>1e3){const $t=Array.from(o.current);o.current=new Set($t.slice(-500))}let Ve=null;if(re.type==="CHAN"&&re.conversation_key?Ve=Rr("channel",re.conversation_key):re.type==="PRIV"&&re.conversation_key&&(Ve=Rr("contact",re.conversation_key)),Ve){const $t=pe(re.text);$e(Ve,$t)}}},onContact:re=>{v(me=>{const Se=me.findIndex(Ne=>Ne.public_key===re.public_key);if(Se>=0){const Ne=[...me],Ve=me[Se];return Ne[Se]={...Ve,...re,name:re.name??Ve.name,last_path:re.last_path??Ve.last_path,lat:re.lat??Ve.lat,lon:re.lon??Ve.lon},Ne}return[...me,re]})},onRawPacket:re=>{T(me=>{if(me.some(Ne=>Ne.id===re.id))return me;const Se=[...me,re];return Se.length>Lg?Se.slice(-Lg):Se})},onMessageAcked:(re,me,Se)=>{fe(re,me,Se)}}),[de,ft,$e,fe,pe]);Uv(vt);const ot=F.useCallback(async()=>{try{const re=await rt.getRadioConfig();p(re)}catch(re){console.error("Failed to fetch config:",re)}},[]),Qe=F.useCallback(async()=>{try{const re=await rt.getSettings();g(re)}catch(re){console.error("Failed to fetch app settings:",re)}},[]),Xe=F.useCallback(async()=>{try{const re=await rt.getUndecryptedPacketCount();j(re.count)}catch(re){console.error("Failed to fetch undecrypted count:",re)}},[]);F.useEffect(()=>{ot(),Qe(),Xe()},[ot,Qe,Xe]);const xe=F.useCallback(()=>{const re=Hw();if(!re)return null;if(re.type==="raw")return{type:"raw",id:"raw",name:"Raw Packet Feed"};if(re.type==="map")return{type:"map",id:"map",name:"Node Map",mapFocusKey:re.mapFocusKey};if(re.type==="channel"){const me=y.find(Se=>Se.name===re.name||Se.name===`#${re.name}`);if(me)return{type:"channel",id:me.key,name:me.name}}if(re.type==="contact"){const me=m.find(Se=>Ei(Se.name,Se.public_key)===re.name);if(me)return{type:"contact",id:me.public_key,name:Ei(me.name,me.public_key)}}return null},[y,m]),Te=F.useRef(!1);F.useEffect(()=>{if(Te.current||C||y.length===0&&m.length===0)return;const re=xe();if(re){k(re),Te.current=!0;return}const me=y.find(Se=>Se.name==="Public");me&&(k({type:"channel",id:me.key,name:me.name}),Te.current=!0)},[y,m,C,xe]),F.useEffect(()=>{a.current=C,C&&Uw(C)},[C]);const pt=F.useCallback(async re=>{C&&(C.type==="channel"?await rt.sendChannelMessage(C.id,re):await rt.sendDirectMessage(C.id,re),await K())},[C,K]),Zt=F.useCallback(async re=>{await rt.updateRadioConfig(re),await ot()},[ot]),tn=F.useCallback(async re=>{await rt.updateSettings(re),await Qe()},[Qe]),jt=F.useCallback(async re=>{await rt.setPrivateKey(re),await ot()},[ot]),nn=F.useCallback(async()=>{await rt.rebootRadio(),d(me=>me&&{...me,radio_connected:!1}),(async()=>{for(let me=0;me<30;me++){await new Promise(Se=>setTimeout(Se,1e3));try{const Se=await rt.getHealth();if(d(Se),Se.radio_connected){ot();return}}catch{}}})()},[ot]),mn=F.useCallback(async()=>{try{await rt.sendAdvertisement(!0),bt.success("Advertisement sent")}catch(re){console.error("Failed to send advertisement:",re),bt.error("Failed to send advertisement",{description:re instanceof Error?re.message:"Check radio connection"})}},[]),Tn=F.useCallback(re=>{var me;(me=r.current)==null||me.appendText(`@[${re}] `)},[]),Wt=F.useCallback(re=>{k(re),z(!1)},[]),Pt=F.useCallback((re,me)=>{ie(Qy(re,me))},[]),qt=F.useCallback(async re=>{if(confirm("Delete this channel? Message history will be preserved."))try{await rt.deleteChannel(re),w(me=>me.filter(Se=>Se.key!==re)),k(null),bt.success("Channel deleted")}catch(me){console.error("Failed to delete channel:",me),bt.error("Failed to delete channel",{description:me instanceof Error?me.message:void 0})}},[]),qn=F.useCallback(async re=>{if(confirm("Delete this contact? Message history will be preserved."))try{await rt.deleteContact(re),v(me=>me.filter(Se=>Se.public_key!==re)),k(null),bt.success("Contact deleted")}catch(me){console.error("Failed to delete contact:",me),bt.error("Failed to delete contact",{description:me instanceof Error?me.message:void 0})}},[]),yn=F.useCallback(async(re,me,Se)=>{const Ne=await rt.createContact(me,re||void 0,Se),Ve=await rt.getContacts();v(Ve),k({type:"contact",id:Ne.public_key,name:Ei(Ne.name,Ne.public_key)})},[]),ge=F.useCallback(async(re,me,Se)=>{const Ne=await rt.createChannel(re,me),Ve=await rt.getChannels();w(Ve),k({type:"channel",id:Ne.key,name:re}),Se&&(await rt.decryptHistoricalPackets({key_type:"channel",channel_key:Ne.key}),Xe())},[Xe]),be=F.useCallback(async(re,me)=>{const Se=re.startsWith("#")?re:`#${re}`,Ne=await rt.createChannel(Se),Ve=await rt.getChannels();w(Ve),k({type:"channel",id:Ne.key,name:Se}),me&&(await rt.decryptHistoricalPackets({key_type:"channel",channel_name:Se}),Xe())},[Xe]),De=b.jsx(Q_,{contacts:m,channels:y,activeConversation:C,onSelectConversation:Wt,onNewMessage:()=>{P(!0),z(!1)},lastMessageTimes:We,unreadCounts:ke,mentions:Ae,showCracker:ee,crackerRunning:V,onToggleCracker:()=>Z(re=>!re),onMarkAllRead:wt,favorites:J});return b.jsxs("div",{className:"flex flex-col h-dvh",children:[b.jsx(zy,{health:l,config:f,onSettingsClick:()=>N(!0),onMenuClick:()=>z(!0)}),b.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[b.jsx("div",{className:"hidden md:block",children:De}),b.jsx(SE,{open:I,onOpenChange:z,children:b.jsxs(Gx,{side:"left",className:"w-[280px] p-0 flex flex-col",hideCloseButton:!0,children:[b.jsx(Kx,{className:"sr-only",children:b.jsx(Qx,{children:"Navigation"})}),b.jsx("div",{className:"flex-1 overflow-hidden",children:De})]})}),b.jsx("div",{className:"flex-1 flex flex-col bg-background min-w-0",children:C?C.type==="map"?b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg",children:"Node Map"}),b.jsx("div",{className:"flex-1 overflow-hidden",children:b.jsx(mb,{contacts:m,focusedKey:C.mapFocusKey})})]}):C.type==="raw"?b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg",children:"Raw Packet Feed"}),b.jsx("div",{className:"flex-1 overflow-hidden",children:b.jsx(U2,{packets:B})})]}):b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg gap-2",children:[b.jsxs("span",{className:"flex flex-wrap items-baseline gap-x-2 min-w-0 flex-1",children:[b.jsxs("span",{className:"flex-shrink-0",children:[C.type==="channel"&&!C.name.startsWith("#")&&C.name!=="Public"?"#":"",C.name]}),b.jsx("span",{className:"font-normal text-sm text-muted-foreground font-mono truncate cursor-pointer hover:text-primary",onClick:re=>{re.stopPropagation(),navigator.clipboard.writeText(C.id),bt.success(C.type==="channel"?"Room key copied!":"Contact key copied!")},title:"Click to copy",children:C.type==="channel"?C.id.toLowerCase():C.id}),C.type==="contact"&&(()=>{const re=m.find(Se=>Se.public_key===C.id);if(!re)return null;const me=[];if(re.last_seen&&me.push(`Last heard: ${Qs(re.last_seen)}`),re.last_path_len===-1?me.push("flood"):re.last_path_len===0?me.push("direct"):re.last_path_len>0&&me.push(`${re.last_path_len} hop${re.last_path_len>1?"s":""}`),Ct(re.lat,re.lon)){const Se=f&&Ct(f.lat,f.lon)?Fr(f.lat,f.lon,re.lat,re.lon):null;me.push(b.jsxs("span",{children:[b.jsxs("span",{className:"font-mono cursor-pointer hover:text-primary hover:underline",onClick:Ne=>{Ne.stopPropagation();const Ve=window.location.origin+window.location.pathname+jA(re.public_key);window.open(Ve,"_blank")},title:"View on map",children:[re.lat.toFixed(3),", ",re.lon.toFixed(3)]}),Se!==null&&` (${Go(Se)})`]},"coords"))}return me.length>0?b.jsxs("span",{className:"font-normal text-sm text-muted-foreground flex-shrink-0",children:["(",me.map((Se,Ne)=>b.jsxs("span",{children:[Ne>0&&", ",Se]},Ne)),")"]}):null})()]}),b.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[(C.type==="channel"||C.type==="contact")&&b.jsx("button",{className:"p-1.5 rounded hover:bg-accent text-xl leading-none",onClick:()=>Pt(C.type,C.id),title:Zs(J,C.type,C.id)?"Remove from favorites":"Add to favorites",children:Zs(J,C.type,C.id)?b.jsx("span",{className:"text-yellow-500",children:"★"}):b.jsx("span",{className:"text-muted-foreground",children:"☆"})}),!(C.type==="channel"&&C.name==="Public")&&b.jsx("button",{className:"p-1.5 rounded hover:bg-destructive/20 text-destructive text-xl leading-none",onClick:()=>{C.type==="channel"?qt(C.id):qn(C.id)},title:"Delete",children:"🗑"})]})]}),b.jsx(Qw,{messages:G,contacts:m,loading:Y,loadingOlder:q,hasOlderMessages:R,onSenderClick:C.type==="channel"?Tn:void 0,onLoadOlder:$,radioName:f==null?void 0:f.name,config:f}),b.jsx(e2,{ref:r,onSend:Ze?Be?Rt:lt:pt,disabled:!(l!=null&&l.radio_connected),isRepeaterMode:Ze&&!Be,conversationType:C.type,senderName:f==null?void 0:f.name,placeholder:l!=null&&l.radio_connected?Ze?Be?"Send CLI command (requires admin login)...":`Enter password for ${C.name} (or . for none)...`:`Message ${C.name}...`:"Radio not connected"})]}):b.jsx("div",{className:"flex-1 flex items-center justify-center text-muted-foreground",children:"Select a conversation or start a new one"})})]}),b.jsx("div",{className:at("border-t border-border bg-background transition-all duration-200 overflow-hidden",ee?"h-[275px]":"h-0"),children:b.jsx(kE,{packets:B,channels:y,visible:ee,onChannelCreate:async(re,me)=>{const Se=await rt.createChannel(re,me),Ne=await rt.getChannels();w(Ne),await rt.decryptHistoricalPackets({key_type:"channel",channel_key:Se.key}),Xe()},onRunningChange:ne})}),b.jsx(F2,{open:D,contacts:m,undecryptedCount:H,onClose:()=>P(!1),onSelectConversation:re=>{k(re),P(!1)},onCreateContact:yn,onCreateChannel:ge,onCreateHashtagChannel:be}),b.jsx(j2,{open:S,config:f,health:l,appSettings:h,onClose:()=>N(!1),onSave:Zt,onSaveAppSettings:tn,onSetPrivateKey:jt,onReboot:nn,onAdvertise:mn,onHealthRefresh:async()=>{const re=await rt.getHealth();d(re)}}),b.jsx(By,{position:"top-right"})]})}Hv.createRoot(document.getElementById("root")).render(b.jsx(F.StrictMode,{children:b.jsx(DE,{})})); -//# sourceMappingURL=index-Ck-mz-Y8.js.map + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}return Yf=d,Yf}var bE=wE();const CE=Xs(bE);function EE(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 Be=new yE;J.current=Be,j(Be.isGpuAvailable());const Ze=new CE;return ie.current=Ze,()=>{Be.destroy(),J.current=null,Ze.disable(),ie.current=null}},[]),F.useEffect(()=>{!d||I||xb(async()=>{const{ENGLISH_WORDLIST:Be}=await import("./wordlist-BtmChKSf.js");return{ENGLISH_WORDLIST:Be}},[]).then(({ENGLISH_WORDLIST:Be})=>{J.current&&(J.current.setWordlist(Be),z(!0))}).catch(Be=>{console.error("Failed to load wordlist:",Be),wt.error("Failed to load wordlist",{description:"Cracking will not be available"})})},[d,I]),F.useEffect(()=>{const Be=()=>{rt.getUndecryptedPacketCount().then(({count:lt})=>Z(lt)).catch(()=>Z(null))};Be();const Ze=setInterval(Be,3e4);return()=>clearInterval(Ze)},[]);const de=F.useMemo(()=>new Set(a.map(Be=>Be.key.toUpperCase())),[a]),fe=r.filter(Be=>Be.payload_type==="GROUP_TEXT"&&!Be.decrypted);F.useEffect(()=>{let Be=0;P(Ze=>{const lt=new Map(Ze);let Rt=!1;for(const vt of fe)if(!lt.has(vt.id)){const ot=EE(vt.data);if(ot&&$.current.has(ot)){Be++;continue}ot&&$.current.add(ot),lt.set(vt.id,{packet:vt,attempts:0,lastAttemptLength:0,status:"pending"}),Rt=!0}return Rt?(G.current=lt,lt):Ze}),Be>0&&ne(Ze=>Ze+Be)},[fe.length]),F.useEffect(()=>{G.current=D},[D]),F.useEffect(()=>{Y.current=m},[m]),F.useEffect(()=>{q.current=h},[h]),F.useEffect(()=>{R.current=y},[y]),F.useEffect(()=>{U.current=B},[B]),F.useEffect(()=>{K.current=new Set(fe.map(Be=>Be.id))},[fe]),F.useEffect(()=>{l==null||l(f)},[f,l]);const ke=Array.from(D.values()).filter(Be=>Be.status==="pending").length,Ae=Array.from(D.values()).filter(Be=>Be.status==="cracked").length,We=Array.from(D.values()).filter(Be=>Be.status==="failed").length,$e=F.useCallback(async()=>{if(pe.current||!J.current||!he.current)return;const Be=G.current;let Ze=null,lt=null;for(const[Qe,Xe]of Be.entries())if(Xe.status==="pending"){Ze=Xe,lt=Qe;break}if(!Ze&&Y.current){const Qe=Array.from(Be.entries()).filter(([,Xe])=>Xe.status==="failed"&&Xe.lastAttemptLength<10);Qe.length>0&&(Qe.sort((Xe,xe)=>Xe[1].lastAttemptLength-xe[1].lastAttemptLength),[lt,Ze]=Qe[0])}if(!Ze||lt===null){he.current&&setTimeout(()=>$e(),1e3);return}if(!K.current.has(lt)){P(Qe=>{const Xe=new Map(Qe);return Xe.delete(lt),Xe}),he.current&&setTimeout(()=>$e(),10);return}pe.current=!0;const Rt=q.current,vt=Ze.lastAttemptLength>0,ot=vt?Ze.lastAttemptLength+1:Rt;try{const Qe=await J.current.crack(Ze.packet.data,{maxLength:ot,useSenderFilter:!0,useTimestampFilter:!0,useUtf8Filter:!0,...U.current&&{gpuDispatchMs:1e4},...vt&&{useDictionary:!1,startingLength:ot}},Xe=>{k(Xe)});if(ae.current){ae.current=!1,pe.current=!1,k(null);return}if(Qe.found&&Qe.roomName&&Qe.key){P(Te=>{const pt=new Map(Te),Zt=pt.get(lt);return Zt&&pt.set(lt,{...Zt,status:"cracked",attempts:Zt.attempts+1,lastAttemptLength:ot}),pt});const Xe={roomName:Qe.roomName,key:Qe.key,packetId:lt,message:Qe.decryptedMessage||"",crackedAt:Date.now()};N(Te=>[...Te,Xe]);const xe=Qe.key.toUpperCase();if(!de.has(xe))try{const Te="#"+Qe.roomName;await o(Te,Qe.key),R.current&&await rt.decryptHistoricalPackets({key_type:"channel",channel_name:Te})}catch(Te){console.error("Failed to create channel or decrypt historical:",Te),wt.error("Failed to save cracked channel",{description:Te instanceof Error?Te.message:"Channel discovered but could not be saved"})}}else P(Xe=>{const xe=new Map(Xe),Te=xe.get(lt);return Te&&xe.set(lt,{...Te,status:"failed",attempts:Te.attempts+1,lastAttemptLength:ot}),xe})}catch(Qe){console.error("Cracking error:",Qe),P(Xe=>{const xe=new Map(Xe),Te=xe.get(lt);return Te&&xe.set(lt,{...Te,status:"failed",attempts:Te.attempts+1,lastAttemptLength:ot}),xe})}pe.current=!1,k(null),he.current&&setTimeout(()=>$e(),100)},[de,o]),bt=()=>{var Be;if(!H){wt.error("WebGPU not available",{description:"Cracking requires Chrome 113+ or Edge 113+ with WebGPU support."});return}p(!0),he.current=!0,ae.current=!1,(Be=ie.current)==null||Be.enable(),$e()},ft=()=>{var Be,Ze;p(!1),he.current=!1,ae.current=!0,(Be=J.current)==null||Be.abort(),(Ze=ie.current)==null||Ze.disable()};return b.jsxs("div",{className:"flex flex-col h-full p-3 gap-3 bg-background border-t border-border overflow-auto",children:[b.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[b.jsxs("div",{className:"flex items-center gap-2",children:[b.jsx("label",{className:"text-sm text-muted-foreground",children:"Max Length:"}),b.jsx("input",{type:"number",min:1,max:10,value:h,onChange:Be=>g(Math.min(10,Math.max(1,parseInt(Be.target.value)||6))),className:"w-14 px-2 py-1 text-sm bg-muted border border-border rounded"})]}),b.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[b.jsx("input",{type:"checkbox",checked:m,onChange:Be=>v(Be.target.checked),className:"rounded"}),"Retry failed at n+1"]}),b.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[b.jsx("input",{type:"checkbox",checked:y,onChange:Be=>w(Be.target.checked),className:"rounded"}),"Decrypt historical packets if key found"]}),y&&b.jsx("span",{className:"text-xs text-muted-foreground",children:ee!==null&&ee>0?`(${ee.toLocaleString()} packets; messages will stream in as decrypted)`:"(messages will stream in as decrypted)"}),b.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[b.jsx("input",{type:"checkbox",checked:B,onChange:Be=>T(Be.target.checked),className:"rounded"}),"Turbo mode (experimental)"]})]}),b.jsx("button",{onClick:f?ft:bt,disabled:!I||H===!1,className:at("w-48 px-4 py-1.5 rounded text-sm font-medium",f?"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:f?"Stop Search":H===!1?"GPU Not Available":I?"Find Rooms":"Loading dictionary..."}),b.jsxs("div",{className:"flex gap-4 text-sm",children:[b.jsxs("span",{className:"text-muted-foreground",children:["Pending: ",b.jsx("span",{className:"text-foreground font-medium",children:ke})]}),b.jsxs("span",{className:"text-muted-foreground",children:["Cracked: ",b.jsx("span",{className:"text-green-500 font-medium",children:Ae})]}),b.jsxs("span",{className:"text-muted-foreground",children:["Failed: ",b.jsx("span",{className:"text-destructive font-medium",children:We})]}),V>0&&b.jsxs("span",{className:"text-muted-foreground",children:["Skipped (dup):"," ",b.jsx("span",{className:"text-muted-foreground font-medium",children:V})]})]}),C&&b.jsxs("div",{className:"space-y-1",children:[b.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[b.jsxs("span",{children:[C.phase==="wordlist"?"Dictionary":C.phase==="bruteforce"?"Bruteforce":"Public Key",C.phase==="bruteforce"&&` - Length ${C.currentLength}`,":"," ",C.currentPosition]}),b.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`]})]}),b.jsx("div",{className:"h-2 bg-muted rounded overflow-hidden",children:b.jsx("div",{className:"h-full bg-primary transition-all duration-200",style:{width:`${C.percent}%`}})})]}),H===!1&&b.jsx("div",{className:"text-sm text-destructive",children:"WebGPU not available. Cracking requires Chrome 113+ or Edge 113+."}),!I&&H!==!1&&b.jsx("div",{className:"text-sm text-muted-foreground",children:"Loading wordlist..."}),S.length>0&&b.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0",children:[b.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"Cracked Rooms:"}),b.jsx("div",{className:"space-y-1",children:S.map((Be,Ze)=>b.jsxs("div",{className:"text-sm bg-green-950/30 border border-green-900/50 rounded px-2 py-1",children:[b.jsxs("span",{className:"text-green-400 font-medium",children:["#",Be.roomName]}),b.jsxs("span",{className:"text-muted-foreground ml-2 text-xs",children:['"',Be.message.slice(0,50),Be.message.length>50?"...":"",'"']})]},Ze))})]}),b.jsx("hr",{className:"border-border"}),b.jsxs("p",{className:"text-sm text-muted-foreground leading-relaxed",children:["For unknown-keyed GroupText packets, this will attempt to dictionary attack, then brute force payloads as they arrive, testing room names up to the specified length to discover active rooms on the local mesh (GroupText packets may not be hashtag messages; we have no way of knowing but try as if they are).",b.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.",b.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.",b.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."]})]})}const SE=LA,BE=MA,qx=F.forwardRef(({className:r,...a},o)=>b.jsx(Uc,{className:at("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}));qx.displayName=Uc.displayName;const PE=b0("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"}}),Gx=F.forwardRef(({side:r="right",className:a,children:o,hideCloseButton:l=!1,...d},f)=>b.jsxs(BE,{children:[b.jsx(qx,{}),b.jsxs(Zc,{ref:f,className:at(PE({side:r}),a),...d,children:[!l&&b.jsxs(IA,{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:[b.jsx(Hg,{className:"h-4 w-4"}),b.jsx("span",{className:"sr-only",children:"Close"})]}),o]})]}));Gx.displayName=Zc.displayName;const Kx=({className:r,...a})=>b.jsx("div",{className:at("flex flex-col space-y-2 text-center sm:text-left",r),...a});Kx.displayName="SheetHeader";const Qx=F.forwardRef(({className:r,...a},o)=>b.jsx(Wc,{ref:o,className:at("text-lg font-semibold text-foreground",r),...a}));Qx.displayName=Wc.displayName;const TE=F.forwardRef(({className:r,...a},o)=>b.jsx(qc,{ref:o,className:at("text-sm text-muted-foreground",r),...a}));TE.displayName=qc.displayName;const Lg=500;function DE(){const r=F.useRef(null),a=F.useRef(null),o=F.useRef(new Set),[l,d]=F.useState(null),[f,p]=F.useState(null),[h,g]=F.useState(null),[m,v]=F.useState([]),[y,w]=F.useState([]),[B,T]=F.useState([]),[C,k]=F.useState(null),[D,P]=F.useState(!1),[S,N]=F.useState(!1),[I,z]=F.useState(!1),[H,j]=F.useState(0),[ee,Z]=F.useState(!1),[V,ne]=F.useState(!1),[J,ie]=F.useState(jc),he=F.useRef(null),ae=F.useRef(null);F.useEffect(()=>{ae.current=(f==null?void 0:f.name)??null},[f==null?void 0:f.name]);const pe=F.useCallback(re=>{const me=ae.current;if(!me)return!1;const Se=me.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`@\\[${Se}\\]`,"i").test(re)},[]),{messages:G,messagesLoading:Y,loadingOlder:q,hasOlderMessages:R,setMessages:U,fetchMessages:K,fetchOlderMessages:$,addMessageIfNew:de,updateMessageAck:fe}=Py(C),{unreadCounts:ke,mentions:Ae,lastMessageTimes:We,incrementUnread:$e,markAllRead:bt,trackNewMessage:ft}=ey(y,m,C,f==null?void 0:f.name),{repeaterLoggedIn:Be,activeContactIsRepeater:Ze,handleTelemetryRequest:lt,handleRepeaterCommand:Rt}=Yv(C,m,U),vt=F.useMemo(()=>({onHealth:re=>{const me=he.current;he.current=re,d(re),me!==null&&me.radio_connected!==re.radio_connected&&(re.radio_connected?(wt.success("Radio connected",{description:re.serial_port?`Connected to ${re.serial_port}`:void 0}),rt.getRadioConfig().then(p).catch(console.error)):wt.error("Radio disconnected",{description:"Check radio connection and power"}))},onError:re=>{wt.error(re.message,{description:re.details})},onContacts:re=>v(re),onChannels:re=>w(re),onMessage:re=>{const me=a.current,Se=me?re.type==="CHAN"&&me.type==="channel"?re.conversation_key===me.id:re.type==="PRIV"&&me.type==="contact"?re.conversation_key&&x0(me.id,re.conversation_key):!1:!1;if(Se&&de(re),ft(re),!re.outgoing&&!Se){const Ne=Vu(re);if(o.current.has(Ne))return;if(o.current.add(Ne),o.current.size>1e3){const $t=Array.from(o.current);o.current=new Set($t.slice(-500))}let Ve=null;if(re.type==="CHAN"&&re.conversation_key?Ve=Rr("channel",re.conversation_key):re.type==="PRIV"&&re.conversation_key&&(Ve=Rr("contact",re.conversation_key)),Ve){const $t=pe(re.text);$e(Ve,$t)}}},onContact:re=>{v(me=>{const Se=me.findIndex(Ne=>Ne.public_key===re.public_key);if(Se>=0){const Ne=[...me],Ve=me[Se];return Ne[Se]={...Ve,...re,name:re.name??Ve.name,last_path:re.last_path??Ve.last_path,lat:re.lat??Ve.lat,lon:re.lon??Ve.lon},Ne}return[...me,re]})},onRawPacket:re=>{T(me=>{if(me.some(Ne=>Ne.id===re.id))return me;const Se=[...me,re];return Se.length>Lg?Se.slice(-Lg):Se})},onMessageAcked:(re,me,Se)=>{fe(re,me,Se)}}),[de,ft,$e,fe,pe]);Uv(vt);const ot=F.useCallback(async()=>{try{const re=await rt.getRadioConfig();p(re)}catch(re){console.error("Failed to fetch config:",re)}},[]),Qe=F.useCallback(async()=>{try{const re=await rt.getSettings();g(re)}catch(re){console.error("Failed to fetch app settings:",re)}},[]),Xe=F.useCallback(async()=>{try{const re=await rt.getUndecryptedPacketCount();j(re.count)}catch(re){console.error("Failed to fetch undecrypted count:",re)}},[]);F.useEffect(()=>{ot(),Qe(),Xe()},[ot,Qe,Xe]);const xe=F.useCallback(()=>{const re=Hw();if(!re)return null;if(re.type==="raw")return{type:"raw",id:"raw",name:"Raw Packet Feed"};if(re.type==="map")return{type:"map",id:"map",name:"Node Map",mapFocusKey:re.mapFocusKey};if(re.type==="channel"){const me=y.find(Se=>Se.name===re.name||Se.name===`#${re.name}`);if(me)return{type:"channel",id:me.key,name:me.name}}if(re.type==="contact"){const me=m.find(Se=>Ei(Se.name,Se.public_key)===re.name);if(me)return{type:"contact",id:me.public_key,name:Ei(me.name,me.public_key)}}return null},[y,m]),Te=F.useRef(!1);F.useEffect(()=>{if(Te.current||C||y.length===0&&m.length===0)return;const re=xe();if(re){k(re),Te.current=!0;return}const me=y.find(Se=>Se.name==="Public");me&&(k({type:"channel",id:me.key,name:me.name}),Te.current=!0)},[y,m,C,xe]),F.useEffect(()=>{a.current=C,C&&Uw(C)},[C]);const pt=F.useCallback(async re=>{C&&(C.type==="channel"?await rt.sendChannelMessage(C.id,re):await rt.sendDirectMessage(C.id,re),await K())},[C,K]),Zt=F.useCallback(async re=>{await rt.updateRadioConfig(re),await ot()},[ot]),tn=F.useCallback(async re=>{await rt.updateSettings(re),await Qe()},[Qe]),jt=F.useCallback(async re=>{await rt.setPrivateKey(re),await ot()},[ot]),nn=F.useCallback(async()=>{await rt.rebootRadio(),d(me=>me&&{...me,radio_connected:!1}),(async()=>{for(let me=0;me<30;me++){await new Promise(Se=>setTimeout(Se,1e3));try{const Se=await rt.getHealth();if(d(Se),Se.radio_connected){ot();return}}catch{}}})()},[ot]),mn=F.useCallback(async()=>{try{await rt.sendAdvertisement(!0),wt.success("Advertisement sent")}catch(re){console.error("Failed to send advertisement:",re),wt.error("Failed to send advertisement",{description:re instanceof Error?re.message:"Check radio connection"})}},[]),Tn=F.useCallback(re=>{var me;(me=r.current)==null||me.appendText(`@[${re}] `)},[]),Wt=F.useCallback(re=>{k(re),z(!1)},[]),Pt=F.useCallback((re,me)=>{ie(Qy(re,me))},[]),qt=F.useCallback(async re=>{if(confirm("Delete this channel? Message history will be preserved."))try{await rt.deleteChannel(re),w(me=>me.filter(Se=>Se.key!==re)),k(null),wt.success("Channel deleted")}catch(me){console.error("Failed to delete channel:",me),wt.error("Failed to delete channel",{description:me instanceof Error?me.message:void 0})}},[]),qn=F.useCallback(async re=>{if(confirm("Delete this contact? Message history will be preserved."))try{await rt.deleteContact(re),v(me=>me.filter(Se=>Se.public_key!==re)),k(null),wt.success("Contact deleted")}catch(me){console.error("Failed to delete contact:",me),wt.error("Failed to delete contact",{description:me instanceof Error?me.message:void 0})}},[]),yn=F.useCallback(async(re,me,Se)=>{const Ne=await rt.createContact(me,re||void 0,Se),Ve=await rt.getContacts();v(Ve),k({type:"contact",id:Ne.public_key,name:Ei(Ne.name,Ne.public_key)})},[]),ge=F.useCallback(async(re,me,Se)=>{const Ne=await rt.createChannel(re,me),Ve=await rt.getChannels();w(Ve),k({type:"channel",id:Ne.key,name:re}),Se&&(await rt.decryptHistoricalPackets({key_type:"channel",channel_key:Ne.key}),Xe())},[Xe]),be=F.useCallback(async(re,me)=>{const Se=re.startsWith("#")?re:`#${re}`,Ne=await rt.createChannel(Se),Ve=await rt.getChannels();w(Ve),k({type:"channel",id:Ne.key,name:Se}),me&&(await rt.decryptHistoricalPackets({key_type:"channel",channel_name:Se}),Xe())},[Xe]),De=b.jsx(Q_,{contacts:m,channels:y,activeConversation:C,onSelectConversation:Wt,onNewMessage:()=>{P(!0),z(!1)},lastMessageTimes:We,unreadCounts:ke,mentions:Ae,showCracker:ee,crackerRunning:V,onToggleCracker:()=>Z(re=>!re),onMarkAllRead:bt,favorites:J});return b.jsxs("div",{className:"flex flex-col h-dvh",children:[b.jsx(zy,{health:l,config:f,onSettingsClick:()=>N(!0),onMenuClick:()=>z(!0)}),b.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[b.jsx("div",{className:"hidden md:block",children:De}),b.jsx(SE,{open:I,onOpenChange:z,children:b.jsxs(Gx,{side:"left",className:"w-[280px] p-0 flex flex-col",hideCloseButton:!0,children:[b.jsx(Kx,{className:"sr-only",children:b.jsx(Qx,{children:"Navigation"})}),b.jsx("div",{className:"flex-1 overflow-hidden",children:De})]})}),b.jsx("div",{className:"flex-1 flex flex-col bg-background min-w-0",children:C?C.type==="map"?b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg",children:"Node Map"}),b.jsx("div",{className:"flex-1 overflow-hidden",children:b.jsx(mb,{contacts:m,focusedKey:C.mapFocusKey})})]}):C.type==="raw"?b.jsxs(b.Fragment,{children:[b.jsx("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg",children:"Raw Packet Feed"}),b.jsx("div",{className:"flex-1 overflow-hidden",children:b.jsx(U2,{packets:B})})]}):b.jsxs(b.Fragment,{children:[b.jsxs("div",{className:"flex justify-between items-center px-4 py-3 border-b border-border font-medium text-lg gap-2",children:[b.jsxs("span",{className:"flex flex-wrap items-baseline gap-x-2 min-w-0 flex-1",children:[b.jsxs("span",{className:"flex-shrink-0",children:[C.type==="channel"&&!C.name.startsWith("#")&&C.name!=="Public"?"#":"",C.name]}),b.jsx("span",{className:"font-normal text-sm text-muted-foreground font-mono truncate cursor-pointer hover:text-primary",onClick:re=>{re.stopPropagation(),navigator.clipboard.writeText(C.id),wt.success(C.type==="channel"?"Room key copied!":"Contact key copied!")},title:"Click to copy",children:C.type==="channel"?C.id.toLowerCase():C.id}),C.type==="contact"&&(()=>{const re=m.find(Se=>Se.public_key===C.id);if(!re)return null;const me=[];if(re.last_seen&&me.push(`Last heard: ${Qs(re.last_seen)}`),re.last_path_len===-1?me.push("flood"):re.last_path_len===0?me.push("direct"):re.last_path_len>0&&me.push(`${re.last_path_len} hop${re.last_path_len>1?"s":""}`),Ct(re.lat,re.lon)){const Se=f&&Ct(f.lat,f.lon)?Fr(f.lat,f.lon,re.lat,re.lon):null;me.push(b.jsxs("span",{children:[b.jsxs("span",{className:"font-mono cursor-pointer hover:text-primary hover:underline",onClick:Ne=>{Ne.stopPropagation();const Ve=window.location.origin+window.location.pathname+jA(re.public_key);window.open(Ve,"_blank")},title:"View on map",children:[re.lat.toFixed(3),", ",re.lon.toFixed(3)]}),Se!==null&&` (${Go(Se)})`]},"coords"))}return me.length>0?b.jsxs("span",{className:"font-normal text-sm text-muted-foreground flex-shrink-0",children:["(",me.map((Se,Ne)=>b.jsxs("span",{children:[Ne>0&&", ",Se]},Ne)),")"]}):null})()]}),b.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[(C.type==="channel"||C.type==="contact")&&b.jsx("button",{className:"p-1.5 rounded hover:bg-accent text-xl leading-none",onClick:()=>Pt(C.type,C.id),title:Zs(J,C.type,C.id)?"Remove from favorites":"Add to favorites",children:Zs(J,C.type,C.id)?b.jsx("span",{className:"text-yellow-500",children:"★"}):b.jsx("span",{className:"text-muted-foreground",children:"☆"})}),!(C.type==="channel"&&C.name==="Public")&&b.jsx("button",{className:"p-1.5 rounded hover:bg-destructive/20 text-destructive text-xl leading-none",onClick:()=>{C.type==="channel"?qt(C.id):qn(C.id)},title:"Delete",children:"🗑"})]})]}),b.jsx(Qw,{messages:G,contacts:m,loading:Y,loadingOlder:q,hasOlderMessages:R,onSenderClick:C.type==="channel"?Tn:void 0,onLoadOlder:$,radioName:f==null?void 0:f.name,config:f}),b.jsx(e2,{ref:r,onSend:Ze?Be?Rt:lt:pt,disabled:!(l!=null&&l.radio_connected),isRepeaterMode:Ze&&!Be,conversationType:C.type,senderName:f==null?void 0:f.name,placeholder:l!=null&&l.radio_connected?Ze?Be?"Send CLI command (requires admin login)...":`Enter password for ${C.name} (or . for none)...`:`Message ${C.name}...`:"Radio not connected"})]}):b.jsx("div",{className:"flex-1 flex items-center justify-center text-muted-foreground",children:"Select a conversation or start a new one"})})]}),b.jsx("div",{className:at("border-t border-border bg-background transition-all duration-200 overflow-hidden",ee?"h-[275px]":"h-0"),children:b.jsx(kE,{packets:B,channels:y,visible:ee,onChannelCreate:async(re,me)=>{const Se=await rt.createChannel(re,me),Ne=await rt.getChannels();w(Ne),await rt.decryptHistoricalPackets({key_type:"channel",channel_key:Se.key}),Xe()},onRunningChange:ne})}),b.jsx(F2,{open:D,contacts:m,undecryptedCount:H,onClose:()=>P(!1),onSelectConversation:re=>{k(re),P(!1)},onCreateContact:yn,onCreateChannel:ge,onCreateHashtagChannel:be}),b.jsx(j2,{open:S,config:f,health:l,appSettings:h,onClose:()=>N(!1),onSave:Zt,onSaveAppSettings:tn,onSetPrivateKey:jt,onReboot:nn,onAdvertise:mn,onHealthRefresh:async()=>{const re=await rt.getHealth();d(re)}}),b.jsx(By,{position:"top-right"})]})}Hv.createRoot(document.getElementById("root")).render(b.jsx(F.StrictMode,{children:b.jsx(DE,{})})); +//# sourceMappingURL=index-CAtwmgBG.js.map diff --git a/frontend/dist/assets/index-CAtwmgBG.js.map b/frontend/dist/assets/index-CAtwmgBG.js.map new file mode 100644 index 00000000..6f1255d1 --- /dev/null +++ b/frontend/dist/assets/index-CAtwmgBG.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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ACpC,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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AA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;A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","names":["l","n","p","q","r","t","u","v","w","x","y","z","A","a","C","D","E","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","B","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","ed","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","errorText","errorMessage","errorJson","api","config","privateKey","flood","limit","offset","publicKey","name","tryHistorical","password","command","key","params","searchParams","query","conversations","limitPerConversation","destination","text","channelKey","pruneUndecryptedDays","settings","useWebSocket","wsRef","useRef","reconnectTimeoutRef","connected","setConnected","useState","connect","useCallback","protocol","wsUrl","ws","error","event","msg","_a","_b","_c","_d","_e","_f","ackData","_g","_h","useEffect","pingInterval","CONTACT_TYPE_REPEATER","AIRTIME_POLL_INTERVAL_MS","formatAirtimeDuration","seconds","hours","mins","secs","getTxDutyCycleEmoji","pct","formatAirtimeStats","baseline","current","wallDuration","deltaUptime","deltaTxAirtime","deltaRxAirtime","deltaSentFlood","deltaSentDirect","deltaRecvFlood","deltaRecvDirect","txPct","rxPct","totalSent","totalRecv","txFloodPct","txDirectPct","rxFloodPct","rxDirectPct","txEmoji","idlePct","createLocalMessage","conversationKey","outgoing","now","useAirtimeTracking","setMessages","baselineRef","intervalRef","stopTracking","pollAirtimeStats","telemetry","lastError","attempt","resolve","statsMessage","prev","handleAirtimeCommand","conversationId","cmd","startMessage","stopMessage","notRunningMessage","formatDuration","days","formatTelemetry","formatNeighbors","neighbors","sorted","lines","snr","formatAcl","acl","entry","idOffset","useRepeaterMode","activeConversation","contacts","repeaterLoggedIn","setRepeaterLoggedIn","activeContactIsRepeater","useMemo","contact","handleTelemetryRequest","telemetryMessage","neighborsMessage","aclMessage","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","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","paths","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","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","parsePathHops","normalized","hops","findContactsByPrefix","repeatersOnly","normalizedPrefix","calculateDistance","lat1","lon1","lat2","lon2","dLat","toRad","dLon","deg","isValidLocation","lat","lon","formatDistance","km","sortContactsByDistance","fromLat","fromLon","distA","distB","getHopCount","formatHopCounts","hopCounts","allDirect","hasMultiple","resolvePath","sender","hopPrefixes","senderPrefix","resolvedSender","receiverPrefix","resolvedReceiver","prevLat","prevLon","prevHopUncertain","sortedMatches","distanceFromPrev","currentHasValidLocation","totalDistances","calculateTotalDistances","hasGaps","hop","receiver","dist","startHopIndex","totalDistance","hasAnyDistance","lastUnambiguousHopIndex","finalDist","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","useLayoutEffect","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","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","direction","handleScroll","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","parseHashConversation","focusKey","slashIndex","getMapFocusHash","publicKeyPrefix","getConversationHash","updateUrlHash","newHash","PathModal","onClose","senderInfo","resolvedPaths","hasSinglePath","isOpen","pathData","PathVisualization","resolved","hideStraightLine","getPrevLocation","hopIndex","prevHop","PathNode","HopNode","calculateReceiverDistance","distance","isFirst","isLast","hasLocation","CoordinateLink","hopNumber","prevLocation","isAmbiguous","isUnknown","getDistanceForContact","handleClick","lastHop","renderTextWithMentions","radioName","mentionPattern","lastIndex","keyIndex","mentionedName","isOwnMention","HopCountBadge","onClick","hopInfo","MessageList","loading","onSenderClick","onLoadOlder","prevMessagesLengthRef","isInitialLoadRef","showScrollToBottom","setShowScrollToBottom","selectedPath","setSelectedPath","scrollStateRef","list","messagesAdded","scrollHeightDiff","distanceFromBottom","scrollToBottom","getContact","getContactByName","getSenderInfo","parsedSender","senderContact","sortedMessages","getSenderKey","isRepeater","displaySender","canClickSender","currentSenderKey","prevMsg","prevSenderKey","showAvatar","isFirstMessage","avatarName","avatarKey","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","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","checkboxProps","initialCheckedStateRef","reset","prevChecked","Checkbox","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","indicatorProps","BUBBLE_INPUT_NAME","controlSize","input","inputProto","bubbles","defaultCheckedRef","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","NewMessageModal","undecryptedCount","onCreateContact","onCreateChannel","onCreateHashtagChannel","tab","setTab","setName","contactKey","setContactKey","roomKey","setRoomKey","setTryHistorical","setError","setLoading","hashtagInputRef","handleCreate","channelName","validationError","validateHashtagName","handleCreateAndAddAnother","showHistoricalOption","bytes","hex","DEFAULT_ORIENTATION","ORIENTATIONS","Separator","decorative","orientationProp","domProps","isValidOrientation","semanticProps","SeparatorPrimitive.Root","RADIO_PRESETS","SettingsModal","appSettings","onSave","onSaveAppSettings","onSetPrivateKey","onReboot","onAdvertise","onHealthRefresh","activeTab","setActiveTab","setLat","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","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","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","focusedContact","hasInitialized","setHasInitialized","fitToContacts","MapView","focusedKey","mappableContacts","sevenDaysAgo","markerRefs","setMarkerRef","timer","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","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","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","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","created","handleCreateChannel","handleCreateHashtagChannel","sidebarContent","distFromUs","createRoot","StrictMode"],"ignoreList":[0,1,2,3,4,5,6,7,8,17,20,21,22,23,24,25,26,31,32,35,36,37,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,84,85,86,87,88,90,91,93,94,95,98,99,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,122,123,124,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,186,187,188],"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/useAirtimeTracking.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/utils/pathUtils.ts","../../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","../../src/utils/urlHash.ts","../../src/components/PathModal.tsx","../../src/components/MessageList.tsx","../../src/components/MessageInput.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/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/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 errorText = await res.text();\n // FastAPI returns errors as {\"detail\": \"message\"}, extract the message\n let errorMessage = errorText || res.statusText;\n try {\n const errorJson = JSON.parse(errorText);\n if (errorJson.detail) {\n errorMessage = errorJson.detail;\n }\n } catch {\n // Not JSON, use raw text\n }\n throw new Error(errorMessage);\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 createContact: (publicKey: string, name?: string, tryHistorical?: boolean) =>\n fetchJson('/contacts', {\n method: 'POST',\n body: JSON.stringify({ public_key: publicKey, name, try_historical: tryHistorical }),\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, MessagePath, 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, paths?: MessagePath[]) => 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 {\n message_id: number;\n ack_count: number;\n paths?: MessagePath[];\n };\n options.onMessageAcked?.(ackData.message_id, ackData.ack_count, ackData.paths);\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\n/** A single path that a message took to reach us */\nexport interface MessagePath {\n /** Hex-encoded routing path (2 chars per hop) */\n path: string;\n /** Unix timestamp when this path was received */\n received_at: number;\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 /** List of routing paths this message arrived via. Null for outgoing messages. */\n paths: MessagePath[] | 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 /** For map view: public key prefix to focus on */\n mapFocusKey?: 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","/**\n * Airtime/duty cycle tracking for repeaters.\n *\n * When \"dutycycle_start\" command is issued, this captures baseline telemetry\n * and polls every 5 minutes to display rolling airtime/duty cycle statistics.\n */\n\nimport { useRef, useCallback, useEffect } from 'react';\nimport { api } from '../api';\nimport type { Message, TelemetryResponse } from '../types';\n\n// Baseline telemetry snapshot for airtime tracking\ninterface AirtimeBaseline {\n startTime: number; // epoch seconds\n uptime: number;\n txAirtime: number;\n rxAirtime: number;\n sentFlood: number;\n sentDirect: number;\n recvFlood: number;\n recvDirect: number;\n conversationId: string;\n}\n\n// Polling interval: 5 minutes\nconst AIRTIME_POLL_INTERVAL_MS = 5 * 60 * 1000;\n\n// Format duration in XhXmXs format\nfunction formatAirtimeDuration(seconds: number): string {\n const hours = Math.floor(seconds / 3600);\n const mins = Math.floor((seconds % 3600) / 60);\n const secs = Math.floor(seconds % 60);\n return `${hours}h${mins}m${secs}s`;\n}\n\n// Get emoji indicator for TX duty cycle percentage\nfunction getTxDutyCycleEmoji(pct: number): string {\n if (pct <= 5) return '✅';\n if (pct <= 10) return '🟢';\n if (pct <= 25) return '🟡';\n if (pct <= 50) return '🔴';\n return '🚨';\n}\n\n// Format airtime statistics comparing current telemetry to baseline\nfunction formatAirtimeStats(baseline: AirtimeBaseline, current: TelemetryResponse): string {\n const now = Math.floor(Date.now() / 1000);\n const wallDuration = now - baseline.startTime;\n\n // Compute deltas\n const deltaUptime = current.uptime_seconds - baseline.uptime;\n const deltaTxAirtime = current.airtime_seconds - baseline.txAirtime;\n const deltaRxAirtime = current.rx_airtime_seconds - baseline.rxAirtime;\n const deltaSentFlood = current.sent_flood - baseline.sentFlood;\n const deltaSentDirect = current.sent_direct - baseline.sentDirect;\n const deltaRecvFlood = current.recv_flood - baseline.recvFlood;\n const deltaRecvDirect = current.recv_direct - baseline.recvDirect;\n\n // Calculate airtime percentages\n const txPct = deltaUptime > 0 ? (deltaTxAirtime / deltaUptime) * 100 : 0;\n const rxPct = deltaUptime > 0 ? (deltaRxAirtime / deltaUptime) * 100 : 0;\n\n // Estimate flood/direct airtime breakdown based on packet proportions\n const totalSent = deltaSentFlood + deltaSentDirect;\n const totalRecv = deltaRecvFlood + deltaRecvDirect;\n\n const txFloodPct = totalSent > 0 ? txPct * (deltaSentFlood / totalSent) : 0;\n const txDirectPct = totalSent > 0 ? txPct * (deltaSentDirect / totalSent) : 0;\n const rxFloodPct = totalRecv > 0 ? rxPct * (deltaRecvFlood / totalRecv) : 0;\n const rxDirectPct = totalRecv > 0 ? rxPct * (deltaRecvDirect / totalRecv) : 0;\n\n const txEmoji = getTxDutyCycleEmoji(txPct);\n const idlePct = Math.max(0, 100 - txPct - rxPct);\n\n const lines = [\n `Airtime/Duty Cycle Statistics`,\n `Duration: ${formatAirtimeDuration(wallDuration)} (uptime delta: ${formatAirtimeDuration(deltaUptime)})`,\n ``,\n `${txEmoji} TX Airtime: ${txPct.toFixed(3)}% (${totalSent.toLocaleString()} pkts)`,\n ` Flood: ${txFloodPct.toFixed(3)}% (${deltaSentFlood.toLocaleString()} pkts)`,\n ` Direct: ${txDirectPct.toFixed(3)}% (${deltaSentDirect.toLocaleString()} pkts)`,\n ``,\n `RX Airtime: ${rxPct.toFixed(3)}% (${totalRecv.toLocaleString()} pkts)`,\n ` Flood: ${rxFloodPct.toFixed(3)}% (${deltaRecvFlood.toLocaleString()} pkts)`,\n ` Direct: ${rxDirectPct.toFixed(3)}% (${deltaRecvDirect.toLocaleString()} pkts)`,\n ``,\n `Idle: ${idlePct.toFixed(3)}%`,\n ];\n\n return lines.join('\\n');\n}\n\n// Create a local message object (not persisted to database)\nfunction createLocalMessage(conversationKey: string, text: string, outgoing: boolean): Message {\n const now = Math.floor(Date.now() / 1000);\n return {\n id: -Date.now(),\n type: 'PRIV',\n conversation_key: conversationKey,\n text,\n sender_timestamp: now,\n received_at: now,\n paths: null,\n txt_type: 0,\n signature: null,\n outgoing,\n acked: 1,\n };\n}\n\nexport interface UseAirtimeTrackingResult {\n /** Returns true if this was an airtime command that was handled */\n handleAirtimeCommand: (command: string, conversationId: string) => Promise;\n /** Stop any active airtime tracking */\n stopTracking: () => void;\n}\n\nexport function useAirtimeTracking(\n setMessages: React.Dispatch>\n): UseAirtimeTrackingResult {\n const baselineRef = useRef(null);\n const intervalRef = useRef(null);\n\n // Stop tracking and clear interval\n const stopTracking = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n baselineRef.current = null;\n }, []);\n\n // Poll for airtime stats with one retry on failure\n const pollAirtimeStats = useCallback(async () => {\n const baseline = baselineRef.current;\n if (!baseline) return;\n\n let telemetry: TelemetryResponse | null = null;\n let lastError: Error | null = null;\n\n // Try up to 2 times (initial + 1 retry)\n for (let attempt = 0; attempt < 2; attempt++) {\n try {\n telemetry = await api.requestTelemetry(baseline.conversationId, '');\n break; // Success, exit loop\n } catch (err) {\n lastError = err instanceof Error ? err : new Error('Unknown error');\n // Wait a moment before retry\n if (attempt === 0) {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n }\n }\n }\n\n if (telemetry) {\n const statsMessage = createLocalMessage(\n baseline.conversationId,\n formatAirtimeStats(baseline, telemetry),\n false\n );\n setMessages((prev) => [...prev, statsMessage]);\n } else {\n const errorMessage = createLocalMessage(\n baseline.conversationId,\n `Duty cycle poll failed after retry: ${lastError?.message ?? 'Unknown error'}`,\n false\n );\n setMessages((prev) => [...prev, errorMessage]);\n }\n }, [setMessages]);\n\n // Handle airtime commands\n const handleAirtimeCommand = useCallback(\n async (command: string, conversationId: string): Promise => {\n const cmd = command.trim().toLowerCase();\n\n if (cmd === 'dutycycle_start') {\n // Stop any existing tracking\n stopTracking();\n\n // Fetch initial telemetry with one retry\n let telemetry: TelemetryResponse | null = null;\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt < 2; attempt++) {\n try {\n telemetry = await api.requestTelemetry(conversationId, '');\n break;\n } catch (err) {\n lastError = err instanceof Error ? err : new Error('Unknown error');\n if (attempt === 0) {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n }\n }\n }\n\n if (!telemetry) {\n const errorMessage = createLocalMessage(\n conversationId,\n `Failed to start duty cycle tracking after retry: ${lastError?.message ?? 'Unknown error'}`,\n false\n );\n setMessages((prev) => [...prev, errorMessage]);\n return true;\n }\n\n // Store baseline\n const now = Math.floor(Date.now() / 1000);\n baselineRef.current = {\n startTime: now,\n uptime: telemetry.uptime_seconds,\n txAirtime: telemetry.airtime_seconds,\n rxAirtime: telemetry.rx_airtime_seconds,\n sentFlood: telemetry.sent_flood,\n sentDirect: telemetry.sent_direct,\n recvFlood: telemetry.recv_flood,\n recvDirect: telemetry.recv_direct,\n conversationId,\n };\n\n // Add start message\n const startMessage = createLocalMessage(\n conversationId,\n `Airtime/duty cycle statistics gathering begins at ${now}. Logs will follow every 5 minutes. To stop, run dutycycle_stop or navigate away from this conversation.`,\n false\n );\n setMessages((prev) => [...prev, startMessage]);\n\n // Start polling interval\n intervalRef.current = window.setInterval(pollAirtimeStats, AIRTIME_POLL_INTERVAL_MS);\n\n return true;\n }\n\n if (cmd === 'dutycycle_stop') {\n if (baselineRef.current && baselineRef.current.conversationId === conversationId) {\n // Do one final poll before stopping\n await pollAirtimeStats();\n\n stopTracking();\n\n const stopMessage = createLocalMessage(\n conversationId,\n 'Airtime/duty cycle statistics gathering stopped.',\n false\n );\n setMessages((prev) => [...prev, stopMessage]);\n } else {\n const notRunningMessage = createLocalMessage(\n conversationId,\n 'Duty cycle tracking is not active.',\n false\n );\n setMessages((prev) => [...prev, notRunningMessage]);\n }\n return true;\n }\n\n return false; // Not an airtime command\n },\n [setMessages, stopTracking, pollAirtimeStats]\n );\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n }\n };\n }, []);\n\n return {\n handleAirtimeCommand,\n stopTracking,\n };\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';\nimport { useAirtimeTracking } from './useAirtimeTracking';\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 paths: 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 const { handleAirtimeCommand, stopTracking } = useAirtimeTracking(setMessages);\n\n // Reset login state and stop airtime tracking when conversation changes\n useEffect(() => {\n setRepeaterLoggedIn(false);\n stopTracking();\n }, [activeConversation?.id, stopTracking]);\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 // Check for special airtime commands first (handled locally)\n const handled = await handleAirtimeCommand(command, activeConversation.id);\n if (handled) 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 [\n activeConversation,\n activeContactIsRepeater,\n repeaterLoggedIn,\n setMessages,\n handleAirtimeCommand,\n ]\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, MessagePath } 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, paths?: MessagePath[]) => 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 and paths\n const updateMessageAck = useCallback(\n (messageId: number, ackCount: number, paths?: MessagePath[]) => {\n setMessages((prev) => {\n const idx = prev.findIndex((m) => m.id === messageId);\n if (idx >= 0) {\n const updated = [...prev];\n updated[idx] = {\n ...prev[idx],\n acked: ackCount,\n ...(paths !== undefined && { paths }),\n };\n return updated;\n }\n return prev;\n });\n },\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 navigator.clipboard.writeText(config.public_key);\n toast.success('Public key copied!');\n }}\n title=\"Click to copy public key\"\n >\n {config.public_key.toLowerCase()}\n \n
\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(\n (c) => c.name.toLowerCase().includes(query) || c.key.toLowerCase().includes(query)\n )\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'} Room Finder\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 {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 {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 type { Contact, RadioConfig, MessagePath } from '../types';\nimport { CONTACT_TYPE_REPEATER } from '../types';\n\nexport interface PathHop {\n prefix: string; // 2-char hex prefix (e.g., \"1A\")\n matches: Contact[]; // Matched repeaters (empty=unknown, multiple=ambiguous)\n distanceFromPrev: number | null; // km from previous hop\n}\n\nexport interface ResolvedPath {\n sender: { name: string; prefix: string; lat: number | null; lon: number | null };\n hops: PathHop[];\n receiver: {\n name: string;\n prefix: string;\n lat: number | null;\n lon: number | null;\n publicKey: string | null;\n };\n totalDistances: number[] | null; // Single-element array with sum of unambiguous distances\n /** True if path has any gaps (unknown, ambiguous, or missing location hops) */\n hasGaps: boolean;\n}\n\nexport interface SenderInfo {\n name: string;\n publicKeyOrPrefix: string;\n lat: number | null;\n lon: number | null;\n}\n\n/**\n * Split hex string into 2-char hops\n */\nexport function parsePathHops(path: string | null | undefined): string[] {\n if (!path || path.length === 0) {\n return [];\n }\n\n const normalized = path.toUpperCase();\n const hops: string[] = [];\n\n for (let i = 0; i < normalized.length; i += 2) {\n if (i + 1 < normalized.length) {\n hops.push(normalized.slice(i, i + 2));\n }\n }\n\n return hops;\n}\n\n/**\n * Find contacts matching first 2 chars of public key (repeaters only for intermediate hops)\n */\nexport function findContactsByPrefix(\n prefix: string,\n contacts: Contact[],\n repeatersOnly: boolean = true\n): Contact[] {\n const normalizedPrefix = prefix.toUpperCase();\n return contacts.filter((c) => {\n if (repeatersOnly && c.type !== CONTACT_TYPE_REPEATER) {\n return false;\n }\n return c.public_key.toUpperCase().startsWith(normalizedPrefix);\n });\n}\n\n/**\n * Calculate distance between two points using Haversine formula\n * @returns Distance in km, or null if coordinates are missing\n */\nexport function calculateDistance(\n lat1: number | null,\n lon1: number | null,\n lat2: number | null,\n lon2: number | null\n): number | null {\n if (lat1 === null || lon1 === null || lat2 === null || lon2 === null) {\n return null;\n }\n\n const R = 6371; // Earth's radius in km\n const dLat = toRad(lat2 - lat1);\n const dLon = toRad(lon2 - lon1);\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n}\n\nfunction toRad(deg: number): number {\n return (deg * Math.PI) / 180;\n}\n\n/**\n * Check if coordinates represent a valid location\n * Returns false for null or (0, 0) which indicates unset location\n */\nexport function isValidLocation(lat: number | null, lon: number | null): boolean {\n if (lat === null || lon === null) {\n return false;\n }\n // (0, 0) is in the Atlantic Ocean - treat as unset\n if (lat === 0 && lon === 0) {\n return false;\n }\n return true;\n}\n\n/**\n * Format distance in human-readable form (m or km)\n */\nexport function formatDistance(km: number): string {\n if (km < 1) {\n return `${Math.round(km * 1000)}m`;\n }\n return `${km.toFixed(1)}km`;\n}\n\n/**\n * Sort contacts by distance from a reference point\n * Contacts without location are placed at the end\n */\nexport function sortContactsByDistance(\n contacts: Contact[],\n fromLat: number | null,\n fromLon: number | null\n): Contact[] {\n if (fromLat === null || fromLon === null) {\n return contacts;\n }\n\n return [...contacts].sort((a, b) => {\n const distA = calculateDistance(fromLat, fromLon, a.lat, a.lon);\n const distB = calculateDistance(fromLat, fromLon, b.lat, b.lon);\n\n // Null distances go to the end\n if (distA === null && distB === null) return 0;\n if (distA === null) return 1;\n if (distB === null) return -1;\n\n return distA - distB;\n });\n}\n\n/**\n * Get simple hop count from path string\n */\nexport function getHopCount(path: string | null | undefined): number {\n if (!path || path.length === 0) {\n return 0;\n }\n return Math.floor(path.length / 2);\n}\n\n/**\n * Format hop counts from multiple paths for display.\n * Returns something like \"d/1/3/3\" for direct, 1-hop, 3-hop, 3-hop paths.\n * Returns null if no paths or only direct.\n */\nexport function formatHopCounts(paths: MessagePath[] | null | undefined): {\n display: string;\n allDirect: boolean;\n hasMultiple: boolean;\n} {\n if (!paths || paths.length === 0) {\n return { display: '', allDirect: true, hasMultiple: false };\n }\n\n // Get hop counts for all paths and sort ascending\n const hopCounts = paths.map((p) => getHopCount(p.path)).sort((a, b) => a - b);\n\n const allDirect = hopCounts.every((h) => h === 0);\n const hasMultiple = paths.length > 1;\n\n // Format: \"d\" for 0, numbers for others\n const parts = hopCounts.map((h) => (h === 0 ? 'd' : h.toString()));\n const display = parts.join('/');\n\n return { display, allDirect, hasMultiple };\n}\n\n/**\n * Build complete path resolution with sender, hops, and receiver\n */\nexport function resolvePath(\n path: string | null | undefined,\n sender: SenderInfo,\n contacts: Contact[],\n config: RadioConfig | null\n): ResolvedPath {\n const hopPrefixes = parsePathHops(path);\n\n // Build sender info\n const senderPrefix = sender.publicKeyOrPrefix.toUpperCase().slice(0, 2);\n const resolvedSender = {\n name: sender.name,\n prefix: senderPrefix,\n lat: sender.lat,\n lon: sender.lon,\n };\n\n // Build receiver info from radio config\n const receiverPrefix = config?.public_key?.toUpperCase().slice(0, 2) || '??';\n const resolvedReceiver = {\n name: config?.name || 'Unknown',\n prefix: receiverPrefix,\n lat: config?.lat ?? null,\n lon: config?.lon ?? null,\n publicKey: config?.public_key ?? null,\n };\n\n // Build hops\n const hops: PathHop[] = [];\n let prevLat = sender.lat;\n let prevLon = sender.lon;\n // Start uncertain if sender has no valid location\n let prevHopUncertain = !isValidLocation(sender.lat, sender.lon);\n\n for (const prefix of hopPrefixes) {\n const matches = findContactsByPrefix(prefix, contacts, true);\n const sortedMatches = sortContactsByDistance(matches, prevLat, prevLon);\n\n // Calculate distance from previous hop\n // Can't calculate if previous hop was uncertain (unknown/ambiguous/no location) or current hop is unknown/invalid\n let distanceFromPrev: number | null = null;\n const currentHasValidLocation =\n sortedMatches.length === 1 && isValidLocation(sortedMatches[0].lat, sortedMatches[0].lon);\n if (!prevHopUncertain && currentHasValidLocation) {\n distanceFromPrev = calculateDistance(\n prevLat,\n prevLon,\n sortedMatches[0].lat,\n sortedMatches[0].lon\n );\n }\n\n hops.push({\n prefix,\n matches: sortedMatches,\n distanceFromPrev,\n });\n\n // Update previous location for next hop\n if (sortedMatches.length === 0) {\n // Unknown hop - can't calculate distance for next hop\n prevHopUncertain = true;\n prevLat = null;\n prevLon = null;\n } else if (sortedMatches.length > 1) {\n // Ambiguous hop - can't calculate distance for next hop (too many combinations)\n prevHopUncertain = true;\n // Use first match's location for sorting purposes, but distance won't be shown\n if (isValidLocation(sortedMatches[0].lat, sortedMatches[0].lon)) {\n prevLat = sortedMatches[0].lat;\n prevLon = sortedMatches[0].lon;\n } else {\n prevLat = null;\n prevLon = null;\n }\n } else if (isValidLocation(sortedMatches[0].lat, sortedMatches[0].lon)) {\n prevHopUncertain = false;\n prevLat = sortedMatches[0].lat;\n prevLon = sortedMatches[0].lon;\n } else {\n // Known hop but no valid location - treat as uncertain for distance purposes\n prevHopUncertain = true;\n prevLat = null;\n prevLon = null;\n }\n }\n\n // Calculate total distances (can be multiple if ambiguous)\n const totalDistances = calculateTotalDistances(resolvedSender, hops, resolvedReceiver);\n\n // Determine if path has any gaps (unknown, ambiguous, or missing location)\n const hasGaps =\n !isValidLocation(resolvedSender.lat, resolvedSender.lon) ||\n !isValidLocation(resolvedReceiver.lat, resolvedReceiver.lon) ||\n hops.some(\n (hop) => hop.matches.length !== 1 || !isValidLocation(hop.matches[0].lat, hop.matches[0].lon)\n );\n\n return {\n sender: resolvedSender,\n hops,\n receiver: resolvedReceiver,\n totalDistances,\n hasGaps,\n };\n}\n\n/**\n * Calculate total distance(s) for the path\n * Returns array for ambiguous paths, null if any segment can't be calculated\n * If sender has no location, starts calculating from first hop with location\n */\nfunction calculateTotalDistances(\n sender: { lat: number | null; lon: number | null },\n hops: PathHop[],\n receiver: { lat: number | null; lon: number | null }\n): number[] | null {\n // Simple case: no hops\n if (hops.length === 0) {\n if (!isValidLocation(sender.lat, sender.lon) || !isValidLocation(receiver.lat, receiver.lon)) {\n return null;\n }\n const dist = calculateDistance(sender.lat, sender.lon, receiver.lat, receiver.lon);\n return dist !== null ? [dist] : null;\n }\n\n // Start from sender if it has valid location, otherwise find first hop with valid location\n let prevLat = sender.lat;\n let prevLon = sender.lon;\n let startHopIndex = 0;\n\n if (!isValidLocation(prevLat, prevLon)) {\n // Find first hop with a known, unambiguous, valid location\n for (let i = 0; i < hops.length; i++) {\n const hop = hops[i];\n if (hop.matches.length === 1 && isValidLocation(hop.matches[0].lat, hop.matches[0].lon)) {\n prevLat = hop.matches[0].lat;\n prevLon = hop.matches[0].lon;\n startHopIndex = i + 1;\n break;\n }\n }\n // If no hop has valid location, can't calculate\n if (!isValidLocation(prevLat, prevLon)) {\n return null;\n }\n }\n\n // Sum up only unambiguous segments (where both endpoints are known and unambiguous)\n let totalDistance = 0;\n let hasAnyDistance = false;\n let lastUnambiguousHopIndex = -1; // Track last unambiguous hop for receiver distance\n\n for (let i = startHopIndex; i < hops.length; i++) {\n const hop = hops[i];\n\n // Skip if hop is unknown or ambiguous or has no valid location\n if (hop.matches.length !== 1 || !isValidLocation(hop.matches[0].lat, hop.matches[0].lon)) {\n // Can't include this segment - reset prevLat/prevLon for next potential segment\n prevLat = null;\n prevLon = null;\n continue;\n }\n\n // Only calculate distance if previous location is known (unambiguous)\n if (prevLat !== null && prevLon !== null) {\n const dist = calculateDistance(prevLat, prevLon, hop.matches[0].lat, hop.matches[0].lon);\n if (dist !== null) {\n totalDistance += dist;\n hasAnyDistance = true;\n }\n }\n\n // Update for next iteration\n prevLat = hop.matches[0].lat;\n prevLon = hop.matches[0].lon;\n lastUnambiguousHopIndex = i;\n }\n\n // Add final leg to receiver only if last hop was unambiguous and receiver has valid location\n if (lastUnambiguousHopIndex === hops.length - 1 && prevLat !== null && prevLon !== null) {\n if (isValidLocation(receiver.lat, receiver.lon)) {\n const finalDist = calculateDistance(prevLat, prevLon, receiver.lat, receiver.lon);\n if (finalDist !== null) {\n totalDistance += finalDist;\n hasAnyDistance = true;\n }\n }\n }\n\n // Return total if we calculated any distance\n return hasAnyDistance ? [totalDistance] : null;\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","import type { Conversation } from '../types';\n\nexport interface ParsedHashConversation {\n type: 'channel' | 'contact' | 'raw' | 'map';\n name: string;\n /** For map view: public key prefix to focus on */\n mapFocusKey?: string;\n}\n\n// Parse URL hash to get conversation (e.g., #channel/Public or #contact/JohnDoe or #raw or #map/focus/ABCD1234)\nexport function parseHashConversation(): ParsedHashConversation | null {\n const hash = window.location.hash.slice(1); // Remove leading #\n if (!hash) return null;\n\n if (hash === 'raw') {\n return { type: 'raw', name: 'raw' };\n }\n\n if (hash === 'map') {\n return { type: 'map', name: 'map' };\n }\n\n // Check for map with focus: #map/focus/{pubkey_prefix}\n if (hash.startsWith('map/focus/')) {\n const focusKey = hash.slice('map/focus/'.length);\n if (focusKey) {\n return { type: 'map', name: 'map', mapFocusKey: decodeURIComponent(focusKey) };\n }\n return { type: 'map', name: 'map' };\n }\n\n const slashIndex = hash.indexOf('/');\n if (slashIndex === -1) return null;\n\n const type = hash.slice(0, slashIndex);\n const name = decodeURIComponent(hash.slice(slashIndex + 1));\n\n if ((type === 'channel' || type === 'contact') && name) {\n return { type, name };\n }\n return null;\n}\n\n/**\n * Generate a URL hash for focusing on a contact in the map view\n * @param publicKeyPrefix - The public key or prefix to focus on\n */\nexport function getMapFocusHash(publicKeyPrefix: string): string {\n return `#map/focus/${encodeURIComponent(publicKeyPrefix)}`;\n}\n\n// Generate URL hash from conversation\nexport function getConversationHash(conv: Conversation | null): string {\n if (!conv) return '';\n if (conv.type === 'raw') return '#raw';\n if (conv.type === 'map') return '#map';\n // Strip leading # from channel names for cleaner URLs\n const name =\n conv.type === 'channel' && conv.name.startsWith('#') ? conv.name.slice(1) : conv.name;\n return `#${conv.type}/${encodeURIComponent(name)}`;\n}\n\n// Update URL hash without adding to history\nexport function updateUrlHash(conv: Conversation | null): void {\n const newHash = getConversationHash(conv);\n if (newHash !== window.location.hash) {\n window.history.replaceState(null, '', newHash || window.location.pathname);\n }\n}\n","import type { Contact, RadioConfig, MessagePath } from '../types';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n} from './ui/dialog';\nimport { Button } from './ui/button';\nimport {\n resolvePath,\n calculateDistance,\n isValidLocation,\n formatDistance,\n type SenderInfo,\n type ResolvedPath,\n type PathHop,\n} from '../utils/pathUtils';\nimport { formatTime } from '../utils/messageParser';\nimport { getMapFocusHash } from '../utils/urlHash';\n\ninterface PathModalProps {\n open: boolean;\n onClose: () => void;\n paths: MessagePath[];\n senderInfo: SenderInfo;\n contacts: Contact[];\n config: RadioConfig | null;\n}\n\nexport function PathModal({ open, onClose, paths, senderInfo, contacts, config }: PathModalProps) {\n // Resolve all paths\n const resolvedPaths = paths.map((p) => ({\n ...p,\n resolved: resolvePath(p.path, senderInfo, contacts, config),\n }));\n\n const hasSinglePath = paths.length === 1;\n\n return (\n !isOpen && onClose()}>\n \n \n Message Path{!hasSinglePath && `s (${paths.length})`}\n \n {hasSinglePath ? (\n <>\n This shows one route that this message traveled through the mesh network.\n Routers may be incorrectly identified due to prefix collisions between heard and\n non-heard router advertisements.\n \n ) : (\n <>\n This message was received via {paths.length} different routes.\n Routers may be incorrectly identified due to prefix collisions.\n \n )}\n \n \n\n
\n {resolvedPaths.map((pathData, index) => (\n
\n {!hasSinglePath && (\n
\n Path {index + 1} — received {formatTime(pathData.received_at)}\n
\n )}\n \n
\n ))}\n\n {/* Straight-line distance shown once for multi-path (same for all routes) */}\n {!hasSinglePath &&\n resolvedPaths.length > 0 &&\n (() => {\n const first = resolvedPaths[0].resolved;\n if (\n isValidLocation(first.sender.lat, first.sender.lon) &&\n isValidLocation(first.receiver.lat, first.receiver.lon)\n ) {\n return (\n
\n Straight-line distance: \n \n {formatDistance(\n calculateDistance(\n first.sender.lat,\n first.sender.lon,\n first.receiver.lat,\n first.receiver.lon\n )!\n )}\n \n
\n );\n }\n return null;\n })()}\n
\n\n \n \n \n
\n
\n );\n}\n\ninterface PathVisualizationProps {\n resolved: ResolvedPath;\n senderInfo: SenderInfo;\n /** If true, hide the straight-line distance (shown once at container level for multi-path) */\n hideStraightLine?: boolean;\n}\n\nfunction PathVisualization({ resolved, senderInfo, hideStraightLine }: PathVisualizationProps) {\n // Track previous location for each hop to calculate distances\n // Returns null if previous hop was ambiguous or has invalid location\n const getPrevLocation = (hopIndex: number): { lat: number | null; lon: number | null } | null => {\n if (hopIndex === 0) {\n // Check if sender has valid location\n if (!isValidLocation(resolved.sender.lat, resolved.sender.lon)) {\n return null;\n }\n return { lat: resolved.sender.lat, lon: resolved.sender.lon };\n }\n const prevHop = resolved.hops[hopIndex - 1];\n // If previous hop was ambiguous, we can't show meaningful distances\n if (prevHop.matches.length > 1) {\n return null;\n }\n // If previous hop was unknown, we also can't calculate\n if (prevHop.matches.length === 0) {\n return null;\n }\n // Check if previous hop has valid location\n if (isValidLocation(prevHop.matches[0].lat, prevHop.matches[0].lon)) {\n return { lat: prevHop.matches[0].lat, lon: prevHop.matches[0].lon };\n }\n return null;\n };\n\n return (\n
\n {/* Sender */}\n \n\n {/* Hops */}\n {resolved.hops.map((hop, index) => (\n \n ))}\n\n {/* Receiver */}\n \n\n {/* Total distance */}\n {resolved.totalDistances && resolved.totalDistances.length > 0 && (\n
\n \n Presumed unambiguous distance covered:{' '}\n \n \n {resolved.hasGaps ? '>' : ''}\n {formatDistance(resolved.totalDistances[0])}\n \n
\n )}\n\n {/* Straight-line distance (when both sender and receiver have coordinates) */}\n {!hideStraightLine &&\n isValidLocation(resolved.sender.lat, resolved.sender.lon) &&\n isValidLocation(resolved.receiver.lat, resolved.receiver.lon) && (\n 0\n ? 'pt-1'\n : 'pt-3 mt-3 border-t border-border'\n }\n >\n Straight-line distance: \n \n {formatDistance(\n calculateDistance(\n resolved.sender.lat,\n resolved.sender.lon,\n resolved.receiver.lat,\n resolved.receiver.lon\n )!\n )}\n \n
\n )}\n
\n );\n}\n\ninterface PathNodeProps {\n label: string;\n name: string;\n prefix: string;\n distance: number | null;\n isFirst?: boolean;\n isLast?: boolean;\n /** Optional coordinates for map link */\n lat?: number | null;\n lon?: number | null;\n /** Public key for map focus link (required if lat/lon provided) */\n publicKey?: string;\n}\n\nfunction PathNode({\n label,\n name,\n prefix,\n distance,\n isFirst,\n isLast,\n lat,\n lon,\n publicKey,\n}: PathNodeProps) {\n const hasLocation = isValidLocation(lat ?? null, lon ?? null) && publicKey;\n\n return (\n
\n {/* Vertical line and dot column */}\n
\n {!isFirst &&
}\n
\n {!isLast &&
}\n
\n\n {/* Content */}\n
\n
{label}
\n
\n {name} ({prefix})\n {distance !== null && (\n - {formatDistance(distance)}\n )}\n {hasLocation && }\n
\n
\n
\n );\n}\n\ninterface HopNodeProps {\n hop: PathHop;\n hopNumber: number;\n prevLocation: { lat: number | null; lon: number | null } | null;\n}\n\nfunction HopNode({ hop, hopNumber, prevLocation }: HopNodeProps) {\n const isAmbiguous = hop.matches.length > 1;\n const isUnknown = hop.matches.length === 0;\n\n // Calculate distance from previous location for a contact\n // Returns null if prev location unknown/ambiguous or contact has no valid location\n const getDistanceForContact = (contact: {\n lat: number | null;\n lon: number | null;\n }): number | null => {\n if (!prevLocation || prevLocation.lat === null || prevLocation.lon === null) {\n return null;\n }\n // Check if contact has valid location\n if (!isValidLocation(contact.lat, contact.lon)) {\n return null;\n }\n return calculateDistance(prevLocation.lat, prevLocation.lon, contact.lat, contact.lon);\n };\n\n return (\n
\n {/* Vertical line and dot column */}\n
\n
\n
\n
\n
\n\n {/* Content */}\n
\n
\n Hop {hopNumber}\n {isAmbiguous && (ambiguous)}\n
\n\n {isUnknown ? (\n
\n <UNKNOWN {hop.prefix}>\n
\n ) : isAmbiguous ? (\n
\n {hop.matches.map((contact) => {\n const dist = getDistanceForContact(contact);\n const hasLocation = isValidLocation(contact.lat, contact.lon);\n return (\n
\n {contact.name || contact.public_key.slice(0, 12)}{' '}\n \n ({contact.public_key.slice(0, 2).toUpperCase()})\n \n {dist !== null && (\n \n - {formatDistance(dist)}\n \n )}\n {hasLocation && (\n \n )}\n
\n );\n })}\n
\n ) : (\n
\n {hop.matches[0].name || hop.matches[0].public_key.slice(0, 12)}{' '}\n ({hop.prefix})\n {hop.distanceFromPrev !== null && (\n \n - {formatDistance(hop.distanceFromPrev)}\n \n )}\n {isValidLocation(hop.matches[0].lat, hop.matches[0].lon) && (\n \n )}\n
\n )}\n
\n
\n );\n}\n\n/**\n * Render clickable coordinates that open the map focused on the contact\n */\nfunction CoordinateLink({ lat, lon, publicKey }: { lat: number; lon: number; publicKey: string }) {\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n // Open map in new tab with focus on this contact\n const url = window.location.origin + window.location.pathname + getMapFocusHash(publicKey);\n window.open(url, '_blank');\n };\n\n return (\n \n ({lat.toFixed(4)}, {lon.toFixed(4)})\n \n );\n}\n\nfunction calculateReceiverDistance(resolved: ResolvedPath): number | null {\n // Get last hop's location (if any)\n let prevLat: number | null = null;\n let prevLon: number | null = null;\n\n if (resolved.hops.length > 0) {\n const lastHop = resolved.hops[resolved.hops.length - 1];\n // Only use last hop if it's unambiguous and has valid location\n if (\n lastHop.matches.length === 1 &&\n isValidLocation(lastHop.matches[0].lat, lastHop.matches[0].lon)\n ) {\n prevLat = lastHop.matches[0].lat;\n prevLon = lastHop.matches[0].lon;\n }\n } else {\n // No hops, calculate from sender to receiver (if sender has valid location)\n if (isValidLocation(resolved.sender.lat, resolved.sender.lon)) {\n prevLat = resolved.sender.lat;\n prevLon = resolved.sender.lon;\n }\n }\n\n if (prevLat === null || prevLon === null) {\n return null;\n }\n\n // Check receiver has valid location\n if (!isValidLocation(resolved.receiver.lat, resolved.receiver.lon)) {\n return null;\n }\n\n return calculateDistance(prevLat, prevLon, resolved.receiver.lat, resolved.receiver.lon);\n}\n","import { useEffect, useLayoutEffect, useRef, useCallback, useState, type ReactNode } from 'react';\nimport type { Contact, Message, MessagePath, RadioConfig } from '../types';\nimport { CONTACT_TYPE_REPEATER } from '../types';\nimport { formatTime, parseSenderFromText } from '../utils/messageParser';\nimport { pubkeysMatch } from '../utils/pubkey';\nimport { formatHopCounts, type SenderInfo } from '../utils/pathUtils';\nimport { ContactAvatar } from './ContactAvatar';\nimport { PathModal } from './PathModal';\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 config?: RadioConfig | null;\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\n// Clickable hop count badge that opens the path modal\ninterface HopCountBadgeProps {\n paths: MessagePath[];\n onClick: () => void;\n variant: 'header' | 'inline';\n}\n\nfunction HopCountBadge({ paths, onClick, variant }: HopCountBadgeProps) {\n const hopInfo = formatHopCounts(paths);\n // Single direct: \"(d)\", otherwise \"(d/1/3 hops)\"\n const label =\n hopInfo.allDirect && !hopInfo.hasMultiple\n ? `(${hopInfo.display})`\n : `(${hopInfo.display} hops)`;\n\n const className =\n variant === 'header'\n ? 'font-normal text-muted-foreground/70 ml-1 text-[11px] cursor-pointer hover:text-primary hover:underline'\n : 'text-[10px] text-muted-foreground/50 ml-1 cursor-pointer hover:text-primary hover:underline';\n\n return (\n {\n e.stopPropagation();\n onClick();\n }}\n title=\"View message path\"\n >\n {label}\n \n );\n}\n\nexport function MessageList({\n messages,\n contacts,\n loading,\n loadingOlder = false,\n hasOlderMessages = false,\n onSenderClick,\n onLoadOlder,\n radioName,\n config,\n}: MessageListProps) {\n const listRef = useRef(null);\n const prevMessagesLengthRef = useRef(0);\n const isInitialLoadRef = useRef(true);\n const [showScrollToBottom, setShowScrollToBottom] = useState(false);\n const [selectedPath, setSelectedPath] = useState<{\n paths: MessagePath[];\n senderInfo: SenderInfo;\n } | null>(null);\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 // Build sender info for path modal\n const getSenderInfo = (\n msg: Message,\n contact: Contact | null,\n parsedSender: string | null\n ): SenderInfo => {\n if (msg.type === 'PRIV' && contact) {\n return {\n name: contact.name || contact.public_key.slice(0, 12),\n publicKeyOrPrefix: contact.public_key,\n lat: contact.lat,\n lon: contact.lon,\n };\n }\n // For channel messages, try to find contact by parsed sender name\n if (parsedSender) {\n const senderContact = getContactByName(parsedSender);\n if (senderContact) {\n return {\n name: parsedSender,\n publicKeyOrPrefix: senderContact.public_key,\n lat: senderContact.lat,\n lon: senderContact.lon,\n };\n }\n }\n // Fallback: unknown sender\n return {\n name: parsedSender || 'Unknown',\n publicKeyOrPrefix: msg.conversation_key || '',\n lat: null,\n lon: null,\n };\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 {!msg.outgoing && msg.paths && msg.paths.length > 0 && (\n \n setSelectedPath({\n paths: msg.paths!,\n senderInfo: getSenderInfo(msg, contact, sender),\n })\n }\n />\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 \n {formatTime(msg.sender_timestamp || msg.received_at)}\n \n {!msg.outgoing && msg.paths && msg.paths.length > 0 && (\n \n setSelectedPath({\n paths: msg.paths!,\n senderInfo: getSenderInfo(msg, contact, sender),\n })\n }\n />\n )}\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 {/* Path modal */}\n {selectedPath && (\n setSelectedPath(null)}\n paths={selectedPath.paths}\n senderInfo={selectedPath.senderInfo}\n contacts={contacts}\n config={config ?? null}\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/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 { 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 { 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, rebooting...');\n setLoading(false);\n setRebooting(true);\n await onReboot();\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to save');\n setLoading(false);\n } finally {\n setRebooting(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, rebooting...');\n setLoading(false);\n setRebooting(true);\n await onReboot();\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to set private key');\n setLoading(false);\n } finally {\n setRebooting(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 {loading || rebooting ? 'Saving & Rebooting...' : 'Save Radio Config & Reboot'}\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 {loading || rebooting ? 'Setting & Rebooting...' : 'Set Private Key & Reboot'}\n \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 \n\n \n {rebooting ? 'Rebooting...' : 'Reboot Radio'}\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 type { Contact, RadioConfig, MessagePath } from '../types';\nimport { CONTACT_TYPE_REPEATER } from '../types';\n\nexport interface PathHop {\n prefix: string; // 2-char hex prefix (e.g., \"1A\")\n matches: Contact[]; // Matched repeaters (empty=unknown, multiple=ambiguous)\n distanceFromPrev: number | null; // km from previous hop\n}\n\nexport interface ResolvedPath {\n sender: { name: string; prefix: string; lat: number | null; lon: number | null };\n hops: PathHop[];\n receiver: {\n name: string;\n prefix: string;\n lat: number | null;\n lon: number | null;\n publicKey: string | null;\n };\n totalDistances: number[] | null; // Single-element array with sum of unambiguous distances\n /** True if path has any gaps (unknown, ambiguous, or missing location hops) */\n hasGaps: boolean;\n}\n\nexport interface SenderInfo {\n name: string;\n publicKeyOrPrefix: string;\n lat: number | null;\n lon: number | null;\n}\n\n/**\n * Split hex string into 2-char hops\n */\nexport function parsePathHops(path: string | null | undefined): string[] {\n if (!path || path.length === 0) {\n return [];\n }\n\n const normalized = path.toUpperCase();\n const hops: string[] = [];\n\n for (let i = 0; i < normalized.length; i += 2) {\n if (i + 1 < normalized.length) {\n hops.push(normalized.slice(i, i + 2));\n }\n }\n\n return hops;\n}\n\n/**\n * Find contacts matching first 2 chars of public key (repeaters only for intermediate hops)\n */\nexport function findContactsByPrefix(\n prefix: string,\n contacts: Contact[],\n repeatersOnly: boolean = true\n): Contact[] {\n const normalizedPrefix = prefix.toUpperCase();\n return contacts.filter((c) => {\n if (repeatersOnly && c.type !== CONTACT_TYPE_REPEATER) {\n return false;\n }\n return c.public_key.toUpperCase().startsWith(normalizedPrefix);\n });\n}\n\n/**\n * Calculate distance between two points using Haversine formula\n * @returns Distance in km, or null if coordinates are missing\n */\nexport function calculateDistance(\n lat1: number | null,\n lon1: number | null,\n lat2: number | null,\n lon2: number | null\n): number | null {\n if (lat1 === null || lon1 === null || lat2 === null || lon2 === null) {\n return null;\n }\n\n const R = 6371; // Earth's radius in km\n const dLat = toRad(lat2 - lat1);\n const dLon = toRad(lon2 - lon1);\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n}\n\nfunction toRad(deg: number): number {\n return (deg * Math.PI) / 180;\n}\n\n/**\n * Check if coordinates represent a valid location\n * Returns false for null or (0, 0) which indicates unset location\n */\nexport function isValidLocation(lat: number | null, lon: number | null): boolean {\n if (lat === null || lon === null) {\n return false;\n }\n // (0, 0) is in the Atlantic Ocean - treat as unset\n if (lat === 0 && lon === 0) {\n return false;\n }\n return true;\n}\n\n/**\n * Format distance in human-readable form (m or km)\n */\nexport function formatDistance(km: number): string {\n if (km < 1) {\n return `${Math.round(km * 1000)}m`;\n }\n return `${km.toFixed(1)}km`;\n}\n\n/**\n * Sort contacts by distance from a reference point\n * Contacts without location are placed at the end\n */\nexport function sortContactsByDistance(\n contacts: Contact[],\n fromLat: number | null,\n fromLon: number | null\n): Contact[] {\n if (fromLat === null || fromLon === null) {\n return contacts;\n }\n\n return [...contacts].sort((a, b) => {\n const distA = calculateDistance(fromLat, fromLon, a.lat, a.lon);\n const distB = calculateDistance(fromLat, fromLon, b.lat, b.lon);\n\n // Null distances go to the end\n if (distA === null && distB === null) return 0;\n if (distA === null) return 1;\n if (distB === null) return -1;\n\n return distA - distB;\n });\n}\n\n/**\n * Get simple hop count from path string\n */\nexport function getHopCount(path: string | null | undefined): number {\n if (!path || path.length === 0) {\n return 0;\n }\n return Math.floor(path.length / 2);\n}\n\n/**\n * Format hop counts from multiple paths for display.\n * Returns something like \"d/1/3/3\" for direct, 1-hop, 3-hop, 3-hop paths.\n * Returns null if no paths or only direct.\n */\nexport function formatHopCounts(paths: MessagePath[] | null | undefined): {\n display: string;\n allDirect: boolean;\n hasMultiple: boolean;\n} {\n if (!paths || paths.length === 0) {\n return { display: '', allDirect: true, hasMultiple: false };\n }\n\n // Get hop counts for all paths and sort ascending\n const hopCounts = paths.map((p) => getHopCount(p.path)).sort((a, b) => a - b);\n\n const allDirect = hopCounts.every((h) => h === 0);\n const hasMultiple = paths.length > 1;\n\n // Format: \"d\" for 0, numbers for others\n const parts = hopCounts.map((h) => (h === 0 ? 'd' : h.toString()));\n const display = parts.join('/');\n\n return { display, allDirect, hasMultiple };\n}\n\n/**\n * Build complete path resolution with sender, hops, and receiver\n */\nexport function resolvePath(\n path: string | null | undefined,\n sender: SenderInfo,\n contacts: Contact[],\n config: RadioConfig | null\n): ResolvedPath {\n const hopPrefixes = parsePathHops(path);\n\n // Build sender info\n const senderPrefix = sender.publicKeyOrPrefix.toUpperCase().slice(0, 2);\n const resolvedSender = {\n name: sender.name,\n prefix: senderPrefix,\n lat: sender.lat,\n lon: sender.lon,\n };\n\n // Build receiver info from radio config\n const receiverPrefix = config?.public_key?.toUpperCase().slice(0, 2) || '??';\n const resolvedReceiver = {\n name: config?.name || 'Unknown',\n prefix: receiverPrefix,\n lat: config?.lat ?? null,\n lon: config?.lon ?? null,\n publicKey: config?.public_key ?? null,\n };\n\n // Build hops\n const hops: PathHop[] = [];\n let prevLat = sender.lat;\n let prevLon = sender.lon;\n // Start uncertain if sender has no valid location\n let prevHopUncertain = !isValidLocation(sender.lat, sender.lon);\n\n for (const prefix of hopPrefixes) {\n const matches = findContactsByPrefix(prefix, contacts, true);\n const sortedMatches = sortContactsByDistance(matches, prevLat, prevLon);\n\n // Calculate distance from previous hop\n // Can't calculate if previous hop was uncertain (unknown/ambiguous/no location) or current hop is unknown/invalid\n let distanceFromPrev: number | null = null;\n const currentHasValidLocation =\n sortedMatches.length === 1 && isValidLocation(sortedMatches[0].lat, sortedMatches[0].lon);\n if (!prevHopUncertain && currentHasValidLocation) {\n distanceFromPrev = calculateDistance(\n prevLat,\n prevLon,\n sortedMatches[0].lat,\n sortedMatches[0].lon\n );\n }\n\n hops.push({\n prefix,\n matches: sortedMatches,\n distanceFromPrev,\n });\n\n // Update previous location for next hop\n if (sortedMatches.length === 0) {\n // Unknown hop - can't calculate distance for next hop\n prevHopUncertain = true;\n prevLat = null;\n prevLon = null;\n } else if (sortedMatches.length > 1) {\n // Ambiguous hop - can't calculate distance for next hop (too many combinations)\n prevHopUncertain = true;\n // Use first match's location for sorting purposes, but distance won't be shown\n if (isValidLocation(sortedMatches[0].lat, sortedMatches[0].lon)) {\n prevLat = sortedMatches[0].lat;\n prevLon = sortedMatches[0].lon;\n } else {\n prevLat = null;\n prevLon = null;\n }\n } else if (isValidLocation(sortedMatches[0].lat, sortedMatches[0].lon)) {\n prevHopUncertain = false;\n prevLat = sortedMatches[0].lat;\n prevLon = sortedMatches[0].lon;\n } else {\n // Known hop but no valid location - treat as uncertain for distance purposes\n prevHopUncertain = true;\n prevLat = null;\n prevLon = null;\n }\n }\n\n // Calculate total distances (can be multiple if ambiguous)\n const totalDistances = calculateTotalDistances(resolvedSender, hops, resolvedReceiver);\n\n // Determine if path has any gaps (unknown, ambiguous, or missing location)\n const hasGaps =\n !isValidLocation(resolvedSender.lat, resolvedSender.lon) ||\n !isValidLocation(resolvedReceiver.lat, resolvedReceiver.lon) ||\n hops.some(\n (hop) => hop.matches.length !== 1 || !isValidLocation(hop.matches[0].lat, hop.matches[0].lon)\n );\n\n return {\n sender: resolvedSender,\n hops,\n receiver: resolvedReceiver,\n totalDistances,\n hasGaps,\n };\n}\n\n/**\n * Calculate total distance(s) for the path\n * Returns array for ambiguous paths, null if any segment can't be calculated\n * If sender has no location, starts calculating from first hop with location\n */\nfunction calculateTotalDistances(\n sender: { lat: number | null; lon: number | null },\n hops: PathHop[],\n receiver: { lat: number | null; lon: number | null }\n): number[] | null {\n // Simple case: no hops\n if (hops.length === 0) {\n if (!isValidLocation(sender.lat, sender.lon) || !isValidLocation(receiver.lat, receiver.lon)) {\n return null;\n }\n const dist = calculateDistance(sender.lat, sender.lon, receiver.lat, receiver.lon);\n return dist !== null ? [dist] : null;\n }\n\n // Start from sender if it has valid location, otherwise find first hop with valid location\n let prevLat = sender.lat;\n let prevLon = sender.lon;\n let startHopIndex = 0;\n\n if (!isValidLocation(prevLat, prevLon)) {\n // Find first hop with a known, unambiguous, valid location\n for (let i = 0; i < hops.length; i++) {\n const hop = hops[i];\n if (hop.matches.length === 1 && isValidLocation(hop.matches[0].lat, hop.matches[0].lon)) {\n prevLat = hop.matches[0].lat;\n prevLon = hop.matches[0].lon;\n startHopIndex = i + 1;\n break;\n }\n }\n // If no hop has valid location, can't calculate\n if (!isValidLocation(prevLat, prevLon)) {\n return null;\n }\n }\n\n // Sum up only unambiguous segments (where both endpoints are known and unambiguous)\n let totalDistance = 0;\n let hasAnyDistance = false;\n let lastUnambiguousHopIndex = -1; // Track last unambiguous hop for receiver distance\n\n for (let i = startHopIndex; i < hops.length; i++) {\n const hop = hops[i];\n\n // Skip if hop is unknown or ambiguous or has no valid location\n if (hop.matches.length !== 1 || !isValidLocation(hop.matches[0].lat, hop.matches[0].lon)) {\n // Can't include this segment - reset prevLat/prevLon for next potential segment\n prevLat = null;\n prevLon = null;\n continue;\n }\n\n // Only calculate distance if previous location is known (unambiguous)\n if (prevLat !== null && prevLon !== null) {\n const dist = calculateDistance(prevLat, prevLon, hop.matches[0].lat, hop.matches[0].lon);\n if (dist !== null) {\n totalDistance += dist;\n hasAnyDistance = true;\n }\n }\n\n // Update for next iteration\n prevLat = hop.matches[0].lat;\n prevLon = hop.matches[0].lon;\n lastUnambiguousHopIndex = i;\n }\n\n // Add final leg to receiver only if last hop was unambiguous and receiver has valid location\n if (lastUnambiguousHopIndex === hops.length - 1 && prevLat !== null && prevLon !== null) {\n if (isValidLocation(receiver.lat, receiver.lon)) {\n const finalDist = calculateDistance(prevLat, prevLon, receiver.lat, receiver.lon);\n if (finalDist !== null) {\n totalDistance += finalDist;\n hasAnyDistance = true;\n }\n }\n }\n\n // Return total if we calculated any distance\n return hasAnyDistance ? [totalDistance] : null;\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","import type { Conversation } from '../types';\n\nexport interface ParsedHashConversation {\n type: 'channel' | 'contact' | 'raw' | 'map';\n name: string;\n /** For map view: public key prefix to focus on */\n mapFocusKey?: string;\n}\n\n// Parse URL hash to get conversation (e.g., #channel/Public or #contact/JohnDoe or #raw or #map/focus/ABCD1234)\nexport function parseHashConversation(): ParsedHashConversation | null {\n const hash = window.location.hash.slice(1); // Remove leading #\n if (!hash) return null;\n\n if (hash === 'raw') {\n return { type: 'raw', name: 'raw' };\n }\n\n if (hash === 'map') {\n return { type: 'map', name: 'map' };\n }\n\n // Check for map with focus: #map/focus/{pubkey_prefix}\n if (hash.startsWith('map/focus/')) {\n const focusKey = hash.slice('map/focus/'.length);\n if (focusKey) {\n return { type: 'map', name: 'map', mapFocusKey: decodeURIComponent(focusKey) };\n }\n return { type: 'map', name: 'map' };\n }\n\n const slashIndex = hash.indexOf('/');\n if (slashIndex === -1) return null;\n\n const type = hash.slice(0, slashIndex);\n const name = decodeURIComponent(hash.slice(slashIndex + 1));\n\n if ((type === 'channel' || type === 'contact') && name) {\n return { type, name };\n }\n return null;\n}\n\n/**\n * Generate a URL hash for focusing on a contact in the map view\n * @param publicKeyPrefix - The public key or prefix to focus on\n */\nexport function getMapFocusHash(publicKeyPrefix: string): string {\n return `#map/focus/${encodeURIComponent(publicKeyPrefix)}`;\n}\n\n// Generate URL hash from conversation\nexport function getConversationHash(conv: Conversation | null): string {\n if (!conv) return '';\n if (conv.type === 'raw') return '#raw';\n if (conv.type === 'map') return '#map';\n // Strip leading # from channel names for cleaner URLs\n const name =\n conv.type === 'channel' && conv.name.startsWith('#') ? conv.name.slice(1) : conv.name;\n return `#${conv.type}/${encodeURIComponent(name)}`;\n}\n\n// Update URL hash without adding to history\nexport function updateUrlHash(conv: Conversation | null): void {\n const newHash = getConversationHash(conv);\n if (newHash !== window.location.hash) {\n window.history.replaceState(null, '', newHash || window.location.pathname);\n }\n}\n","import type { Contact, RadioConfig, MessagePath } from '../types';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n} from './ui/dialog';\nimport { Button } from './ui/button';\nimport {\n resolvePath,\n calculateDistance,\n isValidLocation,\n formatDistance,\n type SenderInfo,\n type ResolvedPath,\n type PathHop,\n} from '../utils/pathUtils';\nimport { formatTime } from '../utils/messageParser';\nimport { getMapFocusHash } from '../utils/urlHash';\n\ninterface PathModalProps {\n open: boolean;\n onClose: () => void;\n paths: MessagePath[];\n senderInfo: SenderInfo;\n contacts: Contact[];\n config: RadioConfig | null;\n}\n\nexport function PathModal({ open, onClose, paths, senderInfo, contacts, config }: PathModalProps) {\n // Resolve all paths\n const resolvedPaths = paths.map((p) => ({\n ...p,\n resolved: resolvePath(p.path, senderInfo, contacts, config),\n }));\n\n const hasSinglePath = paths.length === 1;\n\n return (\n !isOpen && onClose()}>\n \n \n Message Path{!hasSinglePath && `s (${paths.length})`}\n \n {hasSinglePath ? (\n <>\n This shows one route that this message traveled through the mesh network.\n Routers may be incorrectly identified due to prefix collisions between heard and\n non-heard router advertisements.\n \n ) : (\n <>\n This message was received via {paths.length} different routes.\n Routers may be incorrectly identified due to prefix collisions.\n \n )}\n \n \n\n
\n {resolvedPaths.map((pathData, index) => (\n
\n {!hasSinglePath && (\n
\n Path {index + 1} — received {formatTime(pathData.received_at)}\n
\n )}\n \n
\n ))}\n\n {/* Straight-line distance shown once for multi-path (same for all routes) */}\n {!hasSinglePath &&\n resolvedPaths.length > 0 &&\n (() => {\n const first = resolvedPaths[0].resolved;\n if (\n isValidLocation(first.sender.lat, first.sender.lon) &&\n isValidLocation(first.receiver.lat, first.receiver.lon)\n ) {\n return (\n
\n Straight-line distance: \n \n {formatDistance(\n calculateDistance(\n first.sender.lat,\n first.sender.lon,\n first.receiver.lat,\n first.receiver.lon\n )!\n )}\n \n
\n );\n }\n return null;\n })()}\n
\n\n \n \n \n
\n
\n );\n}\n\ninterface PathVisualizationProps {\n resolved: ResolvedPath;\n senderInfo: SenderInfo;\n /** If true, hide the straight-line distance (shown once at container level for multi-path) */\n hideStraightLine?: boolean;\n}\n\nfunction PathVisualization({ resolved, senderInfo, hideStraightLine }: PathVisualizationProps) {\n // Track previous location for each hop to calculate distances\n // Returns null if previous hop was ambiguous or has invalid location\n const getPrevLocation = (hopIndex: number): { lat: number | null; lon: number | null } | null => {\n if (hopIndex === 0) {\n // Check if sender has valid location\n if (!isValidLocation(resolved.sender.lat, resolved.sender.lon)) {\n return null;\n }\n return { lat: resolved.sender.lat, lon: resolved.sender.lon };\n }\n const prevHop = resolved.hops[hopIndex - 1];\n // If previous hop was ambiguous, we can't show meaningful distances\n if (prevHop.matches.length > 1) {\n return null;\n }\n // If previous hop was unknown, we also can't calculate\n if (prevHop.matches.length === 0) {\n return null;\n }\n // Check if previous hop has valid location\n if (isValidLocation(prevHop.matches[0].lat, prevHop.matches[0].lon)) {\n return { lat: prevHop.matches[0].lat, lon: prevHop.matches[0].lon };\n }\n return null;\n };\n\n return (\n
\n {/* Sender */}\n \n\n {/* Hops */}\n {resolved.hops.map((hop, index) => (\n \n ))}\n\n {/* Receiver */}\n \n\n {/* Total distance */}\n {resolved.totalDistances && resolved.totalDistances.length > 0 && (\n
\n \n Presumed unambiguous distance covered:{' '}\n \n \n {resolved.hasGaps ? '>' : ''}\n {formatDistance(resolved.totalDistances[0])}\n \n
\n )}\n\n {/* Straight-line distance (when both sender and receiver have coordinates) */}\n {!hideStraightLine &&\n isValidLocation(resolved.sender.lat, resolved.sender.lon) &&\n isValidLocation(resolved.receiver.lat, resolved.receiver.lon) && (\n 0\n ? 'pt-1'\n : 'pt-3 mt-3 border-t border-border'\n }\n >\n Straight-line distance: \n \n {formatDistance(\n calculateDistance(\n resolved.sender.lat,\n resolved.sender.lon,\n resolved.receiver.lat,\n resolved.receiver.lon\n )!\n )}\n \n
\n )}\n
\n );\n}\n\ninterface PathNodeProps {\n label: string;\n name: string;\n prefix: string;\n distance: number | null;\n isFirst?: boolean;\n isLast?: boolean;\n /** Optional coordinates for map link */\n lat?: number | null;\n lon?: number | null;\n /** Public key for map focus link (required if lat/lon provided) */\n publicKey?: string;\n}\n\nfunction PathNode({\n label,\n name,\n prefix,\n distance,\n isFirst,\n isLast,\n lat,\n lon,\n publicKey,\n}: PathNodeProps) {\n const hasLocation = isValidLocation(lat ?? null, lon ?? null) && publicKey;\n\n return (\n
\n {/* Vertical line and dot column */}\n
\n {!isFirst &&
}\n
\n {!isLast &&
}\n
\n\n {/* Content */}\n
\n
{label}
\n
\n {name} ({prefix})\n {distance !== null && (\n - {formatDistance(distance)}\n )}\n {hasLocation && }\n
\n
\n
\n );\n}\n\ninterface HopNodeProps {\n hop: PathHop;\n hopNumber: number;\n prevLocation: { lat: number | null; lon: number | null } | null;\n}\n\nfunction HopNode({ hop, hopNumber, prevLocation }: HopNodeProps) {\n const isAmbiguous = hop.matches.length > 1;\n const isUnknown = hop.matches.length === 0;\n\n // Calculate distance from previous location for a contact\n // Returns null if prev location unknown/ambiguous or contact has no valid location\n const getDistanceForContact = (contact: {\n lat: number | null;\n lon: number | null;\n }): number | null => {\n if (!prevLocation || prevLocation.lat === null || prevLocation.lon === null) {\n return null;\n }\n // Check if contact has valid location\n if (!isValidLocation(contact.lat, contact.lon)) {\n return null;\n }\n return calculateDistance(prevLocation.lat, prevLocation.lon, contact.lat, contact.lon);\n };\n\n return (\n
\n {/* Vertical line and dot column */}\n
\n
\n
\n
\n
\n\n {/* Content */}\n
\n
\n Hop {hopNumber}\n {isAmbiguous && (ambiguous)}\n
\n\n {isUnknown ? (\n
\n <UNKNOWN {hop.prefix}>\n
\n ) : isAmbiguous ? (\n
\n {hop.matches.map((contact) => {\n const dist = getDistanceForContact(contact);\n const hasLocation = isValidLocation(contact.lat, contact.lon);\n return (\n
\n {contact.name || contact.public_key.slice(0, 12)}{' '}\n \n ({contact.public_key.slice(0, 2).toUpperCase()})\n \n {dist !== null && (\n \n - {formatDistance(dist)}\n \n )}\n {hasLocation && (\n \n )}\n
\n );\n })}\n
\n ) : (\n
\n {hop.matches[0].name || hop.matches[0].public_key.slice(0, 12)}{' '}\n ({hop.prefix})\n {hop.distanceFromPrev !== null && (\n \n - {formatDistance(hop.distanceFromPrev)}\n \n )}\n {isValidLocation(hop.matches[0].lat, hop.matches[0].lon) && (\n \n )}\n
\n )}\n
\n
\n );\n}\n\n/**\n * Render clickable coordinates that open the map focused on the contact\n */\nfunction CoordinateLink({ lat, lon, publicKey }: { lat: number; lon: number; publicKey: string }) {\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n // Open map in new tab with focus on this contact\n const url = window.location.origin + window.location.pathname + getMapFocusHash(publicKey);\n window.open(url, '_blank');\n };\n\n return (\n \n ({lat.toFixed(4)}, {lon.toFixed(4)})\n \n );\n}\n\nfunction calculateReceiverDistance(resolved: ResolvedPath): number | null {\n // Get last hop's location (if any)\n let prevLat: number | null = null;\n let prevLon: number | null = null;\n\n if (resolved.hops.length > 0) {\n const lastHop = resolved.hops[resolved.hops.length - 1];\n // Only use last hop if it's unambiguous and has valid location\n if (\n lastHop.matches.length === 1 &&\n isValidLocation(lastHop.matches[0].lat, lastHop.matches[0].lon)\n ) {\n prevLat = lastHop.matches[0].lat;\n prevLon = lastHop.matches[0].lon;\n }\n } else {\n // No hops, calculate from sender to receiver (if sender has valid location)\n if (isValidLocation(resolved.sender.lat, resolved.sender.lon)) {\n prevLat = resolved.sender.lat;\n prevLon = resolved.sender.lon;\n }\n }\n\n if (prevLat === null || prevLon === null) {\n return null;\n }\n\n // Check receiver has valid location\n if (!isValidLocation(resolved.receiver.lat, resolved.receiver.lon)) {\n return null;\n }\n\n return calculateDistance(prevLat, prevLon, resolved.receiver.lat, resolved.receiver.lon);\n}\n","import { useEffect, useLayoutEffect, useRef, useCallback, useState, type ReactNode } from 'react';\nimport type { Contact, Message, MessagePath, RadioConfig } from '../types';\nimport { CONTACT_TYPE_REPEATER } from '../types';\nimport { formatTime, parseSenderFromText } from '../utils/messageParser';\nimport { pubkeysMatch } from '../utils/pubkey';\nimport { formatHopCounts, type SenderInfo } from '../utils/pathUtils';\nimport { ContactAvatar } from './ContactAvatar';\nimport { PathModal } from './PathModal';\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 config?: RadioConfig | null;\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\n// Clickable hop count badge that opens the path modal\ninterface HopCountBadgeProps {\n paths: MessagePath[];\n onClick: () => void;\n variant: 'header' | 'inline';\n}\n\nfunction HopCountBadge({ paths, onClick, variant }: HopCountBadgeProps) {\n const hopInfo = formatHopCounts(paths);\n // Single direct: \"(d)\", otherwise \"(d/1/3 hops)\"\n const label =\n hopInfo.allDirect && !hopInfo.hasMultiple\n ? `(${hopInfo.display})`\n : `(${hopInfo.display} hops)`;\n\n const className =\n variant === 'header'\n ? 'font-normal text-muted-foreground/70 ml-1 text-[11px] cursor-pointer hover:text-primary hover:underline'\n : 'text-[10px] text-muted-foreground/50 ml-1 cursor-pointer hover:text-primary hover:underline';\n\n return (\n {\n e.stopPropagation();\n onClick();\n }}\n title=\"View message path\"\n >\n {label}\n \n );\n}\n\nexport function MessageList({\n messages,\n contacts,\n loading,\n loadingOlder = false,\n hasOlderMessages = false,\n onSenderClick,\n onLoadOlder,\n radioName,\n config,\n}: MessageListProps) {\n const listRef = useRef(null);\n const prevMessagesLengthRef = useRef(0);\n const isInitialLoadRef = useRef(true);\n const [showScrollToBottom, setShowScrollToBottom] = useState(false);\n const [selectedPath, setSelectedPath] = useState<{\n paths: MessagePath[];\n senderInfo: SenderInfo;\n } | null>(null);\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 // Build sender info for path modal\n const getSenderInfo = (\n msg: Message,\n contact: Contact | null,\n parsedSender: string | null\n ): SenderInfo => {\n if (msg.type === 'PRIV' && contact) {\n return {\n name: contact.name || contact.public_key.slice(0, 12),\n publicKeyOrPrefix: contact.public_key,\n lat: contact.lat,\n lon: contact.lon,\n };\n }\n // For channel messages, try to find contact by parsed sender name\n if (parsedSender) {\n const senderContact = getContactByName(parsedSender);\n if (senderContact) {\n return {\n name: parsedSender,\n publicKeyOrPrefix: senderContact.public_key,\n lat: senderContact.lat,\n lon: senderContact.lon,\n };\n }\n }\n // Fallback: unknown sender\n return {\n name: parsedSender || 'Unknown',\n publicKeyOrPrefix: msg.conversation_key || '',\n lat: null,\n lon: null,\n };\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 {!msg.outgoing && msg.paths && msg.paths.length > 0 && (\n \n setSelectedPath({\n paths: msg.paths!,\n senderInfo: getSenderInfo(msg, contact, sender),\n })\n }\n />\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 \n {formatTime(msg.sender_timestamp || msg.received_at)}\n \n {!msg.outgoing && msg.paths && msg.paths.length > 0 && (\n \n setSelectedPath({\n paths: msg.paths!,\n senderInfo: getSenderInfo(msg, contact, sender),\n })\n }\n />\n )}\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 {/* Path modal */}\n {selectedPath && (\n setSelectedPath(null)}\n paths={selectedPath.paths}\n senderInfo={selectedPath.senderInfo}\n contacts={contacts}\n config={config ?? null}\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/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 { 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 { 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, rebooting...');\n setLoading(false);\n setRebooting(true);\n await onReboot();\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to save');\n setLoading(false);\n } finally {\n setRebooting(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, rebooting...');\n setLoading(false);\n setRebooting(true);\n await onReboot();\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to set private key');\n setLoading(false);\n } finally {\n setRebooting(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 {loading || rebooting ? 'Saving & Rebooting...' : 'Save Radio Config & Reboot'}\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 {loading || rebooting ? 'Setting & Rebooting...' : 'Set Private Key & Reboot'}\n \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 \n\n \n {rebooting ? 'Rebooting...' : 'Reboot Radio'}\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//