@omnitron-dev/omnitron 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/README.md +4 -0
  2. package/dist/BUILD.json +2 -2
  3. package/dist/cli/omnitron.js +26 -2
  4. package/dist/cli/omnitron.js.map +1 -1
  5. package/dist/cluster/mesh-link.js +1 -1
  6. package/dist/cluster/slave-connector.d.ts +2 -2
  7. package/dist/cluster/slave-connector.js +1 -1
  8. package/dist/commands/deploy.d.ts +4 -4
  9. package/dist/commands/deploy.js +4 -4
  10. package/dist/commands/discover.d.ts +2 -2
  11. package/dist/commands/discover.js +2 -2
  12. package/dist/commands/fleet-asking.d.ts +2 -2
  13. package/dist/commands/fleet-asking.js +2 -2
  14. package/dist/commands/fleet-recover.d.ts +2 -0
  15. package/dist/commands/fleet-recover.d.ts.map +1 -0
  16. package/dist/commands/fleet-recover.js +30 -0
  17. package/dist/commands/fleet-recover.js.map +1 -0
  18. package/dist/commands/host-ingress.d.ts +3 -0
  19. package/dist/commands/host-ingress.d.ts.map +1 -0
  20. package/dist/commands/host-ingress.js +31 -0
  21. package/dist/commands/host-ingress.js.map +1 -0
  22. package/dist/commands/infra.d.ts +2 -2
  23. package/dist/commands/infra.js +7 -7
  24. package/dist/commands/infra.js.map +1 -1
  25. package/dist/commands/logs.d.ts +1 -1
  26. package/dist/commands/logs.js +3 -3
  27. package/dist/commands/logs.js.map +1 -1
  28. package/dist/commands/node.d.ts +2 -14
  29. package/dist/commands/node.d.ts.map +1 -1
  30. package/dist/commands/node.js +33 -22
  31. package/dist/commands/node.js.map +1 -1
  32. package/dist/commands/pipeline.d.ts.map +1 -1
  33. package/dist/commands/pipeline.js +8 -1
  34. package/dist/commands/pipeline.js.map +1 -1
  35. package/dist/commands/project.d.ts +2 -2
  36. package/dist/commands/project.js +2 -2
  37. package/dist/commands/release.d.ts +1 -1
  38. package/dist/commands/release.js +4 -4
  39. package/dist/commands/release.js.map +1 -1
  40. package/dist/commands/remote.d.ts +3 -3
  41. package/dist/commands/remote.js +3 -3
  42. package/dist/commands/tor.d.ts +1 -1
  43. package/dist/commands/tor.js +2 -2
  44. package/dist/config/types.d.ts +9 -6
  45. package/dist/config/types.d.ts.map +1 -1
  46. package/dist/daemon/daemon-entry.js +1 -1
  47. package/dist/daemon/daemon-entry.js.map +1 -1
  48. package/dist/daemon/daemon.d.ts +5 -19
  49. package/dist/daemon/daemon.d.ts.map +1 -1
  50. package/dist/daemon/daemon.js +54 -51
  51. package/dist/daemon/daemon.js.map +1 -1
  52. package/dist/daemon/daemon.module.d.ts.map +1 -1
  53. package/dist/daemon/daemon.module.js +3 -5
  54. package/dist/daemon/daemon.module.js.map +1 -1
  55. package/dist/daemon/daemon.rpc-service.d.ts +2 -2
  56. package/dist/daemon/daemon.rpc-service.js +6 -6
  57. package/dist/daemon/daemon.rpc-service.js.map +1 -1
  58. package/dist/execution/data-channel.d.ts +1 -1
  59. package/dist/execution/data-channel.js +1 -1
  60. package/dist/execution/execution.service.d.ts +10 -3
  61. package/dist/execution/execution.service.d.ts.map +1 -1
  62. package/dist/execution/execution.service.js +101 -44
  63. package/dist/execution/execution.service.js.map +1 -1
  64. package/dist/infrastructure/bare-metal-plan.js +1 -1
  65. package/dist/infrastructure/bare-metal-plan.js.map +1 -1
  66. package/dist/infrastructure/config-payload.d.ts +4 -4
  67. package/dist/infrastructure/config-payload.js +4 -4
  68. package/dist/infrastructure/container-runtime.d.ts +2 -10
  69. package/dist/infrastructure/container-runtime.d.ts.map +1 -1
  70. package/dist/infrastructure/container-runtime.js +41 -20
  71. package/dist/infrastructure/container-runtime.js.map +1 -1
  72. package/dist/infrastructure/gateway-redis-db.d.ts +2 -2
  73. package/dist/infrastructure/gateway-redis-db.js +2 -2
  74. package/dist/infrastructure/host-ingress-config.d.ts +12 -0
  75. package/dist/infrastructure/host-ingress-config.d.ts.map +1 -0
  76. package/dist/infrastructure/host-ingress-config.js +197 -0
  77. package/dist/infrastructure/host-ingress-config.js.map +1 -0
  78. package/dist/infrastructure/host-ingress-lock.d.ts +4 -0
  79. package/dist/infrastructure/host-ingress-lock.d.ts.map +1 -0
  80. package/dist/infrastructure/host-ingress-lock.js +36 -0
  81. package/dist/infrastructure/host-ingress-lock.js.map +1 -0
  82. package/dist/infrastructure/host-ingress-runtime.d.ts +25 -0
  83. package/dist/infrastructure/host-ingress-runtime.d.ts.map +1 -0
  84. package/dist/infrastructure/host-ingress-runtime.js +114 -0
  85. package/dist/infrastructure/host-ingress-runtime.js.map +1 -0
  86. package/dist/infrastructure/host-ingress-takeover.d.ts +18 -0
  87. package/dist/infrastructure/host-ingress-takeover.d.ts.map +1 -0
  88. package/dist/infrastructure/host-ingress-takeover.js +142 -0
  89. package/dist/infrastructure/host-ingress-takeover.js.map +1 -0
  90. package/dist/infrastructure/host-ingress-types.d.ts +173 -0
  91. package/dist/infrastructure/host-ingress-types.d.ts.map +1 -0
  92. package/dist/infrastructure/host-ingress-types.js +2 -0
  93. package/dist/infrastructure/host-ingress-types.js.map +1 -0
  94. package/dist/infrastructure/host-ingress.service.d.ts +47 -0
  95. package/dist/infrastructure/host-ingress.service.d.ts.map +1 -0
  96. package/dist/infrastructure/host-ingress.service.js +514 -0
  97. package/dist/infrastructure/host-ingress.service.js.map +1 -0
  98. package/dist/infrastructure/infrastructure.service.d.ts +21 -5
  99. package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
  100. package/dist/infrastructure/infrastructure.service.js +91 -10
  101. package/dist/infrastructure/infrastructure.service.js.map +1 -1
  102. package/dist/infrastructure/orphan-containers.d.ts +7 -7
  103. package/dist/infrastructure/orphan-containers.js +6 -6
  104. package/dist/infrastructure/presets/minio.js +1 -1
  105. package/dist/infrastructure/presets/minio.js.map +1 -1
  106. package/dist/infrastructure/provisioning-outcome.d.ts +1 -1
  107. package/dist/infrastructure/provisioning-outcome.js +1 -1
  108. package/dist/infrastructure/service-binding.js +1 -1
  109. package/dist/infrastructure/service-resolver.d.ts +10 -4
  110. package/dist/infrastructure/service-resolver.d.ts.map +1 -1
  111. package/dist/infrastructure/service-resolver.js +88 -45
  112. package/dist/infrastructure/service-resolver.js.map +1 -1
  113. package/dist/infrastructure/shipped-config.js +4 -4
  114. package/dist/infrastructure/stack-infra-manager.d.ts +10 -1
  115. package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
  116. package/dist/infrastructure/stack-infra-manager.js +53 -43
  117. package/dist/infrastructure/stack-infra-manager.js.map +1 -1
  118. package/dist/infrastructure/types.d.ts +8 -6
  119. package/dist/infrastructure/types.d.ts.map +1 -1
  120. package/dist/monitoring/log-line.d.ts +3 -3
  121. package/dist/monitoring/log-line.js +3 -3
  122. package/dist/monitoring/log-manager.d.ts +3 -3
  123. package/dist/monitoring/log-manager.js +3 -3
  124. package/dist/operations.d.ts +16 -0
  125. package/dist/operations.d.ts.map +1 -0
  126. package/dist/operations.js +13 -0
  127. package/dist/operations.js.map +1 -0
  128. package/dist/orchestrator/app-handle.d.ts +3 -3
  129. package/dist/orchestrator/app-handle.js +3 -3
  130. package/dist/orchestrator/bootstrap-loader.d.ts +2 -2
  131. package/dist/orchestrator/bootstrap-loader.js +3 -3
  132. package/dist/orchestrator/bootstrap-loader.js.map +1 -1
  133. package/dist/orchestrator/bootstrap-process.d.ts +1 -1
  134. package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
  135. package/dist/orchestrator/bootstrap-process.js +3 -2
  136. package/dist/orchestrator/bootstrap-process.js.map +1 -1
  137. package/dist/orchestrator/build-service.d.ts +6 -12
  138. package/dist/orchestrator/build-service.d.ts.map +1 -1
  139. package/dist/orchestrator/build-service.js +120 -83
  140. package/dist/orchestrator/build-service.js.map +1 -1
  141. package/dist/orchestrator/call-exposed-service.js +1 -1
  142. package/dist/orchestrator/classic-launcher.d.ts.map +1 -1
  143. package/dist/orchestrator/classic-launcher.js +6 -1
  144. package/dist/orchestrator/classic-launcher.js.map +1 -1
  145. package/dist/orchestrator/file-watcher.d.ts +1 -0
  146. package/dist/orchestrator/file-watcher.d.ts.map +1 -1
  147. package/dist/orchestrator/file-watcher.js +14 -3
  148. package/dist/orchestrator/file-watcher.js.map +1 -1
  149. package/dist/orchestrator/http-routes.d.ts +4 -0
  150. package/dist/orchestrator/http-routes.d.ts.map +1 -0
  151. package/dist/orchestrator/http-routes.js +19 -0
  152. package/dist/orchestrator/http-routes.js.map +1 -0
  153. package/dist/orchestrator/orchestrator.service.d.ts +18 -4
  154. package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
  155. package/dist/orchestrator/orchestrator.service.js +151 -110
  156. package/dist/orchestrator/orchestrator.service.js.map +1 -1
  157. package/dist/orchestrator/service-router.d.ts +1 -1
  158. package/dist/orchestrator/service-router.js +1 -1
  159. package/dist/orchestrator/topology-query.d.ts +1 -1
  160. package/dist/orchestrator/topology-query.js +1 -1
  161. package/dist/project/artifact-builder.js +2 -2
  162. package/dist/project/artifact-builder.js.map +1 -1
  163. package/dist/project/build-decision.d.ts +1 -1
  164. package/dist/project/build-decision.js +1 -1
  165. package/dist/project/config-resolver.js +1 -1
  166. package/dist/project/config-resolver.js.map +1 -1
  167. package/dist/project/declared-config.d.ts +2 -2
  168. package/dist/project/declared-config.js +2 -2
  169. package/dist/project/deploy-phases.d.ts +1 -1
  170. package/dist/project/deploy-phases.js +1 -1
  171. package/dist/project/exec-in-group.d.ts +1 -1
  172. package/dist/project/exec-in-group.js +1 -1
  173. package/dist/project/node-app-config.d.ts +2 -2
  174. package/dist/project/node-app-config.js +2 -2
  175. package/dist/project/node-app-config.js.map +1 -1
  176. package/dist/project/node-app-health.d.ts +1 -1
  177. package/dist/project/node-app-health.js +1 -1
  178. package/dist/project/operator-account.d.ts +9 -3
  179. package/dist/project/operator-account.d.ts.map +1 -1
  180. package/dist/project/operator-account.js +9 -9
  181. package/dist/project/operator-account.js.map +1 -1
  182. package/dist/project/registry.d.ts.map +1 -1
  183. package/dist/project/registry.js +4 -22
  184. package/dist/project/registry.js.map +1 -1
  185. package/dist/project/stack-env.d.ts +1 -1
  186. package/dist/project/stack-env.js +1 -1
  187. package/dist/project/stand-containers.d.ts +9 -2
  188. package/dist/project/stand-containers.d.ts.map +1 -1
  189. package/dist/project/stand-containers.js +17 -17
  190. package/dist/project/stand-containers.js.map +1 -1
  191. package/dist/release/artifact-store.d.ts +1 -1
  192. package/dist/release/artifact-store.d.ts.map +1 -1
  193. package/dist/release/artifact-store.js +1 -1
  194. package/dist/release/artifact-store.js.map +1 -1
  195. package/dist/release/attest-on-node.d.ts +3 -2
  196. package/dist/release/attest-on-node.d.ts.map +1 -1
  197. package/dist/release/attest-on-node.js +6 -6
  198. package/dist/release/attest-on-node.js.map +1 -1
  199. package/dist/release/attest.d.ts +3 -3
  200. package/dist/release/attest.js +1 -1
  201. package/dist/release/build-run.d.ts +2 -2
  202. package/dist/release/build-run.js +4 -4
  203. package/dist/release/build-run.js.map +1 -1
  204. package/dist/release/builder.d.ts +1 -1
  205. package/dist/release/builder.d.ts.map +1 -1
  206. package/dist/release/builder.js +1 -1
  207. package/dist/release/builder.js.map +1 -1
  208. package/dist/release/daemon-omni.d.ts +1 -1
  209. package/dist/release/daemon-omni.js +1 -1
  210. package/dist/release/definition-inputs.d.ts +1 -1
  211. package/dist/release/definition-inputs.js +1 -1
  212. package/dist/release/layout.d.ts +2 -2
  213. package/dist/release/layout.js +2 -2
  214. package/dist/release/manifest.d.ts +1 -1
  215. package/dist/release/manifest.js +1 -1
  216. package/dist/release/publish.d.ts +1 -1
  217. package/dist/release/publish.js +1 -1
  218. package/dist/release/store.d.ts +1 -1
  219. package/dist/release/store.d.ts.map +1 -1
  220. package/dist/release/store.js +3 -3
  221. package/dist/release/store.js.map +1 -1
  222. package/dist/services/alert.service.d.ts +2 -2
  223. package/dist/services/alert.service.js +2 -2
  224. package/dist/services/backup-pipeline.d.ts +1 -1
  225. package/dist/services/backup-pipeline.js +1 -1
  226. package/dist/services/backup.service.d.ts +3 -3
  227. package/dist/services/backup.service.js +3 -3
  228. package/dist/services/bundle-builder.d.ts +15 -12
  229. package/dist/services/bundle-builder.d.ts.map +1 -1
  230. package/dist/services/bundle-builder.js +124 -48
  231. package/dist/services/bundle-builder.js.map +1 -1
  232. package/dist/services/discovery.service.d.ts +1 -1
  233. package/dist/services/discovery.service.js +1 -1
  234. package/dist/services/host-operation-barrier.d.ts +8 -0
  235. package/dist/services/host-operation-barrier.d.ts.map +1 -0
  236. package/dist/services/host-operation-barrier.js +44 -0
  237. package/dist/services/host-operation-barrier.js.map +1 -0
  238. package/dist/services/host-upgrade.d.ts +129 -0
  239. package/dist/services/host-upgrade.d.ts.map +1 -0
  240. package/dist/services/host-upgrade.js +352 -0
  241. package/dist/services/host-upgrade.js.map +1 -0
  242. package/dist/services/infrastructure.rpc-service.d.ts +16 -1
  243. package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
  244. package/dist/services/infrastructure.rpc-service.js +71 -10
  245. package/dist/services/infrastructure.rpc-service.js.map +1 -1
  246. package/dist/services/local-bundle.d.ts +9 -0
  247. package/dist/services/local-bundle.d.ts.map +1 -1
  248. package/dist/services/local-bundle.js +11 -2
  249. package/dist/services/local-bundle.js.map +1 -1
  250. package/dist/services/log-collector.service.d.ts +1 -1
  251. package/dist/services/log-collector.service.js +1 -1
  252. package/dist/services/maintenance-lock.d.ts +2 -2
  253. package/dist/services/maintenance-lock.d.ts.map +1 -1
  254. package/dist/services/maintenance-lock.js +1 -1
  255. package/dist/services/migration-output.d.ts +2 -2
  256. package/dist/services/migration-output.js +2 -2
  257. package/dist/services/node-deploy-lease.d.ts +19 -2
  258. package/dist/services/node-deploy-lease.d.ts.map +1 -1
  259. package/dist/services/node-deploy-lease.js +84 -10
  260. package/dist/services/node-deploy-lease.js.map +1 -1
  261. package/dist/services/node-manager.rpc-service.d.ts +6 -1
  262. package/dist/services/node-manager.rpc-service.d.ts.map +1 -1
  263. package/dist/services/node-manager.rpc-service.js +25 -1
  264. package/dist/services/node-manager.rpc-service.js.map +1 -1
  265. package/dist/services/node-manager.service.d.ts +1 -1
  266. package/dist/services/node-manager.service.js +1 -1
  267. package/dist/services/node-upgrade.d.ts +1 -1
  268. package/dist/services/pipeline.rpc-service.d.ts +4 -0
  269. package/dist/services/pipeline.rpc-service.d.ts.map +1 -1
  270. package/dist/services/pipeline.rpc-service.js +9 -0
  271. package/dist/services/pipeline.rpc-service.js.map +1 -1
  272. package/dist/services/pipeline.service.d.ts +2 -0
  273. package/dist/services/pipeline.service.d.ts.map +1 -1
  274. package/dist/services/pipeline.service.js +12 -0
  275. package/dist/services/pipeline.service.js.map +1 -1
  276. package/dist/services/project.rpc-service.d.ts +7 -0
  277. package/dist/services/project.rpc-service.d.ts.map +1 -1
  278. package/dist/services/project.rpc-service.js +11 -0
  279. package/dist/services/project.rpc-service.js.map +1 -1
  280. package/dist/services/project.service.d.ts +21 -11
  281. package/dist/services/project.service.d.ts.map +1 -1
  282. package/dist/services/project.service.js +74 -59
  283. package/dist/services/project.service.js.map +1 -1
  284. package/dist/services/redeploy-decision.d.ts +2 -2
  285. package/dist/services/redeploy-decision.js +1 -1
  286. package/dist/services/release.rpc-service.d.ts +1 -1
  287. package/dist/services/release.rpc-service.js +1 -1
  288. package/dist/services/remote-deployer.service.d.ts +27 -16
  289. package/dist/services/remote-deployer.service.d.ts.map +1 -1
  290. package/dist/services/remote-deployer.service.js +269 -101
  291. package/dist/services/remote-deployer.service.js.map +1 -1
  292. package/dist/services/remote-provisioner.d.ts +2 -0
  293. package/dist/services/remote-provisioner.d.ts.map +1 -1
  294. package/dist/services/remote-provisioner.js +1 -1
  295. package/dist/services/remote-provisioner.js.map +1 -1
  296. package/dist/services/static-carry-forward.d.ts +26 -1
  297. package/dist/services/static-carry-forward.d.ts.map +1 -1
  298. package/dist/services/static-carry-forward.js +275 -1
  299. package/dist/services/static-carry-forward.js.map +1 -1
  300. package/dist/shared/dto/nodes.d.ts +2 -2
  301. package/dist/shared/dto/services.d.ts +27 -0
  302. package/dist/shared/dto/services.d.ts.map +1 -1
  303. package/dist/shared/local-infra-host.d.ts +2 -2
  304. package/dist/shared/local-infra-host.js +2 -2
  305. package/dist/shared/release-reading.d.ts +1 -1
  306. package/dist/shared/release-reading.js +1 -1
  307. package/package.json +16 -12
  308. package/webapp/dist/BUILD.json +2 -2
  309. package/webapp/dist/assets/FormControlLabel-BbSxpQwN.js +1 -0
  310. package/webapp/dist/assets/{Grid-BZ7xhoHQ.js → Grid-DizFZYue.js} +1 -1
  311. package/webapp/dist/assets/{Switch-DGSAxQPM.js → Switch-Bfiqzx8l.js} +1 -1
  312. package/webapp/dist/assets/alerts-DH_RVRS3.js +1 -0
  313. package/webapp/dist/assets/apps-B96355sz.js +1 -0
  314. package/webapp/dist/assets/audit-CYGtbi4k.js +1 -0
  315. package/webapp/dist/assets/client-BmqFExWT.js +1 -0
  316. package/webapp/dist/assets/containers-B_TpThln.js +2 -0
  317. package/webapp/dist/assets/dashboard-DHf2_65N.js +1 -0
  318. package/webapp/dist/assets/dashboard-builder-CWY2pjeG.js +1 -0
  319. package/webapp/dist/assets/{deploy-release-dialog-D6C-XcKY.js → deploy-release-dialog-Dp-zpSAd.js} +1 -1
  320. package/webapp/dist/assets/deployments-tJI6O3fK.js +1 -0
  321. package/webapp/dist/assets/detail-B2zP1Hto.js +8 -0
  322. package/webapp/dist/assets/detail-CoIrwmsy.js +1 -0
  323. package/webapp/dist/assets/detail-DWaGaOtL.js +2 -0
  324. package/webapp/dist/assets/index-Dvo0iprx.css +1 -0
  325. package/webapp/dist/assets/index-vMnY_4jR.js +412 -0
  326. package/webapp/dist/assets/logs-DTRjOfX8.js +12 -0
  327. package/webapp/dist/assets/maplibre-gl-DowHoZAx.js +814 -0
  328. package/webapp/dist/assets/{metrics-CQgjz2Lz.js → metrics-UCajtdox.js} +2 -2
  329. package/webapp/dist/assets/nodes-DuTVU0f6.js +7 -0
  330. package/webapp/dist/assets/pipelines-C8BeDcAl.js +4 -0
  331. package/webapp/dist/assets/projects-Dp_zFfLY.js +1 -0
  332. package/webapp/dist/assets/react-DlmbjZJV.js +1 -0
  333. package/webapp/dist/assets/react-apexcharts.esm-C8pn45ml.js +97 -0
  334. package/webapp/dist/assets/{release-bits-Dj4EOhhb.js → release-bits-BzTKz5fM.js} +1 -1
  335. package/webapp/dist/assets/release-build-panel-DcW9YcXQ.js +1 -0
  336. package/webapp/dist/assets/releases-B4hcr1bE.js +2 -0
  337. package/webapp/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
  338. package/webapp/dist/assets/settings-DIteZTbe.js +1 -0
  339. package/webapp/dist/assets/sign-in-D4kMBOHp.js +1 -0
  340. package/webapp/dist/assets/stacks-Brnf-EB7.js +1 -0
  341. package/webapp/dist/assets/{system-info-BtE3dgfw.js → system-info-CFDNVKkU.js} +1 -1
  342. package/webapp/dist/assets/topology-7WeTUsDN.js +12 -0
  343. package/webapp/dist/assets/traces-9c3gwCN-.js +1 -0
  344. package/webapp/dist/assets/{use-stack-context-CZUgPq88.js → use-stack-context-CnA5FTHu.js} +1 -1
  345. package/webapp/dist/index.html +6 -6
  346. package/webapp/dist/assets/FormControlLabel-BrH2diyl.js +0 -1
  347. package/webapp/dist/assets/alerts-sXqHJbsa.js +0 -1
  348. package/webapp/dist/assets/apps-B_Ah8Flh.js +0 -1
  349. package/webapp/dist/assets/audit-YXihwyui.js +0 -1
  350. package/webapp/dist/assets/client-CGbBvy9k.js +0 -1
  351. package/webapp/dist/assets/containers-Di4NOTLf.js +0 -2
  352. package/webapp/dist/assets/dashboard-Cfuf95N3.js +0 -1
  353. package/webapp/dist/assets/dashboard-builder-CowaYb-M.js +0 -1
  354. package/webapp/dist/assets/deployments-ChTq5kCw.js +0 -1
  355. package/webapp/dist/assets/detail-BsGWv7Dj.js +0 -1
  356. package/webapp/dist/assets/detail-CyVf_cw5.js +0 -2
  357. package/webapp/dist/assets/detail-D027j6aO.js +0 -8
  358. package/webapp/dist/assets/index-B8AHIPc-.css +0 -1
  359. package/webapp/dist/assets/index-DiZbrwxT.js +0 -414
  360. package/webapp/dist/assets/logs-L2b8Oqmo.js +0 -12
  361. package/webapp/dist/assets/maplibre-gl-MlmG2kbn.js +0 -801
  362. package/webapp/dist/assets/nodes-Nwia2Ty6.js +0 -7
  363. package/webapp/dist/assets/pipelines-DCu_rXOr.js +0 -4
  364. package/webapp/dist/assets/projects-Bb4aV76h.js +0 -1
  365. package/webapp/dist/assets/react-CwJFpaho.js +0 -1
  366. package/webapp/dist/assets/react-apexcharts.esm-Dy0Fez42.js +0 -1956
  367. package/webapp/dist/assets/release-build-panel-D6OCVlhT.js +0 -1
  368. package/webapp/dist/assets/releases-CnAt3yO6.js +0 -2
  369. package/webapp/dist/assets/rolldown-runtime-hePW80VL.js +0 -1
  370. package/webapp/dist/assets/settings-DU-mjiwb.js +0 -1
  371. package/webapp/dist/assets/sign-in-Bcvjrr4C.js +0 -1
  372. package/webapp/dist/assets/stacks-B-e8p50I.js +0 -1
  373. package/webapp/dist/assets/topology-Cwch-uF1.js +0 -12
  374. package/webapp/dist/assets/traces-BbShR-4P.js +0 -1
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{_ as n,n as r,v as i}from"./client-CGbBvy9k.js";import{Nt as a,On as o,Qn as s,Qt as c,Ut as l,_n as u,at as d,b as f,ct as p,en as m,ln as h,nn as g,nr as _,sn as v,tn as y,vn as b,yn as x,zt as S}from"./index-DiZbrwxT.js";import{a as C,l as w,o as T,p as E,r as D}from"./release-bits-Dj4EOhhb.js";var O=e(t(),1);function k(e){let t=/-\d{12}-([0-9a-f]{8})-([0-9a-f]{8})$/.exec(e);return{project:t?.[1]??null,omni:t?.[2]??null}}function A(e){let t=k(e.id);return{id:e.id,project:e.project??e.id.replace(/-\d{12}-[0-9a-f]{8}-[0-9a-f]{8}$/,``),complete:e.complete??!1,builtAt:e.builtAt??null,builtBy:e.builtBy??null,builtWith:e.builtWith??null,projectCommit:e.projectCommit??t.project,omniCommit:e.omniCommit??t.omni,projectRepo:e.projectRepo??null,omniRepo:e.omniRepo??null,onRemote:e.onRemote??{project:null,omni:null},gates:e.gates??{total:0,passed:0,failed:0,notRun:0},gateList:e.gateList??[],artifacts:e.artifacts??{count:0,bytes:0,apps:[],failed:[]},statics:e.statics??null,bytes:e.bytes??0,keptSource:e.keptSource??!1,machine:e.machine??null,verified:e.verified??[]}}function j(e){return{...e,history:e.history??[],gates:e.gates??[],request:e.request??{project:`(unknown)`}}}var M={async list(){let e=await i.list();return{root:e?.root??``,releases:(e?.releases??[]).map(A)}},async get(e){let t=await i.get({id:e});return{...A(t),manifest:t.manifest??null,logs:t.logs??[],root:t.root??``,attestations:t.attestations??[]}},async builds(){return(await i.builds()??[]).map(j)},async preflight(){let e=await i.preflight();return{root:e.root,canBuild:e.canBuild,missingTools:e.missingTools??[],path:e.path??[],load:Array.isArray(e.load)&&e.load.length===3?e.load:null,cpus:typeof e.cpus==`number`&&e.cpus>0?e.cpus:null}},async deployments(e=200){let[t,n]=await Promise.all([r.available().catch(()=>null),i.deployments({limit:e})]),a=(n??[]).map(e=>({...e,releaseUnnamed:e.releaseUnnamed??!1}));return E(t?.available===!0,a)}},N=s();function P({open:e,onClose:t,project:r,release:i,stack:s}){let E=_(),k=p(e=>e.stacksByProject),A=p(e=>e.fetchStacks),j=p(e=>e.startStack),P=k[r]??[],[F,I]=(0,O.useState)([]),[L,R]=(0,O.useState)(``),[z,B]=(0,O.useState)(s??``),[V,H]=(0,O.useState)(null),[U,W]=(0,O.useState)(!1),[G,K]=(0,O.useState)(!1),[q,J]=(0,O.useState)(null);(0,O.useEffect)(()=>{e&&P.length===0&&A(r)},[e,r,P.length,A]),(0,O.useEffect)(()=>{if(!e||i)return;let t=!0;return M.list().then(({releases:e})=>{if(!t)return;let n=e.filter(e=>e.project===r&&e.complete);I(n),R(e=>e||n[0]?.id||``)}).catch(e=>{t&&J(`The release store could not be read: ${e.message}`)}),()=>{t=!1}},[e,i,r]);let Y=i??F.find(e=>e.id===L)??null,X=Y?.id??``;(0,O.useEffect)(()=>{e&&(B(s??``),H(null),J(null))},[e,s,i?.id]),(0,O.useEffect)(()=>{if(H(null),!e||!X||!z)return;let t=!0;return W(!0),n.checkRelease({project:r,stack:z,release:X}).then(e=>{t&&H(e)}).catch(e=>{t&&H({ok:!1,because:`The daemon could not answer: ${e.message}`})}).finally(()=>{t&&W(!1)}),()=>{t=!1}},[e,r,z,X]);let Z=(0,O.useCallback)(async()=>{if(Y&&z){K(!0),J(null);try{await j(r,z,{release:Y.id});let e=p.getState().error;if(e){J(e),K(!1);return}t(),E(`/stacks/${z}`)}catch(e){if(d(e)){t(),E(`/stacks/${z}`);return}J(e.message)}finally{K(!1)}}},[Y,z,r,j,E,t]),Q=P.find(e=>e.name===z)?.config?.release?.mode===`required`;return(0,N.jsxs)(g,{open:e,onClose:G?void 0:t,maxWidth:`sm`,fullWidth:!0,children:[(0,N.jsx)(c,{children:`Deploy a release`}),(0,N.jsx)(m,{children:(0,N.jsxs)(S,{spacing:2.5,sx:{mt:1},children:[!i&&(0,N.jsxs)(a,{select:!0,label:`Release`,value:L,onChange:e=>R(e.target.value),size:`small`,fullWidth:!0,disabled:G,children:[F.length===0&&(0,N.jsxs)(l,{disabled:!0,value:``,children:[`Nothing has been built for `,r,` yet`]}),F.map(e=>(0,N.jsx)(l,{value:e.id,children:(0,N.jsxs)(S,{direction:`row`,spacing:1,sx:{width:`100%`,alignItems:`center`},children:[(0,N.jsx)(u,{variant:`body2`,sx:{fontFamily:`monospace`},children:e.id}),(0,N.jsx)(v,{sx:{flex:1}}),(0,N.jsx)(C,{release:e,variant:`caption`}),e.statics&&(0,N.jsx)(b,{label:e.statics.stack,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}})]})},e.id))]}),Y?(0,N.jsxs)(v,{children:[(0,N.jsx)(u,{variant:`body2`,sx:{fontFamily:`monospace`,fontWeight:600},children:Y.id}),(0,N.jsxs)(S,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mt:.75},children:[(0,N.jsx)(D,{projectCommit:Y.projectCommit,omniCommit:Y.omniCommit,onRemote:Y.onRemote,project:Y.project}),(0,N.jsx)(b,{size:`small`,variant:`outlined`,label:`${Y.artifacts.count} app${Y.artifacts.count===1?``:`s`}`,sx:{height:20,fontSize:11}}),Y.statics&&(0,N.jsx)(b,{size:`small`,variant:`outlined`,label:`statics: ${Y.statics.stack}`,sx:{height:20,fontSize:11}})]})]}):(0,N.jsx)(h,{severity:`warning`,children:`No release chosen.`}),(0,N.jsxs)(a,{select:!0,label:`Stack`,value:z,onChange:e=>B(e.target.value),size:`small`,fullWidth:!0,disabled:G,helperText:`A release is deployed to a remote or cluster stack; a local stack runs the working tree.`,children:[P.length===0&&(0,N.jsx)(l,{disabled:!0,value:``,children:`This project has no stacks`}),P.map(e=>(0,N.jsx)(l,{value:e.name,disabled:e.type===`local`,children:(0,N.jsxs)(S,{direction:`row`,spacing:1,sx:{alignItems:`center`,width:`100%`},children:[(0,N.jsx)(u,{variant:`body2`,children:e.name}),(0,N.jsx)(b,{label:e.type,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}}),e.config?.release?.mode===`required`&&(0,N.jsx)(b,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:10}}),(0,N.jsx)(v,{sx:{flex:1}}),(0,N.jsx)(u,{variant:`caption`,sx:{color:`text.secondary`},children:e.status})]})},e.name))]}),Y&&Y.gates.total>0&&(0,N.jsxs)(v,{children:[(0,N.jsx)(u,{variant:`caption`,sx:{color:`text.secondary`},children:w(Y.gateList)}),(0,N.jsx)(v,{sx:{mt:.5},children:(0,N.jsx)(T,{gates:Y.gateList})})]}),U&&(0,N.jsxs)(S,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,N.jsx)(o,{size:16}),(0,N.jsx)(u,{variant:`body2`,sx:{color:`text.secondary`},children:`Asking the daemon whether it would take this release…`})]}),V&&(0,N.jsx)(h,{severity:V.ok?`success`:`error`,children:(0,N.jsx)(u,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:V.because})}),Q&&(0,N.jsxs)(u,{variant:`caption`,sx:{color:`text.secondary`},children:[z,` takes releases only — its plain Start is refused by the daemon on purpose.`]}),q&&(0,N.jsx)(h,{severity:`error`,children:(0,N.jsx)(u,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:q})})]})}),(0,N.jsxs)(y,{children:[(0,N.jsx)(x,{onClick:t,size:`small`,disabled:G,children:`Cancel`}),(0,N.jsx)(x,{variant:`contained`,size:`small`,startIcon:G?(0,N.jsx)(o,{size:14,color:`inherit`}):(0,N.jsx)(f,{}),disabled:!Y||!z||G||U||V?.ok!==!0,onClick:Z,children:G?`Deploying…`:`Deploy`})]})]})}export{M as n,P as t};
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{_ as n,n as r,v as i}from"./client-BmqFExWT.js";import{$n as a,$t as o,Bt as s,Pt as c,Wt as l,at as u,b as d,bn as f,cn as p,ct as m,ir as h,kn as g,nn as _,rn as v,tn as y,un as b,vn as x,yn as S}from"./index-vMnY_4jR.js";import{a as C,l as w,o as T,p as E,r as D}from"./release-bits-BzTKz5fM.js";var O=e(t(),1);function k(e){let t=/-\d{12}-([0-9a-f]{8})-([0-9a-f]{8})$/.exec(e);return{project:t?.[1]??null,omni:t?.[2]??null}}function A(e){let t=k(e.id);return{id:e.id,project:e.project??e.id.replace(/-\d{12}-[0-9a-f]{8}-[0-9a-f]{8}$/,``),complete:e.complete??!1,builtAt:e.builtAt??null,builtBy:e.builtBy??null,builtWith:e.builtWith??null,projectCommit:e.projectCommit??t.project,omniCommit:e.omniCommit??t.omni,projectRepo:e.projectRepo??null,omniRepo:e.omniRepo??null,onRemote:e.onRemote??{project:null,omni:null},gates:e.gates??{total:0,passed:0,failed:0,notRun:0},gateList:e.gateList??[],artifacts:e.artifacts??{count:0,bytes:0,apps:[],failed:[]},statics:e.statics??null,bytes:e.bytes??0,keptSource:e.keptSource??!1,machine:e.machine??null,verified:e.verified??[]}}function j(e){return{...e,history:e.history??[],gates:e.gates??[],request:e.request??{project:`(unknown)`}}}var M={async list(){let e=await i.list();return{root:e?.root??``,releases:(e?.releases??[]).map(A)}},async get(e){let t=await i.get({id:e});return{...A(t),manifest:t.manifest??null,logs:t.logs??[],root:t.root??``,attestations:t.attestations??[]}},async builds(){return(await i.builds()??[]).map(j)},async preflight(){let e=await i.preflight();return{root:e.root,canBuild:e.canBuild,missingTools:e.missingTools??[],path:e.path??[],load:Array.isArray(e.load)&&e.load.length===3?e.load:null,cpus:typeof e.cpus==`number`&&e.cpus>0?e.cpus:null}},async deployments(e=200){let[t,n]=await Promise.all([r.available().catch(()=>null),i.deployments({limit:e})]),a=(n??[]).map(e=>({...e,releaseUnnamed:e.releaseUnnamed??!1}));return E(t?.available===!0,a)}},N=a();function P({open:e,onClose:t,project:r,release:i,stack:a}){let E=h(),k=m(e=>e.stacksByProject),A=m(e=>e.fetchStacks),j=m(e=>e.startStack),P=k[r]??[],[F,I]=(0,O.useState)([]),[L,R]=(0,O.useState)(``),[z,B]=(0,O.useState)(a??``),[V,H]=(0,O.useState)(null),[U,W]=(0,O.useState)(!1),[G,K]=(0,O.useState)(!1),[q,J]=(0,O.useState)(null);(0,O.useEffect)(()=>{e&&P.length===0&&A(r)},[e,r,P.length,A]),(0,O.useEffect)(()=>{if(!e||i)return;let t=!0;return M.list().then(({releases:e})=>{if(!t)return;let n=e.filter(e=>e.project===r&&e.complete);I(n),R(e=>e||n[0]?.id||``)}).catch(e=>{t&&J(`The release store could not be read: ${e.message}`)}),()=>{t=!1}},[e,i,r]);let Y=i??F.find(e=>e.id===L)??null,X=Y?.id??``;(0,O.useEffect)(()=>{e&&(B(a??``),H(null),J(null))},[e,a,i?.id]),(0,O.useEffect)(()=>{if(H(null),!e||!X||!z)return;let t=!0;return W(!0),n.checkRelease({project:r,stack:z,release:X}).then(e=>{t&&H(e)}).catch(e=>{t&&H({ok:!1,because:`The daemon could not answer: ${e.message}`})}).finally(()=>{t&&W(!1)}),()=>{t=!1}},[e,r,z,X]);let Z=(0,O.useCallback)(async()=>{if(Y&&z){K(!0),J(null);try{await j(r,z,{release:Y.id});let e=m.getState().error;if(e){J(e),K(!1);return}t(),E(`/stacks/${z}`)}catch(e){if(u(e)){t(),E(`/stacks/${z}`);return}J(e.message)}finally{K(!1)}}},[Y,z,r,j,E,t]),Q=P.find(e=>e.name===z)?.config?.release?.mode===`required`;return(0,N.jsxs)(v,{open:e,onClose:G?void 0:t,maxWidth:`sm`,fullWidth:!0,children:[(0,N.jsx)(o,{children:`Deploy a release`}),(0,N.jsx)(y,{children:(0,N.jsxs)(s,{spacing:2.5,sx:{mt:1},children:[!i&&(0,N.jsxs)(c,{select:!0,label:`Release`,value:L,onChange:e=>R(e.target.value),size:`small`,fullWidth:!0,disabled:G,children:[F.length===0&&(0,N.jsxs)(l,{disabled:!0,value:``,children:[`Nothing has been built for `,r,` yet`]}),F.map(e=>(0,N.jsx)(l,{value:e.id,children:(0,N.jsxs)(s,{direction:`row`,spacing:1,sx:{width:`100%`,alignItems:`center`},children:[(0,N.jsx)(x,{variant:`body2`,sx:{fontFamily:`monospace`},children:e.id}),(0,N.jsx)(p,{sx:{flex:1}}),(0,N.jsx)(C,{release:e,variant:`caption`}),e.statics&&(0,N.jsx)(S,{label:e.statics.stack,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}})]})},e.id))]}),Y?(0,N.jsxs)(p,{children:[(0,N.jsx)(x,{variant:`body2`,sx:{fontFamily:`monospace`,fontWeight:600},children:Y.id}),(0,N.jsxs)(s,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mt:.75},children:[(0,N.jsx)(D,{projectCommit:Y.projectCommit,omniCommit:Y.omniCommit,onRemote:Y.onRemote,project:Y.project}),(0,N.jsx)(S,{size:`small`,variant:`outlined`,label:`${Y.artifacts.count} app${Y.artifacts.count===1?``:`s`}`,sx:{height:20,fontSize:11}}),Y.statics&&(0,N.jsx)(S,{size:`small`,variant:`outlined`,label:`statics: ${Y.statics.stack}`,sx:{height:20,fontSize:11}})]})]}):(0,N.jsx)(b,{severity:`warning`,children:`No release chosen.`}),(0,N.jsxs)(c,{select:!0,label:`Stack`,value:z,onChange:e=>B(e.target.value),size:`small`,fullWidth:!0,disabled:G,helperText:`A release is deployed to a remote or cluster stack; a local stack runs the working tree.`,children:[P.length===0&&(0,N.jsx)(l,{disabled:!0,value:``,children:`This project has no stacks`}),P.map(e=>(0,N.jsx)(l,{value:e.name,disabled:e.type===`local`,children:(0,N.jsxs)(s,{direction:`row`,spacing:1,sx:{alignItems:`center`,width:`100%`},children:[(0,N.jsx)(x,{variant:`body2`,children:e.name}),(0,N.jsx)(S,{label:e.type,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}}),e.config?.release?.mode===`required`&&(0,N.jsx)(S,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:10}}),(0,N.jsx)(p,{sx:{flex:1}}),(0,N.jsx)(x,{variant:`caption`,sx:{color:`text.secondary`},children:e.status})]})},e.name))]}),Y&&Y.gates.total>0&&(0,N.jsxs)(p,{children:[(0,N.jsx)(x,{variant:`caption`,sx:{color:`text.secondary`},children:w(Y.gateList)}),(0,N.jsx)(p,{sx:{mt:.5},children:(0,N.jsx)(T,{gates:Y.gateList})})]}),U&&(0,N.jsxs)(s,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,N.jsx)(g,{size:16}),(0,N.jsx)(x,{variant:`body2`,sx:{color:`text.secondary`},children:`Asking the daemon whether it would take this release…`})]}),V&&(0,N.jsx)(b,{severity:V.ok?`success`:`error`,children:(0,N.jsx)(x,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:V.because})}),Q&&(0,N.jsxs)(x,{variant:`caption`,sx:{color:`text.secondary`},children:[z,` takes releases only — its plain Start is refused by the daemon on purpose.`]}),q&&(0,N.jsx)(b,{severity:`error`,children:(0,N.jsx)(x,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:q})})]})}),(0,N.jsxs)(_,{children:[(0,N.jsx)(f,{onClick:t,size:`small`,disabled:G,children:`Cancel`}),(0,N.jsx)(f,{variant:`contained`,size:`small`,startIcon:G?(0,N.jsx)(g,{size:14,color:`inherit`}):(0,N.jsx)(d,{}),disabled:!Y||!z||G||U||V?.ok!==!0,onClick:Z,children:G?`Deploying…`:`Deploy`})]})]})}export{M as n,P as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{_ as n,l as r}from"./client-BmqFExWT.js";import{$n as i,$t as a,Bt as o,Jt as s,M as c,Mt as l,On as u,P as d,Pt as f,Wt as p,Yt as m,b as h,bn as g,cn as _,ft as v,nn as y,nt as b,rn as x,tn as S,tr as C,vn as w,vt as T,yn as E,yt as D}from"./index-vMnY_4jR.js";import{r as O,t as k}from"./formatters-BqjL73N3.js";import{t as A}from"./settled-pair-C7SjZuns.js";var j=e(t(),1),M=i(),N={pending:{label:`Connecting`,tone:`default`},transferring:{label:`Transferring artifact`,tone:`info`},extracting:{label:`Unpacking`,tone:`info`},installing:{label:`Installing dependencies on the node`,tone:`info`},restarting:{label:`Starting`,tone:`info`},verifying:{label:`Verifying`,tone:`info`},success:{label:`Deployed`,tone:`success`},failed:{label:`Failed`,tone:`error`}};function P(e){return e!==`success`&&e!==`failed`}function F(e,t=Date.now()){let n=Math.max(0,Math.round((t-new Date(e).getTime())/1e3));if(n<10)return`just now`;if(n<60)return`${n}s ago`;let r=Math.round(n/60);return r<60?`${r}m ago`:`${Math.round(r/60)}h ago`}function I({record:e,now:t}){let n=N[e.status]??{label:e.status,tone:`default`},r=P(e.status);return(0,M.jsxs)(_,{sx:{py:1},children:[(0,M.jsxs)(o,{direction:`row`,spacing:1,sx:{mb:.5,alignItems:`center`,flexWrap:`wrap`,rowGap:.5},children:[(0,M.jsx)(w,{variant:`body2`,sx:{fontWeight:600,minWidth:0},children:e.app}),(0,M.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.node}),(0,M.jsx)(_,{sx:{flex:1}}),(0,M.jsx)(E,{size:`small`,variant:`filled`,color:n.tone,label:n.label,sx:{fontWeight:600}}),(0,M.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`},children:F(e.at,t)})]}),(0,M.jsx)(m,{variant:r?`indeterminate`:`determinate`,value:e.status===`success`?100:e.progress,color:n.tone==="default"?`inherit`:n.tone,sx:{height:4,borderRadius:2}}),e.message?(0,M.jsx)(w,{variant:`caption`,sx:{display:`block`,mt:.5,color:e.status===`failed`?`error.main`:`text.secondary`,wordBreak:`break-word`},children:e.message}):null]})}function L({records:e,now:t=Date.now()}){if(e.length===0)return null;let n=e.filter(e=>P(e.status)).length;return(0,M.jsxs)(_,{sx:{mb:3},children:[(0,M.jsxs)(o,{direction:`row`,spacing:1,sx:{mb:1,alignItems:`center`},children:[(0,M.jsx)(w,{variant:`subtitle2`,sx:{fontWeight:700},children:`Deployment progress`}),n>0?(0,M.jsx)(E,{size:`small`,color:`info`,variant:`filled`,label:`${n} in flight`,sx:{fontWeight:600}}):null]}),(0,M.jsx)(_,{sx:{border:1,borderColor:`divider`,borderRadius:1,px:2,py:.5},children:e.map(e=>(0,M.jsx)(I,{record:e,now:t},`${e.node}|${e.app}`))})]})}function R(e){return e.completedAt?new Date(e.completedAt).getTime()-new Date(e.startedAt).getTime():null}var z={success:`success`,failed:`error`,deploying:`info`,rolled_back:`warning`},B={success:`Success`,failed:`Failed`,deploying:`Deploying`,rolled_back:`Rolled Back`},V=[{value:`all-at-once`,label:`All at Once`},{value:`rolling`,label:`Rolling`},{value:`blue-green`,label:`Blue/Green`},{value:`canary`,label:`Canary`}];function H({open:e,onClose:t,onDeploy:n,apps:r}){let[i,s]=(0,j.useState)(``),[c,l]=(0,j.useState)(``),[u,d]=(0,j.useState)(`all-at-once`);return(0,M.jsxs)(x,{open:e,onClose:t,maxWidth:`xs`,fullWidth:!0,children:[(0,M.jsx)(a,{children:`New Deployment`}),(0,M.jsx)(S,{children:(0,M.jsxs)(o,{spacing:2.5,sx:{mt:1},children:[(0,M.jsx)(f,{select:!0,label:`Application`,value:i,onChange:e=>s(e.target.value),size:`small`,fullWidth:!0,children:r.length>0?r.map(e=>(0,M.jsx)(p,{value:e,children:e},e)):(0,M.jsx)(p,{disabled:!0,value:``,children:`No applications available`})}),(0,M.jsx)(f,{label:`Version`,placeholder:`e.g. 1.2.0`,value:c,onChange:e=>l(e.target.value),size:`small`,fullWidth:!0}),(0,M.jsx)(f,{select:!0,label:`Strategy`,value:u,onChange:e=>d(e.target.value),size:`small`,fullWidth:!0,children:V.map(e=>(0,M.jsx)(p,{value:e.value,children:e.label},e.value))})]})}),(0,M.jsxs)(y,{children:[(0,M.jsx)(g,{onClick:t,size:`small`,children:`Cancel`}),(0,M.jsx)(g,{variant:`contained`,onClick:()=>{i&&c&&(n(i,c,u),s(``),l(``),d(`all-at-once`),t())},size:`small`,disabled:!i||!c,startIcon:(0,M.jsx)(h,{}),children:`Deploy`})]})]})}function U(){let[e,t]=(0,j.useState)(!1),{data:i,loading:a,error:f,refresh:p}=b(async()=>{let{first:e,second:t,partialFailure:n}=await A([r.getHistory(),r.listDeployableApps()],[[],[]]);return{deployments:e,availableApps:t,partialFailure:n}},{intervalMs:15e3}),{data:m}=b(()=>n.getDeployProgress(),{intervalMs:3e3}),[h,_]=(0,j.useState)(null),[y,x]=(0,j.useState)(0),[S,N]=(0,j.useState)(25),P=i?.deployments??[],F=i?.availableApps??[],I=i?.partialFailure??null,V=async(e,t,n)=>{try{let i=v.getState().user?.username??`unknown`;await r.deployApp({app:e,version:t,strategy:n,deployedBy:i}),p()}catch(e){_(e?.message??`Failed to start deployment`)}},U=P.slice(y*S,y*S+S);return(0,M.jsxs)(o,{spacing:3,children:[(0,M.jsx)(T,{links:[{name:`Deployments`}],action:(0,M.jsxs)(o,{direction:`row`,spacing:1,children:[(0,M.jsx)(u,{size:`small`,onClick:p,title:`Refresh`,children:(0,M.jsx)(d,{})}),(0,M.jsx)(g,{variant:`contained`,size:`small`,startIcon:(0,M.jsx)(c,{}),onClick:()=>t(!0),children:`Deploy`})]})}),h&&(0,M.jsx)(D,{closable:!0,severity:`warning`,variant:`outlined`,onClose:()=>_(null),children:h}),(0,M.jsx)(L,{records:m??[]}),(0,M.jsxs)(w,{variant:`caption`,sx:{color:`text.secondary`},children:[`Apps deployed one at a time. A stack deployed from a release is on`,` `,(0,M.jsx)(s,{component:C,to:`/releases`,children:`Releases`}),` `,`and on its stack's page.`]}),(0,M.jsx)(l,{columns:[{key:`app`,header:`App`,render:e=>(0,M.jsx)(w,{variant:`body2`,sx:{fontWeight:600},children:e.app})},{key:`version`,header:`Version`,render:e=>(0,M.jsx)(w,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:13},children:e.version})},{key:`previousVersion`,header:`Previous`,render:e=>(0,M.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`,fontSize:12},children:e.previousVersion||`--`})},{key:`strategy`,header:`Strategy`,render:e=>(0,M.jsx)(E,{label:e.strategy,size:`small`,variant:`outlined`,sx:{textTransform:`capitalize`,fontSize:11}})},{key:`status`,header:`Status`,render:e=>(0,M.jsx)(E,{label:B[e.status]??e.status,size:`small`,color:z[e.status]??`default`,variant:`filled`,sx:{fontWeight:600}})},{key:`startedAt`,header:`Started`,render:e=>(0,M.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`},children:k(e.startedAt)})},{key:`duration`,header:`Duration`,render:e=>{let t=R(e);return(0,M.jsx)(w,{variant:`caption`,sx:{fontFamily:`monospace`},children:t===null?`--`:O(t)})}},{key:`deployedBy`,header:`Deployed By`,render:e=>(0,M.jsx)(w,{variant:`caption`,sx:{color:`text.secondary`},children:e.deployedBy??`--`})}],data:U,total:P.length,loading:a,loadError:f??I??null,emptyMessage:`No app has been deployed one at a time`,rowKey:e=>e.id,page:y,pageSize:S,onPageChange:x,onPageSizeChange:e=>{N(e),x(0)},dense:!0}),(0,M.jsx)(H,{open:e,onClose:()=>t(!1),onDeploy:V,apps:F})]})}export{U as default};
@@ -0,0 +1,8 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{m as n,p as r,s as i}from"./client-BmqFExWT.js";import{$ as a,$n as o,B as s,Bn as c,Bt as l,Ct as u,En as d,F as f,Ft as p,Gn as m,I as h,J as g,On as _,P as v,Pt as y,Q as b,Vt as x,Yt as S,_n as C,an as w,ar as T,bn as E,cn as D,dn as O,er as k,et as A,g as j,in as M,j as N,q as P,rt as F,sn as I,tr as ee,vn as L,vt as te,wt as ne,yn as R,yt as z}from"./index-vMnY_4jR.js";import{i as B,s as V}from"./formatters-BqjL73N3.js";import H from"./react-apexcharts.esm-C8pn45ml.js";import{n as U,t as W}from"./constants-veKGFkC6.js";import{t as re}from"./use-stack-context-CnA5FTHu.js";var G=e(t(),1),K=o();function q({children:e,value:t,index:n}){let[r,i]=(0,G.useState)(t===n);return(0,G.useEffect)(()=>{t===n&&i(!0)},[t,n]),r?(0,K.jsx)(D,{sx:{pt:2,display:t===n?`block`:`none`},children:e}):null}function J({label:e,value:t,sub:n,color:r}){return(0,K.jsx)(I,{variant:`outlined`,sx:{flex:1,minWidth:140,bgcolor:r?m(r,.04):void 0,borderColor:r?m(r,.2):void 0},children:(0,K.jsxs)(w,{sx:{py:1.5,px:2,"&:last-child":{pb:1.5}},children:[(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`,textTransform:`uppercase`,letterSpacing:.5,fontSize:10},children:e}),(0,K.jsx)(L,{variant:`h5`,sx:{fontWeight:700,color:r??`text.primary`,mt:.25},children:t}),n&&(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.disabled`,fontSize:11},children:n})]})})}function ie({app:e,diagnostics:t,diagLoading:n}){let r=c(),i=t&&t.memory.heapTotal>0?Math.round(t.memory.heapUsed/t.memory.heapTotal*100):0,o=t!=null&&t.memory.heapTotal>0,s=a(e,t),u=s?` of ${s.name}`:``;return(0,K.jsxs)(l,{spacing:3,children:[(0,K.jsxs)(l,{direction:`row`,spacing:2,sx:{flexWrap:`wrap`},children:[(0,K.jsx)(J,{label:`CPU`,value:e.cpu>0?`${e.cpu.toFixed(1)}%`:`—`,color:e.cpu>80?r.palette.error.main:void 0}),(0,K.jsx)(J,{label:`Memory`,value:B(e.memory),sub:t?o?`Heap${u}: ${B(t.memory.heapUsed)} / ${B(t.memory.heapTotal)}`:`RSS${u}: ${B(t.memory.rss)}`:void 0}),(0,K.jsx)(J,{label:`Uptime`,value:V(e.uptime)}),(0,K.jsx)(J,{label:`Restarts`,value:e.restarts,color:e.restarts>0?r.palette.warning.main:void 0}),(0,K.jsx)(J,{label:`Instances`,value:e.instances})]}),t&&(0,K.jsx)(I,{variant:`outlined`,children:(0,K.jsx)(w,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:o?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(l,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`,mb:.5},children:[(0,K.jsxs)(L,{variant:`caption`,sx:{color:`text.secondary`},children:[`Heap Usage`,u]}),(0,K.jsxs)(L,{variant:`caption`,sx:{fontWeight:600},children:[i,`%`]})]}),(0,K.jsx)(S,{variant:`determinate`,value:i,sx:{height:6,borderRadius:3,bgcolor:m(r.palette.primary.main,.08),"& .MuiLinearProgress-bar":{borderRadius:3,bgcolor:i>85?r.palette.error.main:r.palette.primary.main}}}),(0,K.jsxs)(l,{direction:`row`,sx:{justifyContent:`space-between`,mt:.5},children:[(0,K.jsxs)(L,{variant:`caption`,sx:{color:`text.disabled`},children:[`RSS`,u,`: `,B(t.memory.rss)]}),(0,K.jsxs)(L,{variant:`caption`,sx:{color:`text.disabled`},children:[`External: `,B(t.memory.external)]})]})]}):(0,K.jsxs)(l,{spacing:.5,children:[(0,K.jsxs)(L,{variant:`caption`,sx:{color:`text.secondary`},children:[`Memory (RSS)`,u]}),(0,K.jsx)(L,{variant:`h6`,sx:{fontWeight:600},children:B(t.memory.rss)})]})})}),e.processes&&e.processes.length>0&&(0,K.jsx)(I,{variant:`outlined`,children:(0,K.jsxs)(w,{sx:{p:0,"&:last-child":{pb:0}},children:[(0,K.jsx)(L,{variant:`subtitle2`,sx:{fontWeight:600,px:2,pt:1.5,pb:1},children:`Process Topology`}),(0,K.jsx)(ne,{columns:[{id:`name`,label:`Process`,render:e=>(0,K.jsxs)(l,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,K.jsx)(j,{sx:{fontSize:8,color:e.status===`online`?r.palette.success.main:e.status===`stopped`?r.palette.text.disabled:r.palette.error.main}}),(0,K.jsx)(L,{variant:`body2`,sx:{fontWeight:600},children:e.name})]})},{id:`type`,label:`Type`,render:e=>(0,K.jsx)(R,{label:e.type,size:`small`,variant:`outlined`,sx:{fontSize:11,height:22}})},{id:`status`,label:`Status`,render:e=>(0,K.jsx)(R,{label:e.status,size:`small`,color:U[e.status]||`default`,variant:`outlined`,sx:{fontSize:11,height:22}})},{id:`pid`,label:`PID`,align:`right`,render:e=>(0,K.jsx)(L,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:12},children:e.pid??`—`})},{id:`uptime`,label:`Uptime`,render:e=>(0,K.jsx)(L,{variant:`body2`,sx:{fontSize:12},children:V(e.uptime)})},{id:`cpu`,label:`CPU`,align:`right`,render:e=>(0,K.jsx)(L,{variant:`body2`,sx:{fontSize:12},children:e.cpu>0?`${e.cpu.toFixed(1)}%`:`—`})},{id:`memory`,label:`Memory`,align:`right`,render:e=>(0,K.jsx)(L,{variant:`body2`,sx:{fontSize:12},children:B(e.memory)})},{id:`restarts`,label:`Restarts`,align:`right`,render:e=>(0,K.jsx)(L,{variant:`body2`,sx:{fontSize:12,color:e.restarts!==null&&e.restarts>0?r.palette.warning.main:void 0},children:e.restarts??`—`})}],data:e.processes,rowKey:e=>e.name,dense:!0,containerSx:{border:`none`,borderRadius:0}})]})}),t&&t.services.length>0&&(()=>{let e=[...new Set(t.services)];return(0,K.jsx)(I,{variant:`outlined`,children:(0,K.jsxs)(w,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,K.jsx)(L,{variant:`subtitle2`,sx:{fontWeight:600,mb:1},children:`Exposed Services`}),(0,K.jsx)(l,{direction:`row`,spacing:.75,useFlexGap:!0,sx:{flexWrap:`wrap`},children:e.map(e=>(0,K.jsx)(R,{label:e,size:`small`,variant:`outlined`,sx:{fontSize:11,height:24}},e))})]})})})(),(0,K.jsx)(I,{variant:`outlined`,children:(0,K.jsxs)(w,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,K.jsx)(L,{variant:`subtitle2`,sx:{fontWeight:600,mb:1},children:`Details`}),(0,K.jsxs)(l,{spacing:.75,children:[(0,K.jsx)(Y,{label:`Mode`,value:e.mode}),(0,K.jsx)(Y,{label:`PID`,value:e.pid??`—`,mono:!0}),(0,K.jsx)(Y,{label:`Port`,value:e.port??`—`,mono:!0}),(0,K.jsx)(Y,{label:`Critical`,value:e.critical?`Yes`:`No`})]})]})})]})}function Y({label:e,value:t,mono:n}){return(0,K.jsxs)(l,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,K.jsx)(L,{variant:`body2`,sx:{color:`text.secondary`,fontSize:13},children:e}),(0,K.jsx)(L,{variant:`body2`,sx:{fontSize:13,...n&&{fontFamily:`monospace`}},children:t})]})}var ae=[`trace`,`debug`,`info`,`warn`,`error`,`fatal`],X={trace:`TRC`,debug:`DBG`,info:`INF`,warn:`WRN`,error:`ERR`,fatal:`FTL`},oe={fatal:`rgba(220,38,38,0.08)`,error:`rgba(239,68,68,0.05)`,warn:`rgba(245,158,11,0.04)`},Z=`'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'SF Mono', monospace`,se=2e3,ce=300,le=k`
2
+ from { opacity: 0; transform: translateY(8px); }
3
+ to { opacity: 1; transform: translateY(0); }
4
+ `;function ue(e){let t=typeof e==`string`?new Date(e):e;return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}.${String(t.getMilliseconds()).padStart(3,`0`)}`}function de(e){let t=typeof e==`string`?new Date(e):e;return`${t.toLocaleString(`en-US`,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1})}.${String(t.getMilliseconds()).padStart(3,`0`)}`}function fe({log:e,isNew:t}){let[n,r]=(0,G.useState)(!1),i=W[e.level]??`#6b7280`,a=oe[e.level]??`transparent`,o=e.labels||e.traceId||e.spanId||e.metadata;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(D,{onClick:()=>o&&r(e=>!e),sx:{display:`grid`,gridTemplateColumns:`90px 36px 1fr`,gap:1,alignItems:`baseline`,px:1.5,py:`3px`,bgcolor:n?`rgba(255,255,255,0.04)`:a,borderLeft:`2px solid ${n?i:`transparent`}`,cursor:o?`pointer`:`default`,transition:`background-color 0.15s ease`,animation:t?`${le} 0.3s ease-out`:void 0,"&:hover":{bgcolor:`rgba(255,255,255,0.04)`}},children:[(0,K.jsx)(x,{title:de(e.timestamp),placement:`top-start`,arrow:!0,enterDelay:400,children:(0,K.jsx)(L,{component:`span`,sx:{fontFamily:Z,fontSize:11,color:`#7c8493`,lineHeight:`20px`,whiteSpace:`nowrap`,letterSpacing:`-0.02em`},children:ue(e.timestamp)})}),(0,K.jsx)(L,{component:`span`,sx:{fontFamily:Z,fontSize:10,fontWeight:700,color:i,lineHeight:`20px`,textTransform:`uppercase`,letterSpacing:`0.04em`},children:X[e.level]??e.level.slice(0,3).toUpperCase()}),(0,K.jsx)(L,{component:`span`,sx:{fontFamily:Z,fontSize:11.5,lineHeight:`20px`,overflow:`hidden`,color:e.level===`error`||e.level===`fatal`?`#fca5a5`:`#c9d1d9`,textOverflow:`ellipsis`,whiteSpace:n?`pre-wrap`:`nowrap`,wordBreak:n?`break-all`:void 0},children:e.message})]}),(0,K.jsx)(d,{in:n,unmountOnExit:!0,children:(0,K.jsx)(D,{sx:{ml:`14px`,mr:1.5,mb:.5,p:1.5,bgcolor:`rgba(255,255,255,0.025)`,borderRadius:1,borderLeft:`2px solid ${m(i,.3)}`},children:(0,K.jsxs)(D,{component:`pre`,sx:{fontFamily:Z,fontSize:11,color:`#8b949e`,m:0,whiteSpace:`pre-wrap`,wordBreak:`break-all`,lineHeight:1.7},children:[e.traceId&&(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{style:{color:`#7c8493`},children:`traceId: `}),(0,K.jsx)(`span`,{style:{color:`#d2a8ff`},children:e.traceId}),`
5
+ `]}),e.spanId&&(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{style:{color:`#7c8493`},children:`spanId: `}),(0,K.jsx)(`span`,{style:{color:`#d2a8ff`},children:e.spanId}),`
6
+ `]}),e.labels&&(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{style:{color:`#7c8493`},children:`labels: `}),(0,K.jsx)(`span`,{style:{color:`#7ee787`},children:JSON.stringify(e.labels,null,2)}),`
7
+ `]}),e.metadata&&(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{style:{color:`#7c8493`},children:`metadata:`}),`
8
+ `,(0,K.jsx)(`span`,{style:{color:`#e6edf3`},children:JSON.stringify(e.metadata,null,2)})]})]})})})]})}function pe({appName:e}){let[t,n]=(0,G.useState)([]),[i,a]=(0,G.useState)(!0),[o,c]=(0,G.useState)(!1),[d,f]=(0,G.useState)([]),[p,g]=(0,G.useState)(``),[_,v]=(0,G.useState)(``),b=(0,G.useRef)(null),x=(0,G.useRef)(null),S=(0,G.useRef)(new Set),T=(0,G.useRef)(null),O=(0,G.useRef)(null);(0,G.useEffect)(()=>(O.current&&clearTimeout(O.current),O.current=setTimeout(()=>v(p),ce),()=>{O.current&&clearTimeout(O.current)}),[p]);let k=e=>{f(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},A=(0,G.useMemo)(()=>{let t={tail:200,app:e};return d.length>0&&(t.level=d),_.trim()&&(t.search=_.trim()),t},[e,d,_]);(0,G.useEffect)(()=>{let e=!1;return(async()=>{try{a(!0);let t=await r.streamLogs(A);if(e)return;let i=[...t].reverse();n(i),S.current.clear(),t.length>0&&(x.current=new Date(t[t.length-1].timestamp).toISOString())}catch{}finally{e||a(!1)}})(),()=>{e=!0}},[A]),(0,G.useEffect)(()=>{if(b.current&&=(clearInterval(b.current),null),!o)return b.current=setInterval(async()=>{try{let e=x.current,i={...A,tail:50};e&&(i.since=e);let a=await r.streamLogs(i);if(a.length===0)return;let o=new Set(t.map(e=>e.id)),s=a.filter(e=>!o.has(e.id));if(s.length===0)return;s.forEach(e=>S.current.add(e.id)),setTimeout(()=>{s.forEach(e=>S.current.delete(e.id))},2e3),x.current=new Date(s[s.length-1].timestamp).toISOString(),n(e=>{let t=[...s.reverse(),...e];return t.length>2e3?t.slice(0,2e3):t})}catch{}},se),()=>{b.current&&clearInterval(b.current)}},[o,A,t]);let j=(0,G.useMemo)(()=>{let e={};for(let n of t)e[n.level]=(e[n.level]??0)+1;return e},[t]);return(0,K.jsxs)(l,{spacing:1.5,children:[(0,K.jsxs)(l,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,K.jsx)(y,{size:`small`,placeholder:`Search logs...`,value:p,onChange:e=>g(e.target.value),slotProps:{input:{startAdornment:(0,K.jsx)(C,{position:`start`,children:(0,K.jsx)(h,{sx:{fontSize:16,color:`text.disabled`}})}),sx:{fontSize:13}}},sx:{minWidth:200,flex:1,maxWidth:320}}),(0,K.jsx)(l,{direction:`row`,spacing:.5,sx:{flexWrap:`wrap`},children:ae.map(e=>(0,K.jsx)(R,{label:`${X[e]} ${j[e]??0}`,size:`small`,onClick:()=>k(e),variant:d.includes(e)?`filled`:`outlined`,sx:{fontSize:11,height:24,fontFamily:Z,fontWeight:600,color:d.includes(e)?`#fff`:W[e],borderColor:m(W[e]??`#666`,.4),bgcolor:d.includes(e)?m(W[e]??`#666`,.8):void 0,"&:hover":{bgcolor:m(W[e]??`#666`,.2)}}},e))}),(0,K.jsx)(D,{sx:{flex:1}}),(0,K.jsx)(E,{size:`small`,variant:`outlined`,onClick:()=>c(!o),startIcon:o?(0,K.jsx)(N,{sx:{fontSize:16}}):(0,K.jsx)(s,{sx:{fontSize:16}}),sx:{textTransform:`none`,fontSize:12},children:o?`Resume`:`Pause`})]}),(0,K.jsx)(I,{ref:T,variant:`outlined`,sx:{bgcolor:`#0d1117`,maxHeight:600,overflow:`auto`,borderColor:`rgba(255,255,255,0.1)`},children:(0,K.jsx)(w,{sx:{p:0,"&:last-child":{pb:0}},children:i?(0,K.jsx)(l,{spacing:.5,sx:{p:1.5},children:[...Array(12)].map((e,t)=>(0,K.jsx)(u,{height:20,sx:{bgcolor:`rgba(255,255,255,0.05)`}},t))}):t.length===0?(0,K.jsx)(L,{variant:`body2`,sx:{fontFamily:Z,fontSize:12,color:`#8b949e`,textAlign:`center`,py:6},children:`No log entries found.`}):t.map(e=>(0,K.jsx)(fe,{log:e,isNew:S.current.has(e.id)},e.id))})}),(0,K.jsxs)(l,{direction:`row`,sx:{justifyContent:`space-between`,alignItems:`center`},children:[(0,K.jsxs)(L,{variant:`caption`,sx:{color:`text.disabled`,fontFamily:Z,fontSize:11},children:[t.length,` entries `,!o&&`· streaming`]}),d.length>0&&(0,K.jsx)(E,{size:`small`,onClick:()=>f([]),sx:{textTransform:`none`,fontSize:11},children:`Clear filters`})]})]})}var Q={chart:{background:`transparent`,toolbar:{show:!1},animations:{enabled:!0,dynamicAnimation:{speed:800}}},theme:{mode:`dark`},grid:{borderColor:`rgba(255,255,255,0.08)`,padding:{left:8,right:8}},xaxis:{type:`datetime`,labels:{style:{colors:`#999`,fontSize:`10px`},datetimeUTC:!1}},yaxis:{labels:{style:{colors:`#999`,fontSize:`11px`}}},stroke:{curve:`smooth`,width:2},tooltip:{theme:`dark`,x:{format:`HH:mm:ss`}},legend:{show:!1},dataLabels:{enabled:!1}};function $({title:e,value:t,suffix:n,caption:r,color:i,loading:a}){return(0,K.jsx)(I,{variant:`outlined`,sx:{flex:1,minWidth:120},children:(0,K.jsxs)(w,{sx:{py:1.5,px:2,"&:last-child":{pb:1.5}},children:[(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`,textTransform:`uppercase`,letterSpacing:.5,fontSize:10},children:e}),a?(0,K.jsx)(u,{width:50,height:36}):(0,K.jsxs)(L,{variant:`h5`,sx:{fontWeight:700,color:`${i}.main`,mt:.25},children:[t,n&&(0,K.jsx)(L,{component:`span`,variant:`body2`,sx:{color:`text.secondary`,ml:.5},children:n})]}),r&&!a&&(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`,display:`block`,fontSize:10},children:r})]})})}function me({appName:e}){let[t,r]=(0,G.useState)(!0),[a,o]=(0,G.useState)(null),[s,c]=(0,G.useState)(!0),[d,f]=(0,G.useState)(0),[p,m]=(0,G.useState)(0),[h,g]=(0,G.useState)(null),[y,x]=(0,G.useState)([]),[S,C]=(0,G.useState)([]),T=(0,G.useCallback)(async()=>{try{let t=(await i.getMetrics({name:e})).apps[e]??null;t&&(f(Math.round(t.cpu*10)/10),m(t.memory)),g(t);let r=new Date(Date.now()-3e5).toISOString();try{let[t,i]=await Promise.all([n.querySeries({names:[`cpu_percent`],apps:[e],from:r,interval:`10s`}),n.querySeries({names:[`memory_bytes`],apps:[e],from:r,interval:`10s`})]);t.length>0&&x(t.map(e=>({name:`CPU`,data:e.points.map(e=>({x:new Date(e.timestamp).getTime(),y:Number(e.value.toFixed(1))}))}))),i.length>0&&C(i.map(e=>({name:`Memory`,data:e.points.map(e=>({x:new Date(e.timestamp).getTime(),y:Math.round(e.value/1048576)}))})))}catch{}o(null)}catch(e){o(e?.message??`Failed to fetch metrics`)}finally{r(!1)}},[e]);F(()=>void T(),{intervalMs:1e4,enabled:s}),(0,G.useEffect)(()=>{T()},[T]);let E=P(h),D=(0,G.useMemo)(()=>({...Q,colors:[`#6366f1`],yaxis:{...Q.yaxis,title:{text:`CPU %`,style:{color:`#999`,fontSize:`11px`}},max:100,min:0},fill:{type:`gradient`,gradient:{shadeIntensity:1,opacityFrom:.4,opacityTo:.05,stops:[0,100]}}}),[]),O=(0,G.useMemo)(()=>({...Q,colors:[`#a78bfa`],yaxis:{...Q.yaxis,title:{text:`Memory (MB)`,style:{color:`#999`,fontSize:`11px`}},min:0},fill:{type:`gradient`,gradient:{shadeIntensity:1,opacityFrom:.4,opacityTo:.05,stops:[0,100]}}}),[]);return(0,K.jsxs)(l,{spacing:2.5,children:[a&&(0,K.jsx)(z,{closable:!0,severity:`warning`,variant:`outlined`,onClose:()=>o(null),children:a}),(0,K.jsxs)(l,{direction:`row`,spacing:2,sx:{flexWrap:`wrap`},children:[(0,K.jsx)($,{title:`CPU`,value:t?`—`:`${d}%`,color:d>80?`error`:d>60?`warning`:`success`,loading:t}),(0,K.jsx)($,{title:`Memory`,value:t?`—`:B(p),color:p>536870912?`warning`:`primary`,loading:t}),(0,K.jsx)($,{title:`Requests`,value:t?`—`:E?String(E.requests??0):`not collected`,...E&&{caption:A(E)},color:`info`,loading:t}),(0,K.jsx)($,{title:`Errors (5xx)`,value:t?`—`:E?String(E.errors??0):`not collected`,...E&&{caption:`since the process started`},color:E?(E.errors??0)>0?`error`:`success`:`info`,loading:t}),(0,K.jsx)($,{title:`Latency p95`,value:t?`—`:E?E.latency?Math.round(E.latency.p95):`none in window`:`not collected`,...E?.latency?{suffix:`ms`}:{},...E&&{caption:b(E)},color:`info`,loading:t})]}),(0,K.jsxs)(I,{variant:`outlined`,children:[(0,K.jsx)(M,{slotProps:{subheader:{variant:`caption`},title:{variant:`subtitle2`,fontWeight:600}},title:`CPU Usage`,subheader:`Last 5 minutes`,action:(0,K.jsxs)(l,{direction:`row`,spacing:.5,sx:{alignItems:`center`},children:[(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.secondary`,fontSize:11},children:`Auto`}),(0,K.jsx)(_,{size:`small`,onClick:()=>c(!s),sx:{color:s?`primary.main`:`text.disabled`},children:(0,K.jsx)(v,{sx:{fontSize:16}})})]}),sx:{pb:0}}),(0,K.jsx)(w,{sx:{pt:.5,pb:1,"&:last-child":{pb:1}},children:t?(0,K.jsx)(u,{variant:`rectangular`,height:220}):y.length>0?(0,K.jsx)(H,{type:`area`,height:220,options:D,series:y}):(0,K.jsxs)(l,{sx:{alignItems:`center`,justifyContent:`center`,height:220},children:[(0,K.jsx)(L,{variant:`body2`,sx:{color:`text.disabled`},children:`No CPU time-series data available`}),(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.disabled`},children:`Metrics collection may not be active for this app`})]})})]}),(0,K.jsxs)(I,{variant:`outlined`,children:[(0,K.jsx)(M,{slotProps:{subheader:{variant:`caption`},title:{variant:`subtitle2`,fontWeight:600}},title:`Memory Usage`,subheader:`Last 5 minutes (MB)`,sx:{pb:0}}),(0,K.jsx)(w,{sx:{pt:.5,pb:1,"&:last-child":{pb:1}},children:t?(0,K.jsx)(u,{variant:`rectangular`,height:220}):S.length>0?(0,K.jsx)(H,{type:`area`,height:220,options:O,series:S}):(0,K.jsxs)(l,{sx:{alignItems:`center`,justifyContent:`center`,height:220},children:[(0,K.jsx)(L,{variant:`body2`,sx:{color:`text.disabled`},children:`No memory time-series data available`}),(0,K.jsx)(L,{variant:`caption`,sx:{color:`text.disabled`},children:`Metrics collection may not be active for this app`})]})})]})]})}function he(){let{name:e}=T(),{activeProject:t,activeStack:n}=re(),r=e&&g(e,t,n),[a,o]=(0,G.useState)(null),[c,d]=(0,G.useState)(null),[m,h]=(0,G.useState)(!0),[y,b]=(0,G.useState)(!0),[x,S]=(0,G.useState)(null),[C,w]=(0,G.useState)(!1),[D,k]=(0,G.useState)(0),A=(0,G.useCallback)(async()=>{if(r)try{let e=await i.getApp({name:r});o(e),S(null)}catch(t){S(t?.message??`Failed to fetch app "${e}"`)}finally{h(!1)}},[r,e]),j=(0,G.useCallback)(async()=>{if(r)try{let e=await i.inspect({name:r});d(e)}catch{}finally{b(!1)}},[r]);F(()=>{A(),j()},{intervalMs:5e3});let M=async t=>{if(r){w(!0);try{if(t===`start`)await i.startApp({name:r});else if(t===`stop`){let t=await i.stopApp({name:r});if(!t.success){S(`Failed to stop "${e}": ${t.error??`the daemon reported failure`}`);return}}else await i.restartApp({name:r});await A(),await j()}catch(n){S(`Failed to ${t} "${e}": ${n?.message??`Unknown error`}`)}finally{w(!1)}}},P=a?.status===`stopped`||a?.status===`crashed`||a?.status===`errored`;return(0,K.jsxs)(l,{spacing:3,children:[(0,K.jsx)(te,{linkComponent:ee,links:[{name:`Applications`,href:`/apps`},{name:e??``}],action:a?(0,K.jsxs)(l,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,K.jsx)(R,{label:a.status,color:U[a.status]||`default`,variant:`outlined`,size:`small`}),P?(0,K.jsx)(E,{variant:`outlined`,color:`success`,size:`small`,startIcon:(0,K.jsx)(N,{}),disabled:C,onClick:()=>M(`start`),children:`Start`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(E,{variant:`outlined`,color:`warning`,size:`small`,startIcon:(0,K.jsx)(f,{}),disabled:C,onClick:()=>M(`restart`),children:`Restart`}),(0,K.jsx)(E,{variant:`outlined`,color:`error`,size:`small`,startIcon:(0,K.jsx)(s,{}),disabled:C,onClick:()=>M(`stop`),children:`Stop`})]}),(0,K.jsx)(_,{onClick:()=>{A(),j()},size:`small`,title:`Refresh`,children:(0,K.jsx)(v,{})})]}):void 0}),x&&(0,K.jsx)(z,{closable:!0,severity:`error`,variant:`outlined`,onClose:()=>S(null),children:x}),m?(0,K.jsxs)(l,{spacing:2,children:[(0,K.jsx)(l,{direction:`row`,spacing:2,children:[...[,,,,,]].map((e,t)=>(0,K.jsx)(u,{height:80,variant:`rounded`,sx:{flex:1}},t))}),(0,K.jsx)(u,{height:200,variant:`rounded`})]}):a?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(p,{value:D,onChange:(e,t)=>k(t),children:[(0,K.jsx)(O,{label:`Overview`}),(0,K.jsx)(O,{label:`Logs`}),(0,K.jsx)(O,{label:`Metrics`})]}),(0,K.jsx)(q,{value:D,index:0,children:(0,K.jsx)(ie,{app:a,diagnostics:c,diagLoading:y})}),(0,K.jsx)(q,{value:D,index:1,children:(0,K.jsx)(pe,{appName:a.name})}),(0,K.jsx)(q,{value:D,index:2,children:(0,K.jsx)(me,{appName:a.name})})]}):(0,K.jsxs)(z,{severity:`warning`,variant:`outlined`,children:[`Application "`,e,`" not found.`]})]})}export{he as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{$n as n,$t as r,B as i,Bt as a,On as o,Ot as s,P as c,V as l,Vt as u,an as d,ar as f,b as p,bn as m,bt as h,cn as g,ct as _,en as v,ir as ee,j as y,kn as b,nn as x,nt as S,ot as te,rn as ne,rt as re,sn as C,st as ie,tn as ae,tr as w,vn as T,vt as E,wt as D,y as O,yn as k,yt as A}from"./index-vMnY_4jR.js";import{s as j}from"./formatters-BqjL73N3.js";import{a as M,f as N,o as P}from"./release-bits-BzTKz5fM.js";import{n as F,t as oe}from"./deploy-release-dialog-Dp-zpSAd.js";import{n as I,r as L,t as R}from"./sync-reading-C3PnJ7AX.js";var z=e(t(),1),B=n();function V({project:e,stack:t,requiresRelease:n,local:r,onDeploy:i}){let{data:o,error:s}=S(async()=>{let[e,t]=await Promise.all([F.list(),F.deployments(200)]);return{releases:e.releases,deployments:t}},{intervalMs:2e4,enabled:!r}),c=(0,z.useMemo)(()=>o?.deployments.known?o.deployments.deployments.find(n=>n.project===e&&n.stack===t)??null:null,[o?.deployments,e,t]),l=o&&!o.deployments.known?o.deployments.why:null,f=(0,z.useMemo)(()=>c?.release?(o?.releases??[]).find(e=>e.id===c.release)??null:null,[o?.releases,c?.release]),h=(0,z.useMemo)(()=>(o?.releases??[]).find(t=>t.project===e&&t.complete)??null,[o?.releases,e]),_=h&&c?.release&&h.id!==c.release;return r?null:(0,B.jsx)(C,{variant:`outlined`,sx:{mb:2},children:(0,B.jsxs)(d,{children:[(0,B.jsxs)(a,{direction:`row`,spacing:1.5,sx:{mb:1,alignItems:`center`},children:[(0,B.jsx)(T,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Release`}),n&&(0,B.jsx)(u,{title:`This stack's config says release.mode = required: a plain Start is refused, deliberately.`,arrow:!0,children:(0,B.jsx)(k,{label:`releases only`,size:`small`,color:`info`,variant:`outlined`,sx:{height:18,fontSize:10}})}),(0,B.jsx)(g,{sx:{flex:1}}),(0,B.jsx)(m,{size:`small`,variant:`contained`,startIcon:(0,B.jsx)(p,{}),onClick:i,children:`Deploy release…`})]}),s&&(0,B.jsxs)(T,{variant:`caption`,sx:{color:`warning.main`},children:[`The release store could not be read — `,s]}),l&&!s&&(0,B.jsxs)(T,{variant:`body2`,sx:{color:`warning.main`},children:[`Which release this stack runs is unknown — `,l,`.`]}),o&&!c&&!l&&!s&&(0,B.jsx)(T,{variant:`body2`,sx:{color:`text.secondary`},children:`No recorded deployment of this stack yet.`}),c&&(0,B.jsxs)(a,{spacing:.75,children:[(0,B.jsxs)(a,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,flexWrap:`wrap`},children:[c.release?(0,B.jsx)(T,{component:w,to:`/releases/${c.release}`,variant:`body2`,sx:{fontFamily:`monospace`,fontWeight:600,textDecoration:`none`,color:`text.primary`,"&:hover":{color:`primary.main`}},children:c.release}):c.releaseUnnamed?(0,B.jsx)(u,{title:`A release went out, and this row cannot name it — it was written before the audit trail flattened that field`,arrow:!0,children:(0,B.jsx)(k,{label:`a release, name not recorded`,size:`small`,variant:`outlined`,sx:{height:20,fontSize:11}})}):(0,B.jsx)(u,{title:`Started from the master's working tree — no release named`,arrow:!0,children:(0,B.jsx)(k,{label:`working tree`,size:`small`,color:`warning`,variant:`outlined`,sx:{height:20,fontSize:11}})}),f&&(0,B.jsx)(M,{release:f}),f&&(0,B.jsx)(P,{gates:f.gateList,size:8,columns:11})]}),f&&(0,B.jsx)(T,{variant:`caption`,sx:{color:(()=>{let e=f.verified.find(e=>e.stack===t);return e?e.passed===e.total?`success.main`:`warning.main`:`text.secondary`})()},children:(()=>{let e=f.verified.find(e=>e.stack===t);return e?`verified here: ${e.passed} of ${e.total} probes passed, measured ${N(e.at)}`:`not verified on this stack — its probes have not been run against this release`})()}),(0,B.jsxs)(T,{variant:`caption`,sx:{color:`text.secondary`},children:[`last deployed `,N(c.at),` · `,c.source??`unknown`,c.actorId?` · ${c.actorId}`:``,c.projectCommit?` · ${e} ${c.projectCommit}`:``,c.omniCommit?` + omni ${c.omniCommit}`:``]}),_&&h&&(0,B.jsxs)(a,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,B.jsx)(k,{label:`newer release available`,size:`small`,color:`info`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,B.jsx)(T,{component:w,to:`/releases/${h.id}`,variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`,textDecoration:`none`},children:h.id}),(0,B.jsxs)(T,{variant:`caption`,sx:{color:`text.secondary`},children:[`built `,N(h.builtAt)]})]})]})]})})}var H={running:`#22c55e`,starting:`#eab308`,stopping:`#eab308`,degraded:`#f97316`,error:`#ef4444`,stopped:`#6b7280`};function U(){let{name:e}=f(),t=ee(),n=te(),a=ie(),u=_(e=>e.fetchStacks),S=_(e=>e.startStack),M=_(e=>e.stopStack),N=_(e=>e.deleteStack),P=_(e=>e.error),F=_(e=>e.clearError),I=_(e=>e.pendingOps),[L,R]=(0,z.useState)(!1),[U,q]=(0,z.useState)(!1),J=a.find(t=>t.name===e),Y=n&&e?I[`${n}/${e}`]??null:null;(0,z.useEffect)(()=>{n&&u(n)},[n,u]);let ce=Object.keys(I).length>0;re(()=>void(n&&u(n)),{intervalMs:ce?3e3:1e4,enabled:!!n});let le=(0,z.useCallback)(async()=>{n&&e&&await S(n,e)},[n,e,S]),ue=(0,z.useCallback)(async()=>{n&&e&&await M(n,e)},[n,e,M]),de=(0,z.useCallback)(async()=>{if(n&&e){try{await N(n,e),t(`/stacks`)}catch{}R(!1)}},[n,e,N,t]);if(!J)return(0,B.jsx)(s,{children:(0,B.jsxs)(A,{severity:`warning`,children:[`Stack "`,e,`" not found.`,` `,(0,B.jsx)(m,{size:`small`,onClick:()=>t(`/stacks`),children:`Back to Stacks`})]})});let fe=[{id:`name`,label:`App`,render:e=>(0,B.jsx)(g,{sx:{fontWeight:600},children:e.name})},{id:`status`,label:`Status`,render:e=>(0,B.jsx)(k,{label:e.status,size:`small`,color:e.status===`online`?`success`:e.status===`crashed`||e.status===`errored`?`error`:`default`,sx:{height:18,fontSize:`0.6rem`}})},{id:`pid`,label:`PID`,render:e=>(0,B.jsx)(g,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e.pid??`—`})},{id:`instances`,label:`Instances`,render:e=>e.instances},{id:`uptime`,label:`Uptime`,render:e=>(0,B.jsx)(g,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e.uptime>0?j(e.uptime):`—`})}],X=[{id:`host`,label:`Host`,render:e=>(0,B.jsxs)(g,{sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:[e.host,`:`,e.port,e.label&&(0,B.jsxs)(T,{component:`span`,variant:`caption`,sx:{ml:1,color:`text.secondary`},children:[`(`,e.label,`)`]})]})},{id:`role`,label:`Role`,render:e=>(0,B.jsx)(k,{label:e.role,size:`small`,sx:{height:18,fontSize:`0.6rem`}})},{id:`daemonRole`,label:`Daemon`,render:e=>(0,B.jsx)(k,{label:e.daemonRole,size:`small`,color:e.daemonRole===`master`?`primary`:`default`,sx:{height:18,fontSize:`0.6rem`}})},{id:`connected`,label:`Status`,render:e=>(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(g,{component:`span`,sx:{display:`inline-block`,width:8,height:8,borderRadius:`50%`,bgcolor:e.connected?`#22c55e`:`#ef4444`,mr:.5}}),e.connected?`Connected`:`Disconnected`]})},{id:`lastSeen`,label:`Last Seen`,render:e=>(0,B.jsx)(g,{sx:{fontFamily:`monospace`,fontSize:`0.75rem`},children:e.lastSeen?new Date(e.lastSeen).toLocaleTimeString():`—`})}],Z=J.config?.release?.mode===`required`,Q=J.status===`running`,$=J.status===`stopped`,pe=J.status===`starting`||J.status===`stopping`||!!Y,me=!!Y;return(0,B.jsxs)(s,{children:[(0,B.jsx)(E,{linkComponent:w,links:[{name:`Stacks`,href:`/stacks`},{name:J.name}],action:(0,B.jsxs)(g,{sx:{display:`flex`,gap:1,alignItems:`center`},children:[(0,B.jsx)(k,{label:J.status.charAt(0).toUpperCase()+J.status.slice(1),size:`small`,sx:{bgcolor:H[J.status]??H.stopped,color:`white`,fontWeight:600}}),$&&!me&&(0,B.jsx)(o,{size:`small`,color:`error`,onClick:()=>R(!0),title:`Delete stack`,children:(0,B.jsx)(O,{})}),(0,B.jsx)(o,{size:`small`,onClick:()=>n&&u(n),children:(0,B.jsx)(c,{})}),pe?(0,B.jsx)(m,{variant:`outlined`,size:`small`,disabled:!0,startIcon:(0,B.jsx)(b,{size:14}),children:Y===`starting`||J.status===`starting`?`Starting...`:`Stopping...`}):$?Z?(0,B.jsx)(m,{startIcon:(0,B.jsx)(p,{}),color:`success`,variant:`contained`,size:`small`,onClick:()=>q(!0),children:`Deploy release…`}):(0,B.jsx)(m,{startIcon:(0,B.jsx)(y,{}),color:`success`,variant:`contained`,size:`small`,onClick:le,children:`Start`}):Q?(0,B.jsx)(m,{startIcon:(0,B.jsx)(i,{}),color:`error`,variant:`outlined`,size:`small`,onClick:ue,children:`Stop`}):null]})}),P&&(0,B.jsx)(h,{sx:{mb:2},onClose:F,children:P}),n&&e&&(0,B.jsx)(V,{project:n,stack:e,requiresRelease:!!Z,local:J.type===`local`,onDeploy:()=>q(!0)}),J.type!==`local`&&Q&&(0,B.jsx)(C,{variant:`outlined`,sx:{mb:2,p:2},children:(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,gap:2},children:[(0,B.jsx)(p,{sx:{fontSize:20,color:`primary.main`}}),(0,B.jsxs)(g,{sx:{flex:1},children:[(0,B.jsxs)(T,{variant:`body2`,sx:{fontWeight:600},children:[J.nodes.filter(e=>e.connected).length,`/`,J.nodes.length,` nodes connected`]}),(0,B.jsxs)(T,{variant:`caption`,sx:{color:`text.secondary`},children:[J.type===`remote`?`SSH`:`Cluster`,` deployment — `,G(J.nodes)]})]}),J.nodes.some(e=>!e.connected)&&(0,B.jsx)(k,{label:`${J.nodes.filter(e=>!e.connected).length} offline`,size:`small`,color:`warning`,sx:{height:22,fontSize:`0.65rem`}})]})}),(0,B.jsx)(C,{variant:`outlined`,children:(0,B.jsxs)(d,{children:[(0,B.jsxs)(T,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`,mb:1,display:`block`},children:[`Applications (`,J.apps.length,`)`]}),(0,B.jsx)(D,{columns:fe,data:J.apps,rowKey:e=>e.handleKey,dense:!0,containerSx:{border:`none`,borderRadius:0},emptyContent:(0,B.jsx)(T,{variant:`caption`,sx:{color:`text.disabled`},children:`No apps configured`})})]})}),(0,B.jsx)(C,{variant:`outlined`,children:(0,B.jsxs)(d,{children:[(0,B.jsx)(T,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Overview`}),(0,B.jsx)(W,{label:`Type`,value:J.type===`local`?`Local`:J.type===`remote`?`Remote (SSH)`:`Cluster`}),(0,B.jsx)(W,{label:`Apps`,value:`${J.apps.filter(e=>e.status===`online`).length} / ${J.apps.length}`}),(0,B.jsx)(W,{label:`Nodes`,value:`${J.nodes.filter(e=>e.connected).length} / ${J.nodes.length}`}),J.uptime>0&&(0,B.jsx)(W,{label:`Uptime`,value:j(J.uptime)}),J.portRange&&(0,B.jsx)(W,{label:`Port Range`,value:`${J.portRange.start}–${J.portRange.end}`,mono:!0}),J.type===`local`?J.startedAt&&(0,B.jsx)(W,{label:`Started`,value:new Date(J.startedAt).toLocaleString()}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(W,{label:`Started`,value:J.startedAt?`${new Date(J.startedAt).toLocaleString()}, as its nodes report`:`unknown — no node reported an app of it running`}),J.attachedAt&&(0,B.jsx)(W,{label:`Attached`,value:`${new Date(J.attachedAt).toLocaleString()} — by this master`})]})]})}),(0,B.jsx)(se,{stack:J}),J.type!==`local`&&(0,B.jsx)(C,{variant:`outlined`,children:(0,B.jsxs)(d,{children:[(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,gap:.5,mb:1},children:[(0,B.jsx)(l,{sx:{fontSize:16}}),(0,B.jsx)(T,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Sync Status`})]}),J.nodes.map(e=>(0,B.jsx)(K,{node:e},e.host)),J.nodes.length===0&&(0,B.jsx)(T,{variant:`caption`,sx:{color:`text.disabled`},children:`No nodes configured`})]})}),J.nodes.length>0&&(0,B.jsx)(C,{variant:`outlined`,children:(0,B.jsxs)(d,{children:[(0,B.jsxs)(T,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`,mb:1,display:`block`},children:[`Nodes (`,J.nodes.length,`)`]}),(0,B.jsx)(D,{columns:X,data:J.nodes,rowKey:e=>e.host,dense:!0,containerSx:{border:`none`,borderRadius:0}})]})}),(0,B.jsx)(oe,{open:U,onClose:()=>q(!1),project:n??``,release:null,...e?{stack:e}:{}}),(0,B.jsxs)(ne,{open:L,onClose:()=>R(!1),children:[(0,B.jsx)(r,{children:`Delete Stack`}),(0,B.jsx)(ae,{children:(0,B.jsxs)(v,{children:[`Are you sure you want to delete stack `,(0,B.jsx)(`strong`,{children:J.name}),`? This action cannot be undone. All infrastructure configuration for this stack will be removed.`]})}),(0,B.jsxs)(x,{children:[(0,B.jsx)(m,{onClick:()=>R(!1),children:`Cancel`}),(0,B.jsx)(m,{onClick:de,color:`error`,variant:`contained`,children:`Delete`})]})]})]})}function W({label:e,value:t,mono:n}){return(0,B.jsxs)(g,{sx:{display:`flex`,justifyContent:`space-between`,py:.5},children:[(0,B.jsx)(T,{variant:`body2`,sx:{color:`text.secondary`},children:e}),(0,B.jsx)(T,{variant:`body2`,sx:{fontWeight:600,...n&&{fontFamily:`monospace`,fontSize:`0.8rem`}},children:t})]})}function G(e){let t=e.map(e=>e.syncStatus?I(e.syncStatus):null),n=t.filter(e=>e&&!R(e)).length,r=t.filter(e=>e===null).length;return n===0&&r===0?`replication in sync`:[n>0&&`${n} of ${e.length} behind`,r>0&&`${r} not reporting`].filter(Boolean).join(`, `)}function K({node:e}){let t=e.syncStatus,n=t?I(t):null;return(0,B.jsxs)(g,{sx:{py:.75},children:[(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,B.jsx)(g,{sx:{width:8,height:8,borderRadius:`50%`,bgcolor:e.connected?`#22c55e`:`#ef4444`,...e.connected&&{boxShadow:`0 0 6px rgba(34,197,94,0.5)`}}}),(0,B.jsxs)(g,{children:[(0,B.jsxs)(T,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`,fontWeight:600},children:[e.host,`:`,e.port]}),(0,B.jsxs)(T,{variant:`caption`,sx:{color:`text.secondary`,fontSize:`0.6rem`},children:[e.daemonRole,e.label?` — ${e.label}`:``]})]})]}),t&&n?(0,B.jsxs)(g,{sx:{textAlign:`right`},children:[(0,B.jsx)(k,{label:L(n),size:`small`,color:R(n)?`success`:`error`,variant:`outlined`,sx:{height:20,fontSize:`0.6rem`,fontWeight:600}}),t.lastSyncAt&&(0,B.jsxs)(T,{variant:`caption`,sx:{color:`text.disabled`,display:`block`,fontSize:`0.5rem`,mt:.25},children:[`last sync `,new Date(t.lastSyncAt).toLocaleTimeString()]})]}):(0,B.jsx)(k,{label:e.connected?`Connected`:`Offline`,size:`small`,color:e.connected?`success`:`default`,variant:`outlined`,sx:{height:20,fontSize:`0.6rem`}})]}),t?.lastError&&(0,B.jsx)(T,{variant:`caption`,sx:{color:`error.main`,fontSize:`0.55rem`,mt:.25,display:`block`,ml:2.5},children:t.lastError})]})}function se({stack:e}){let t=e.config?.infrastructure,n=e.infrastructure?.services??{},r=t&&Object.keys(t).length>0,i=Object.keys(n).length>0;if(!r&&!i)return null;let a=t?.postgres,o=t?.redis,s=t?.minio;return(0,B.jsxs)(B.Fragment,{children:[a&&(0,B.jsx)(C,{variant:`outlined`,children:(0,B.jsxs)(d,{children:[(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,B.jsx)(T,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`PostgreSQL`}),(0,B.jsx)(q,{name:`postgres`,runtime:n})]}),(0,B.jsx)(W,{label:`Port`,value:String(a.port??5432),mono:!0}),a.databases&&Object.keys(a.databases).length>0&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(T,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`Databases (`,Object.keys(a.databases).length,`)`]}),Object.entries(a.databases).map(([e,t])=>(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,py:.25,pl:1},children:[(0,B.jsx)(T,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:e}),t?.migrate&&(0,B.jsx)(k,{label:`migrate`,size:`small`,sx:{height:16,fontSize:`0.55rem`}})]},e))]})]})}),o&&(0,B.jsx)(C,{variant:`outlined`,children:(0,B.jsxs)(d,{children:[(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,B.jsx)(T,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`Redis`}),(0,B.jsx)(q,{name:`redis`,runtime:n})]}),(0,B.jsx)(W,{label:`Port`,value:String(o.port??6379),mono:!0}),o.databases&&Object.keys(o.databases).length>0&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(T,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`DB Allocations (`,Object.keys(o.databases).length,`)`]}),Object.entries(o.databases).map(([e,t])=>{let n=e.includes(`:`);return(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,py:.25,pl:1},children:[(0,B.jsx)(T,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`},children:n?e.split(`:`)[1]:e}),(0,B.jsxs)(g,{sx:{display:`flex`,gap:.5,alignItems:`center`},children:[n&&(0,B.jsx)(k,{label:e.split(`:`)[0],size:`small`,variant:`outlined`,sx:{height:16,fontSize:`0.5rem`}}),(0,B.jsxs)(T,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.75rem`,color:`text.secondary`,minWidth:28,textAlign:`right`},children:[`DB `,t]})]})]},e)})]})]})}),s&&(0,B.jsx)(C,{variant:`outlined`,children:(0,B.jsxs)(d,{children:[(0,B.jsxs)(g,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,B.jsx)(T,{variant:`overline`,sx:{color:`text.secondary`,fontSize:`0.65rem`},children:`MinIO / S3`}),(0,B.jsx)(q,{name:`minio`,runtime:n})]}),s.ports&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(W,{label:`API Port`,value:String(s.ports.api??9e3),mono:!0}),(0,B.jsx)(W,{label:`Console Port`,value:String(s.ports.console??9001),mono:!0})]}),s.buckets&&s.buckets.length>0&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(T,{variant:`caption`,sx:{color:`text.secondary`,mt:1,display:`block`},children:[`Buckets (`,s.buckets.length,`)`]}),s.buckets.map(e=>(0,B.jsx)(T,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:`0.8rem`,pl:1,py:.25},children:e},e))]})]})})]})}function q({name:e,runtime:t}){let n=t[e];return n?(0,B.jsx)(k,{label:n.status,size:`small`,color:n.status===`running`?`success`:n.status===`error`?`error`:`default`,sx:{height:18,fontSize:`0.6rem`}}):(0,B.jsx)(k,{label:`Stopped`,size:`small`,sx:{height:18,fontSize:`0.6rem`}})}export{U as default};
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{t}from"./react-DlmbjZJV.js";import{t as n}from"./Grid-DizFZYue.js";import{c as r,v as i}from"./client-BmqFExWT.js";import{$n as a,Bt as o,Et as s,Gn as c,It as l,On as u,P as d,Pt as f,Qt as p,Rt as m,Tn as h,Vt as g,Wt as _,an as v,ar as y,b,bn as x,cn as S,ct as C,kn as w,nt as T,sn as E,un as D,vn as O,vt as k,wn as A,yn as j,yt as M,zt as N}from"./index-vMnY_4jR.js";import{c as P,d as F,f as I,i as L,o as R,s as z,u as B}from"./release-bits-BzTKz5fM.js";import{n as V,t as H}from"./deploy-release-dialog-Dp-zpSAd.js";import{t as U}from"./release-build-panel-DcW9YcXQ.js";var W=e(t(),1),G=a(),K={provisioned:` Accounts were created by the run and removed at its end.`,"not-declared":` No accounts were provisioned — the stack does not declare release.attest.provision, so probes that sign in said NOT RUN.`,"producer-cannot":` No accounts were provisioned — the stack allows it, but this release's producer predates --provision.`};function q(e,t){return r.invoke(`daemon`,`OmnitronRelease`,`attestOnNode`,[{release:e,stack:t}],{timeout:6e5})}function J({output:e}){let[t,n]=(0,W.useState)(!1);return(0,G.jsxs)(S,{sx:{pl:2,mb:.5},children:[(0,G.jsx)(x,{size:`small`,onClick:()=>n(e=>!e),sx:{minWidth:0,p:0,fontSize:11,textTransform:`none`},children:t?`hide what it printed`:`what it printed`}),t&&(0,G.jsx)(S,{component:`pre`,sx:{m:0,mt:.5,p:1,maxHeight:240,overflow:`auto`,borderRadius:1,bgcolor:`action.hover`,fontFamily:`monospace`,fontSize:11,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:e})]})}function Y(e){return/^HTTP 50\d|Request timeout|Gateway Time-?out/i.test(e)}function X({attestation:e}){let t=e.cleanup;if(!t&&!e.legalTextsUnread)return null;let n=Object.entries(t?.removed??{}).filter(([,e])=>e>0).map(([e,t])=>`${t} ${e}`),r=Object.entries(t?.retired??{}).filter(([,e])=>e>0).map(([e,t])=>`${t} ${e}`);return(0,G.jsxs)(S,{sx:{mt:.75,pl:1},"data-testid":`cleanup-${e.stack}`,children:[t&&(0,G.jsx)(O,{variant:`caption`,sx:{display:`block`,color:t.failed||t.run===null?`warning.main`:`text.secondary`},children:t.run===null?`cleanup not run — ${t.notRun??`the run had no name to remove by`}`:`cleanup: run ${t.run} removed ${n.length?n.join(`, `):`nothing — it had made nothing to remove`}`+(t.failed?` — FAILED: ${t.failed}`:``)}),r.length>0&&(0,G.jsxs)(O,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[`retired: `,r.join(`, `),` — blocked in place, their real-chain addresses still watched`]}),(t?.leftBehind??[]).map(e=>(0,G.jsxs)(O,{variant:`caption`,sx:{display:`block`,color:`warning.main`},children:[`left behind: `,e.what,` — `,e.why.join(`; `)||`no reason given`]},e.what)),e.legalTextsUnread&&(0,G.jsxs)(O,{variant:`caption`,sx:{display:`block`,color:`warning.main`},children:[`legal texts could not be read — `,e.legalTextsUnread]})]})}function Z({releaseId:e,project:t,attestations:n,onChanged:r}){let i=C(e=>e.stacksByProject),a=C(e=>e.fetchStacks),s=(0,W.useMemo)(()=>(i[t]??[]).filter(e=>e.type!==`local`),[i,t]),[c,l]=(0,W.useState)(``),[u,d]=(0,W.useState)(!1),[p,m]=(0,W.useState)(null),[h,y]=(0,W.useState)(null),[b,T]=(0,W.useState)(null);(0,W.useEffect)(()=>{i[t]||a(t)},[t,i,a]),(0,W.useEffect)(()=>{!c&&s.length>0&&l(s[0].name)},[s,c]),(0,W.useEffect)(()=>{if(b===null)return;if(n.some(e=>e.stack===c&&Date.parse(e.storedAt)>=b)||Date.now()-b>6e5){T(null);return}let e=setTimeout(r,5e3);return()=>clearTimeout(e)},[b,n,c,r]);let k=(0,W.useCallback)(async()=>{if(!c)return;let t=Date.now();d(!0),y(null),m(null);try{m(await q(e,c)),r()}catch(e){let n=e.message;Y(n)?T(t):y(n)}finally{d(!1)}},[e,c,r]);return(0,G.jsx)(E,{variant:`outlined`,children:(0,G.jsxs)(v,{children:[(0,G.jsxs)(o,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mb:1.5},children:[(0,G.jsx)(O,{variant:`subtitle2`,children:`Verified on stacks`}),(0,G.jsx)(O,{variant:`caption`,sx:{color:`text.secondary`},children:`probes a running stack measured against this release`}),(0,G.jsx)(S,{sx:{flex:1}}),s.length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(f,{select:!0,size:`small`,value:c,onChange:e=>l(e.target.value),disabled:u,sx:{minWidth:120},children:s.map(e=>(0,G.jsx)(_,{value:e.name,children:e.name},e.name))}),(0,G.jsx)(g,{title:`Uploads this release's own scripts to the stack's node and runs the probes there, under the node's deploy lease. The stack should be carrying this release — an attestation older than the last deployment is refused.`,arrow:!0,children:(0,G.jsx)(`span`,{children:(0,G.jsx)(x,{size:`small`,variant:`outlined`,onClick:()=>void k(),disabled:u||b!==null||!c,startIcon:u||b!==null?(0,G.jsx)(w,{size:14}):void 0,children:u?`Running on the node…`:b===null?`Run the probes`:`Still running…`})})})]})]}),b!==null&&(0,G.jsx)(D,{severity:`info`,sx:{mb:1.5},children:`The gateway stopped waiting after 120 seconds; the master did not. The probes are still running on the node, and the result will appear here when it is written.`}),p&&(0,G.jsxs)(D,{severity:p.passed===p.gates?`success`:`warning`,sx:{mb:1.5},children:[p.passed,` of `,p.gates,` probes passed on `,p.node,` — probes from`,` `,p.scriptsFrom===`release`?`the release itself`:`the release's commit`,typeof p.sourceFiles==`number`&&(p.sourceFiles>0?`, with ${p.sourceFiles} application source files from that commit`:`, with no application sources — probes that read code said NOT RUN`),`.`,p.accounts?K[p.accounts]:``]}),h&&(0,G.jsx)(D,{severity:`error`,sx:{mb:1.5},children:(0,G.jsx)(O,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:h})}),n.length===0?(0,G.jsxs)(O,{variant:`body2`,sx:{color:`text.secondary`},children:[`No stack has attested this release. A stack whose policy declares `,(0,G.jsx)(`code`,{children:`verifiedOn`}),` refuses it until one does.`]}):(0,G.jsx)(o,{spacing:2,children:n.map(e=>{let t=e.gates.filter(e=>e.status===`passed`).length;return(0,G.jsxs)(S,{children:[(0,G.jsxs)(o,{direction:`row`,spacing:1,sx:{alignItems:`center`,flexWrap:`wrap`},children:[(0,G.jsx)(j,{label:e.stack,size:`small`,variant:`outlined`,sx:{height:20,fontSize:11}}),(0,G.jsxs)(O,{variant:`body2`,sx:{fontWeight:600,fontFamily:`monospace`,color:t===e.gates.length?`success.main`:`error.main`},children:[t,`/`,e.gates.length]}),(0,G.jsx)(R,{gates:e.gates,size:9}),(0,G.jsx)(S,{sx:{flex:1}}),(0,G.jsxs)(O,{variant:`caption`,sx:{color:`text.secondary`},children:[`measured `,I(e.at),e.onNode.hosts.length>0?` on ${e.onNode.hosts.join(`, `)}`:``]}),e.onNode.claimed&&(0,G.jsx)(g,{title:e.onNode.matched===!0?`The producer confirmed it ran on one of the stack's nodes.`:`The producer could not confirm the machine it ran on.`,arrow:!0,children:(0,G.jsx)(j,{label:e.onNode.matched===!0?`on the node`:`node unconfirmed`,size:`small`,color:e.onNode.matched===!0?`success`:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}})})]}),e.gates.some(e=>e.status!==`passed`)&&(0,G.jsx)(S,{sx:{mt:.75,pl:1},children:e.gates.filter(e=>e.status!==`passed`).map(e=>(0,G.jsxs)(S,{children:[(0,G.jsxs)(O,{variant:`caption`,sx:{display:`block`,color:`text.secondary`},children:[(0,G.jsx)(S,{component:`span`,sx:{color:L[e.status].color,fontWeight:600},children:L[e.status].label}),` `,(0,G.jsx)(S,{component:`span`,sx:{fontFamily:`monospace`},children:e.name}),e.detail?` — ${e.detail}`:``]}),e.output&&(0,G.jsx)(J,{output:e.output})]},e.name))}),(0,G.jsx)(X,{attestation:e})]},e.stack)})})]})})}function Q(){let{id:e=``}=y(),[t,r]=(0,W.useState)(!1),[a,f]=(0,W.useState)(null),[_,C]=(0,W.useState)(null),{data:w,loading:D,error:K,refresh:q}=T(async()=>{let[t,n]=await Promise.all([V.get(e),V.builds().catch(()=>[])]);return{detail:t,builds:n}},{intervalMs:15e3,enabled:!!e}),J=(0,W.useCallback)(async t=>{C(null);try{let n=await i.getLog({id:e,name:t,lines:400});f({name:n.name,tail:n.tail})}catch(e){C(e.message)}},[e]);if(D&&!w)return(0,G.jsx)(s,{});if(K&&!w)return(0,G.jsxs)(o,{spacing:3,children:[(0,G.jsx)(k,{links:[{name:`Releases`,href:`/releases`},{name:e}]}),(0,G.jsx)(M,{severity:`error`,variant:`outlined`,children:K})]});let Y=w.detail,X=Y.manifest,Q=(w.builds??[]).find(t=>t.releaseId===e)??null;return(0,G.jsxs)(o,{spacing:3,children:[(0,G.jsx)(k,{links:[{name:`Releases`,href:`/releases`},{name:e}],action:(0,G.jsxs)(o,{direction:`row`,spacing:1,children:[(0,G.jsx)(u,{size:`small`,onClick:()=>void q(),title:`Refresh`,children:(0,G.jsx)(d,{})}),(0,G.jsx)(x,{variant:`contained`,size:`small`,startIcon:(0,G.jsx)(b,{}),disabled:!Y.complete,onClick:()=>r(!0),children:`Deploy…`})]})}),!Y.complete&&(0,G.jsx)(M,{severity:`warning`,variant:`outlined`,children:`This directory holds no manifest: the build did not finish, and what is here is its logs. Nothing can be deployed from it.`}),Q&&(0,G.jsx)(U,{record:Q,compact:Q.state!==`running`}),(0,G.jsxs)(n,{container:!0,spacing:2,children:[(0,G.jsx)(n,{size:{xs:12,md:6},children:(0,G.jsx)(E,{variant:`outlined`,sx:{height:`100%`},children:(0,G.jsxs)(v,{children:[(0,G.jsx)(O,{variant:`subtitle2`,sx:{mb:1.5},children:`Built from`}),(0,G.jsx)(o,{spacing:1.5,children:[[`project`,Y.projectCommit,Y.projectRepo,Y.onRemote.project],[`omni`,Y.omniCommit,Y.omniRepo,Y.onRemote.omni]].map(([e,t,n,r])=>(0,G.jsxs)(S,{children:[(0,G.jsxs)(o,{direction:`row`,spacing:1,sx:{alignItems:`center`},children:[(0,G.jsx)(O,{variant:`body2`,sx:{fontWeight:600,minWidth:56},children:e===`project`?Y.project:`omni`}),(0,G.jsx)(O,{variant:`body2`,sx:{fontFamily:`monospace`},children:t?.slice(0,12)??`—`}),r===!1&&(0,G.jsx)(j,{label:`on no remote branch`,size:`small`,color:`warning`,variant:`outlined`,sx:{height:18,fontSize:10}}),r===null&&(0,G.jsx)(j,{label:`no remote to ask`,size:`small`,variant:`outlined`,sx:{height:18,fontSize:10}})]}),(0,G.jsx)(O,{variant:`caption`,sx:{color:`text.secondary`},children:n??`—`})]},e))})]})})}),(0,G.jsx)(n,{size:{xs:12,md:6},children:(0,G.jsx)(E,{variant:`outlined`,sx:{height:`100%`},children:(0,G.jsxs)(v,{children:[(0,G.jsx)(O,{variant:`subtitle2`,sx:{mb:1.5},children:`Built with`}),(0,G.jsxs)(o,{spacing:.75,children:[(0,G.jsxs)(O,{variant:`body2`,children:[I(Y.builtAt),` · `,Y.builtBy??`—`]}),(0,G.jsxs)(O,{variant:`body2`,sx:{fontFamily:`monospace`,fontSize:13},children:[`omnitron `,Y.builtWith??`—`]}),(0,G.jsxs)(O,{variant:`caption`,sx:{color:`text.secondary`},children:[X?.builtWith?.packages?.length??0,` linked omni package(s); `,z(Y.bytes),` on disk at`,` `,Y.root]}),Y.statics&&(0,G.jsxs)(O,{variant:`caption`,sx:{color:`text.secondary`},children:[`statics for `,(0,G.jsx)(`strong`,{children:Y.statics.stack}),` — `,Y.statics.files,` files,`,` `,z(Y.statics.bytes),` from `,X?.statics?.dir]}),Y.machine&&(0,G.jsxs)(O,{variant:`caption`,sx:{color:F(Y.machine)?`warning.main`:`text.secondary`},children:[`machine while the gates ran: `,B(Y.machine),F(Y.machine)?` — more than its cores, so read a red gate here as the machine first`:``]})]})]})})})]}),(0,G.jsx)(E,{variant:`outlined`,children:(0,G.jsxs)(v,{children:[(0,G.jsxs)(o,{direction:`row`,spacing:1.5,sx:{alignItems:`center`,mb:1.5},children:[(0,G.jsx)(O,{variant:`subtitle2`,children:`Gates`}),(0,G.jsx)(O,{variant:`caption`,sx:{color:`text.secondary`},children:Y.gates.total===0?`none recorded — a stack that requires any refuses this release`:`${Y.gates.passed} of ${Y.gates.total} passed`}),(0,G.jsx)(S,{sx:{flex:1}}),(0,G.jsx)(R,{gates:Y.gateList})]}),Y.gateList.length>0&&(0,G.jsxs)(N,{size:`small`,children:[(0,G.jsx)(l,{children:(0,G.jsxs)(h,{children:[(0,G.jsx)(A,{children:`Gate`}),(0,G.jsx)(A,{children:`Outcome`}),(0,G.jsx)(A,{align:`right`,children:`Took`}),(0,G.jsx)(A,{children:`Detail`})]})}),(0,G.jsx)(m,{children:Y.gateList.map((e,t)=>(0,G.jsxs)(h,{children:[(0,G.jsxs)(A,{sx:{fontFamily:`monospace`,fontSize:13},children:[e.name,e.checks!=null&&(0,G.jsxs)(O,{component:`span`,variant:`caption`,sx:{color:`text.secondary`,ml:1},children:[e.checks,` checks`]})]}),(0,G.jsx)(A,{children:(0,G.jsx)(O,{variant:`caption`,sx:{color:L[e.status].color,fontWeight:600},children:L[e.status].label})}),(0,G.jsx)(A,{align:`right`,children:(0,G.jsx)(O,{variant:`caption`,sx:{color:`text.secondary`,fontFamily:`monospace`},children:e.durationMs?P(e.durationMs):`—`})}),(0,G.jsx)(A,{children:(0,G.jsx)(O,{variant:`caption`,sx:{color:`text.secondary`,whiteSpace:`pre-wrap`},children:e.detail??``})})]},`${e.name}-${t}`))})]})]})}),Y.complete&&(0,G.jsx)(Z,{releaseId:Y.id,project:Y.project,attestations:Y.attestations,onChanged:()=>void q()}),(0,G.jsx)(E,{variant:`outlined`,children:(0,G.jsxs)(v,{children:[(0,G.jsx)(O,{variant:`subtitle2`,sx:{mb:1.5},children:`Artifacts`}),(X?.artifacts??[]).length===0?(0,G.jsx)(O,{variant:`body2`,sx:{color:`text.secondary`},children:`None.`}):(0,G.jsxs)(N,{size:`small`,children:[(0,G.jsx)(l,{children:(0,G.jsxs)(h,{children:[(0,G.jsx)(A,{children:`App`}),(0,G.jsx)(A,{children:`Version`}),(0,G.jsx)(A,{align:`right`,children:`Size`}),(0,G.jsx)(A,{children:`sha256`})]})}),(0,G.jsx)(m,{children:(X?.artifacts??[]).map(e=>(0,G.jsxs)(h,{children:[(0,G.jsx)(A,{sx:{fontWeight:600},children:e.app}),(0,G.jsx)(A,{sx:{fontFamily:`monospace`,fontSize:13},children:e.version}),(0,G.jsx)(A,{align:`right`,sx:{fontFamily:`monospace`,fontSize:13},children:z(e.bytes)}),(0,G.jsx)(A,{children:(0,G.jsx)(g,{title:e.sha256||`none recorded`,arrow:!0,children:(0,G.jsx)(O,{variant:`caption`,sx:{fontFamily:`monospace`,color:`text.secondary`},children:e.sha256?`${e.sha256.slice(0,16)}…`:`—`})})})]},`${e.app}-${e.version}`))})]}),(X?.artifactFailures??[]).map(e=>(0,G.jsx)(M,{severity:`error`,variant:`outlined`,sx:{mt:1},children:(0,G.jsxs)(O,{variant:`body2`,sx:{whiteSpace:`pre-wrap`},children:[(0,G.jsx)(`strong`,{children:e.app}),` did not build — `,e.error.split(`
2
+ `)[0]]})},e.app))]})}),(0,G.jsx)(E,{variant:`outlined`,children:(0,G.jsxs)(v,{children:[(0,G.jsx)(O,{variant:`subtitle2`,sx:{mb:1.5},children:`Build logs`}),Y.logs.length===0?(0,G.jsx)(O,{variant:`body2`,sx:{color:`text.secondary`},children:`This build wrote no logs.`}):(0,G.jsx)(o,{direction:`row`,spacing:1,sx:{flexWrap:`wrap`},children:Y.logs.map(e=>(0,G.jsx)(j,{label:`${e.name} · ${z(e.bytes)}`,size:`small`,variant:a?.name===e.name?`filled`:`outlined`,onClick:()=>void J(e.name),sx:{fontFamily:`monospace`,fontSize:11}},e.name))}),_&&(0,G.jsx)(M,{severity:`warning`,variant:`outlined`,sx:{mt:1.5},children:_}),a&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(p,{sx:{my:1.5}}),(0,G.jsx)(S,{sx:{maxHeight:420,overflow:`auto`,p:1.5,borderRadius:1,bgcolor:e=>c(e.palette.text.primary,.04)},children:(0,G.jsx)(O,{variant:`caption`,sx:{fontFamily:`monospace`,whiteSpace:`pre`,display:`block`},children:a.tail})})]})]})}),(0,G.jsx)(H,{open:t,onClose:()=>r(!1),project:Y.project,release:Y})]})}export{Q as default};
@@ -0,0 +1 @@
1
+ @font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2)format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2)format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2)format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2)format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2)format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2)format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2)format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2)format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2)format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2)format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2)format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2)format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2)format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2)format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2)format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2)format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2)format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2)format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2)format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2)format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.apexcharts-canvas .apexcharts-tooltip{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);min-width:80px;color:var(--palette-text-primary);box-shadow:var(--customShadows-dropdown);background-color:rgba(var(--palette-background-defaultChannel) / .9);border-radius:10px}.apexcharts-canvas .apexcharts-xaxistooltip{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--palette-text-primary);box-shadow:var(--customShadows-dropdown);background-color:rgba(var(--palette-background-defaultChannel) / .9);border-color:#0000;border-radius:10px}.apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:rgba(var(--palette-grey-500Channel) / .16)}.apexcharts-canvas .apexcharts-xaxistooltip:after{border-bottom-color:rgba(var(--palette-background-defaultChannel) / .9)}.apexcharts-canvas .apexcharts-tooltip-title{text-align:center;color:var(--palette-text-secondary);background-color:var(--palette-background-neutral);font-weight:700}.apexcharts-canvas .apexcharts-tooltip-series-group{padding:4px 12px}.apexcharts-canvas .apexcharts-tooltip-marker{margin-right:8px}.apexcharts-canvas .apexcharts-legend{padding:0}.apexcharts-canvas .apexcharts-legend-marker{margin-right:6px}.apexcharts-canvas .apexcharts-legend-text{margin-left:0;padding-left:0;line-height:18px}pre code .hljs-comment{color:#999}pre code .hljs-tag{color:#b4b7b4}pre code .hljs-operator,pre code .hljs-punctuation,pre code .hljs-subst{color:#ccc}pre code .hljs-operator{opacity:.7}pre code .hljs-bullet,pre code .hljs-deletion,pre code .hljs-name,pre code .hljs-selector-tag,pre code .hljs-template-variable,pre code .hljs-variable{color:#f2777a}pre code .hljs-attr,pre code .hljs-link,pre code .hljs-literal,pre code .hljs-number,pre code .hljs-symbol,pre code .hljs-variable.constant_{color:#f99157}pre code .hljs-class .hljs-title,pre code .hljs-title,pre code .hljs-title.class_{color:#fc6}pre code .hljs-strong{color:#fc6;font-weight:700}pre code .hljs-addition,pre code .hljs-code,pre code .hljs-string,pre code .hljs-title.class_.inherited__{color:#9c9}pre code .hljs-built_in,pre code .hljs-doctag,pre code .hljs-keyword.hljs-atrule,pre code .hljs-quote,pre code .hljs-regexp{color:#6cc}pre code .hljs-attribute,pre code .hljs-function .hljs-title,pre code .hljs-section,pre code .hljs-title.function_,pre code .ruby .hljs-property{color:#69c}pre code .diff .hljs-meta,pre code .hljs-keyword,pre code .hljs-template-tag,pre code .hljs-type{color:#c9c}pre code .hljs-emphasis{color:#c9c;font-style:italic}pre code .hljs-meta,pre code .hljs-meta .hljs-keyword,pre code .hljs-meta .hljs-string{color:#a3685a}pre code .hljs-meta .hljs-keyword,pre code .hljs-meta-keyword{font-weight:700}.maplibregl-map{-webkit-tap-highlight-color:#0000;-webkit-touch-callout:none;font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;position:relative;overflow:hidden}.maplibregl-canvas{position:absolute;top:0;left:0}.maplibregl-map:fullscreen{width:100%;height:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;z-index:2;position:absolute}.maplibregl-ctrl-top-left{top:0;left:0}.maplibregl-ctrl-top-right{top:0;right:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px #0000001a}.maplibregl-ctrl-group button{box-sizing:border-box;cursor:pointer;background-color:#0000;border:0;outline:none;width:29px;height:29px;padding:0;display:block}.maplibregl-ctrl button{-webkit-user-select:none;user-select:none}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;width:100%;height:100%;display:block}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px buttontext}.maplibregl-ctrl-icon{background-color:#0000}.maplibregl-ctrl-group button+button{border-top:1px solid buttontext}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}@media (hover:hover){.maplibregl-ctrl button:not(:disabled):hover{background-color:#0000000d}}.maplibregl-ctrl button:not(:disabled):active{background-color:#0000000d}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23333'%3E %3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23333'%3E %3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E %3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23fff'%3E %3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23fff'%3E %3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E %3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23000'%3E %3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23000'%3E %3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E %3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23333'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E %3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23fff'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23fff'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E %3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23000'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23000'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E %3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23333'%3E %3Cpath d='m10.5 14 4-8 4 8z'/%3E %3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E %3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23fff'%3E %3Cpath d='m10.5 14 4-8 4 8z'/%3E %3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E %3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29' fill='%23000'%3E %3Cpath d='m10.5 14 4-8 4 8z'/%3E %3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E %3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-globe .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' viewBox='0 0 22 22' stroke='%23333'%3E %3Ccircle cx='11' cy='11' r='8.5'/%3E %3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E %3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517-.195 0-.461-.118-.775-.517-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11c0-2.447.331-4.64.853-6.206.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517.195 0 .461.118.775.517.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E %3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.333 1.333 0 0 1-.224-.138c.047-.038.12-.085.224-.138.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5c1.909 0 3.622.166 4.845.428.616.132 1.08.283 1.379.434.105.053.177.1.224.138-.047.038-.12.085-.224.138-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.33 1.33 0 0 1-.224-.138 1.33 1.33 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5c1.909 0 3.622.166 4.845.428.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.33 1.33 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.465 1.465 0 0 1-.39-.272.293.293 0 0 1-.047-.064.293.293 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.33.33 0 0 1 .047.064.293.293 0 0 1-.048.064 1.435 1.435 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002-.002Zm0 .018v.002-.002Zm17.002.002v-.002.002Zm0-.018v-.002.002Z'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-globe-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' viewBox='0 0 22 22' stroke='%2333b5e5'%3E %3Ccircle cx='11' cy='11' r='8.5'/%3E %3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E %3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517-.195 0-.461-.118-.775-.517-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11c0-2.447.331-4.64.853-6.206.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517.195 0 .461.118.775.517.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E %3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.333 1.333 0 0 1-.224-.138c.047-.038.12-.085.224-.138.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5c1.909 0 3.622.166 4.845.428.616.132 1.08.283 1.379.434.105.053.177.1.224.138-.047.038-.12.085-.224.138-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.33 1.33 0 0 1-.224-.138 1.33 1.33 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5c1.909 0 3.622.166 4.845.428.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.33 1.33 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.465 1.465 0 0 1-.39-.272.293.293 0 0 1-.047-.064.293.293 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.33.33 0 0 1 .047.064.293.293 0 0 1-.048.064 1.435 1.435 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002-.002Zm0 .018v.002-.002Zm17.002.002v-.002.002Zm0-.018v-.002.002Z'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='%23333'%3E %3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='%2333b5e5'%3E %3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23333'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23aaa'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' fill='%23f00'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23e58978'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23e54e33'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:2s linear infinite maplibregl-spin}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23fff'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23999'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' fill='%23f00'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23e58978'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23e54e33'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23000'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' display='none'/%3E %3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20' fill='%23666'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='m14 5 1 1-9 9-1-1z' fill='%23f00'/%3E %3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{cursor:pointer;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E %3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E %3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E %3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E %3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E %3Cg style='stroke-width:1.12603545'%3E %3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E %3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E %3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E %3C/g%3E %3C/svg%3E");background-repeat:no-repeat;width:88px;height:23px;margin:0 0 -4px -4px;display:block;overflow:hidden}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:#0000;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E %3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E %3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E %3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E %3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E %3Cg style='stroke-width:1.12603545'%3E %3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E %3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E %3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E %3C/g%3E %3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E %3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E %3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E %3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E %3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E %3Cg style='stroke-width:1.12603545'%3E %3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E %3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E %3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E %3C/g%3E %3C/svg%3E")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:#ffffff80;margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{color:#000;box-sizing:content-box;background-color:#fff;border-radius:12px;min-height:20px;margin:10px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{visibility:visible;padding:2px 28px 2px 8px}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{cursor:pointer;box-sizing:border-box;background-color:#ffffff80;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E");border:0;border-radius:12px;outline:none;width:24px;height:24px;display:none;position:absolute;top:0;right:0}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:#0000000d}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{top:0;right:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{top:0;left:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20' fill='%23fff'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E")}}.maplibregl-ctrl-attrib a{color:#000000bf;text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{white-space:nowrap;color:#333;box-sizing:border-box;background-color:#ffffffbf;border:2px solid #333;border-top:#333;padding:0 5px;font-size:10px}.maplibregl-popup{will-change:transform;pointer-events:none;display:flex;position:absolute;top:0;left:0}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right,[dir=rtl] .maplibregl-popup-anchor-left{flex-direction:row-reverse}.maplibregl-popup-tip{z-index:1;border:10px solid #0000;width:0;height:0}.maplibregl-popup-anchor-top .maplibregl-popup-tip{border-top:none;border-bottom-color:#fff;align-self:center}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{border-top:none;border-bottom-color:#fff;border-left:none;align-self:flex-start}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{border-top:none;border-bottom-color:#fff;border-right:none;align-self:flex-end}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{border-top-color:#fff;border-bottom:none;align-self:center}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{border-top-color:#fff;border-bottom:none;border-left:none;align-self:flex-start}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{border-top-color:#fff;border-bottom:none;border-right:none;align-self:flex-end}.maplibregl-popup-anchor-left .maplibregl-popup-tip{border-left:none;border-right-color:#fff;align-self:center}.maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:#fff;border-right:none;align-self:center}[dir=rtl] .maplibregl-popup-anchor-right{flex-direction:row}[dir=rtl] .maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-start}[dir=rtl] .maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-start}.maplibregl-popup-close-button{cursor:pointer;background-color:#0000;border:0;border-radius:0 3px 0 0;position:absolute;top:0;right:0}.maplibregl-popup-close-button:hover{background-color:#0000000d}.maplibregl-popup-content{pointer-events:auto;background:#fff;border-radius:3px;padding:15px 10px;position:relative;box-shadow:0 1px 2px #0000001a}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{will-change:transform;transition:opacity .2s;position:absolute;top:0;left:0}.maplibregl-marker-draggable{cursor:grab}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;width:15px;height:15px}.maplibregl-user-location-dot:before{content:"";animation:2s infinite maplibregl-user-location-dot-pulse;position:absolute}.maplibregl-user-location-dot:after{content:"";box-sizing:border-box;border:2px solid #fff;border-radius:50%;width:19px;height:19px;position:absolute;top:-2px;left:-2px;box-shadow:0 0 3px #00000059}@media (prefers-reduced-motion:reduce){.maplibregl-user-location-dot:before{animation:none}}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;width:1px;height:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{opacity:.5;background:#fff;border:2px dotted #202020;width:0;height:0;position:absolute;top:0;left:0}.maplibregl-cooperative-gesture-screen{color:#fff;opacity:0;pointer-events:none;z-index:99999;background:#0006;justify-content:center;align-items:center;padding:1rem;font-size:1.4em;line-height:1.2;transition:opacity 1s 1s;display:flex;position:absolute;inset:0}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity 50ms}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(pointer:coarse){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{z-index:99999;width:100%!important;height:100%!important;position:fixed!important;top:0!important;left:0!important}