skypilot-nightly 1.0.0.dev20250905__py3-none-any.whl → 1.0.0.dev20251210__py3-none-any.whl

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 (429) hide show
  1. sky/__init__.py +12 -2
  2. sky/adaptors/aws.py +27 -22
  3. sky/adaptors/common.py +25 -2
  4. sky/adaptors/coreweave.py +278 -0
  5. sky/adaptors/do.py +8 -2
  6. sky/adaptors/gcp.py +11 -0
  7. sky/adaptors/ibm.py +5 -2
  8. sky/adaptors/kubernetes.py +64 -0
  9. sky/adaptors/nebius.py +3 -1
  10. sky/adaptors/primeintellect.py +1 -0
  11. sky/adaptors/seeweb.py +183 -0
  12. sky/adaptors/shadeform.py +89 -0
  13. sky/adaptors/slurm.py +478 -0
  14. sky/admin_policy.py +20 -0
  15. sky/authentication.py +157 -263
  16. sky/backends/__init__.py +3 -2
  17. sky/backends/backend.py +11 -3
  18. sky/backends/backend_utils.py +630 -185
  19. sky/backends/cloud_vm_ray_backend.py +1111 -928
  20. sky/backends/local_docker_backend.py +9 -5
  21. sky/backends/task_codegen.py +971 -0
  22. sky/backends/wheel_utils.py +18 -0
  23. sky/catalog/__init__.py +8 -3
  24. sky/catalog/aws_catalog.py +4 -0
  25. sky/catalog/common.py +19 -1
  26. sky/catalog/data_fetchers/fetch_aws.py +102 -80
  27. sky/catalog/data_fetchers/fetch_gcp.py +30 -3
  28. sky/catalog/data_fetchers/fetch_nebius.py +9 -6
  29. sky/catalog/data_fetchers/fetch_runpod.py +698 -0
  30. sky/catalog/data_fetchers/fetch_seeweb.py +329 -0
  31. sky/catalog/data_fetchers/fetch_shadeform.py +142 -0
  32. sky/catalog/kubernetes_catalog.py +36 -32
  33. sky/catalog/primeintellect_catalog.py +95 -0
  34. sky/catalog/runpod_catalog.py +5 -1
  35. sky/catalog/seeweb_catalog.py +184 -0
  36. sky/catalog/shadeform_catalog.py +165 -0
  37. sky/catalog/slurm_catalog.py +243 -0
  38. sky/check.py +87 -46
  39. sky/client/cli/command.py +1004 -434
  40. sky/client/cli/flags.py +4 -2
  41. sky/{volumes/utils.py → client/cli/table_utils.py} +111 -13
  42. sky/client/cli/utils.py +79 -0
  43. sky/client/common.py +12 -2
  44. sky/client/sdk.py +188 -65
  45. sky/client/sdk_async.py +34 -33
  46. sky/cloud_stores.py +82 -3
  47. sky/clouds/__init__.py +8 -0
  48. sky/clouds/aws.py +337 -129
  49. sky/clouds/azure.py +24 -18
  50. sky/clouds/cloud.py +47 -13
  51. sky/clouds/cudo.py +16 -13
  52. sky/clouds/do.py +9 -7
  53. sky/clouds/fluidstack.py +12 -5
  54. sky/clouds/gcp.py +14 -7
  55. sky/clouds/hyperbolic.py +12 -5
  56. sky/clouds/ibm.py +12 -5
  57. sky/clouds/kubernetes.py +80 -45
  58. sky/clouds/lambda_cloud.py +12 -5
  59. sky/clouds/nebius.py +23 -9
  60. sky/clouds/oci.py +19 -12
  61. sky/clouds/paperspace.py +4 -1
  62. sky/clouds/primeintellect.py +317 -0
  63. sky/clouds/runpod.py +85 -24
  64. sky/clouds/scp.py +12 -8
  65. sky/clouds/seeweb.py +477 -0
  66. sky/clouds/shadeform.py +400 -0
  67. sky/clouds/slurm.py +578 -0
  68. sky/clouds/ssh.py +6 -3
  69. sky/clouds/utils/scp_utils.py +61 -50
  70. sky/clouds/vast.py +43 -27
  71. sky/clouds/vsphere.py +14 -16
  72. sky/core.py +296 -195
  73. sky/dashboard/out/404.html +1 -1
  74. sky/dashboard/out/_next/static/KYAhEFa3FTfq4JyKVgo-s/_buildManifest.js +1 -0
  75. sky/dashboard/out/_next/static/chunks/1141-9c810f01ff4f398a.js +11 -0
  76. sky/dashboard/out/_next/static/chunks/1871-7e202677c42f43fe.js +6 -0
  77. sky/dashboard/out/_next/static/chunks/2260-7703229c33c5ebd5.js +1 -0
  78. sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +15 -0
  79. sky/dashboard/out/_next/static/chunks/2755.edd818326d489a1d.js +26 -0
  80. sky/dashboard/out/_next/static/chunks/3294.ddda8c6c6f9f24dc.js +1 -0
  81. sky/dashboard/out/_next/static/chunks/3785.7e245f318f9d1121.js +1 -0
  82. sky/dashboard/out/_next/static/chunks/{6601-06114c982db410b6.js → 3800-b589397dc09c5b4e.js} +1 -1
  83. sky/dashboard/out/_next/static/chunks/3850-fd5696f3bbbaddae.js +1 -0
  84. sky/dashboard/out/_next/static/chunks/4725.172ede95d1b21022.js +1 -0
  85. sky/dashboard/out/_next/static/chunks/4937.a2baa2df5572a276.js +15 -0
  86. sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +13 -0
  87. sky/dashboard/out/_next/static/chunks/6856-da20c5fd999f319c.js +1 -0
  88. sky/dashboard/out/_next/static/chunks/6990-09cbf02d3cd518c3.js +1 -0
  89. sky/dashboard/out/_next/static/chunks/7359-c8d04e06886000b3.js +30 -0
  90. sky/dashboard/out/_next/static/chunks/7615-019513abc55b3b47.js +1 -0
  91. sky/dashboard/out/_next/static/chunks/8640.5b9475a2d18c5416.js +16 -0
  92. sky/dashboard/out/_next/static/chunks/8969-452f9d5cbdd2dc73.js +1 -0
  93. sky/dashboard/out/_next/static/chunks/9025.fa408f3242e9028d.js +6 -0
  94. sky/dashboard/out/_next/static/chunks/9353-8369df1cf105221c.js +1 -0
  95. sky/dashboard/out/_next/static/chunks/9360.a536cf6b1fa42355.js +31 -0
  96. sky/dashboard/out/_next/static/chunks/9847.3aaca6bb33455140.js +30 -0
  97. sky/dashboard/out/_next/static/chunks/pages/_app-68b647e26f9d2793.js +34 -0
  98. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-33f525539665fdfd.js +16 -0
  99. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-a7565f586ef86467.js +1 -0
  100. sky/dashboard/out/_next/static/chunks/pages/clusters-9e5d47818b9bdadd.js +1 -0
  101. sky/dashboard/out/_next/static/chunks/pages/{config-dfb9bf07b13045f4.js → config-718cdc365de82689.js} +1 -1
  102. sky/dashboard/out/_next/static/chunks/pages/infra/{[context]-6563820e094f68ca.js → [context]-12c559ec4d81fdbd.js} +1 -1
  103. sky/dashboard/out/_next/static/chunks/pages/{infra-aabba60d57826e0f.js → infra-d187cd0413d72475.js} +1 -1
  104. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-895847b6cf200b04.js +16 -0
  105. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-8d0f4655400b4eb9.js +21 -0
  106. sky/dashboard/out/_next/static/chunks/pages/jobs-e5a98f17f8513a96.js +1 -0
  107. sky/dashboard/out/_next/static/chunks/pages/plugins/[...slug]-4f46050ca065d8f8.js +1 -0
  108. sky/dashboard/out/_next/static/chunks/pages/users-2f7646eb77785a2c.js +1 -0
  109. sky/dashboard/out/_next/static/chunks/pages/volumes-ef19d49c6d0e8500.js +1 -0
  110. sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-af76bb06dbb3954f.js → [name]-96e0f298308da7e2.js} +1 -1
  111. sky/dashboard/out/_next/static/chunks/pages/{workspaces-7598c33a746cdc91.js → workspaces-cb4da3abe08ebf19.js} +1 -1
  112. sky/dashboard/out/_next/static/chunks/webpack-fba3de387ff6bb08.js +1 -0
  113. sky/dashboard/out/_next/static/css/c5a4cfd2600fc715.css +3 -0
  114. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  115. sky/dashboard/out/clusters/[cluster].html +1 -1
  116. sky/dashboard/out/clusters.html +1 -1
  117. sky/dashboard/out/config.html +1 -1
  118. sky/dashboard/out/index.html +1 -1
  119. sky/dashboard/out/infra/[context].html +1 -1
  120. sky/dashboard/out/infra.html +1 -1
  121. sky/dashboard/out/jobs/[job].html +1 -1
  122. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  123. sky/dashboard/out/jobs.html +1 -1
  124. sky/dashboard/out/plugins/[...slug].html +1 -0
  125. sky/dashboard/out/users.html +1 -1
  126. sky/dashboard/out/volumes.html +1 -1
  127. sky/dashboard/out/workspace/new.html +1 -1
  128. sky/dashboard/out/workspaces/[name].html +1 -1
  129. sky/dashboard/out/workspaces.html +1 -1
  130. sky/data/data_utils.py +92 -1
  131. sky/data/mounting_utils.py +177 -30
  132. sky/data/storage.py +200 -19
  133. sky/data/storage_utils.py +10 -45
  134. sky/exceptions.py +18 -7
  135. sky/execution.py +74 -31
  136. sky/global_user_state.py +605 -191
  137. sky/jobs/__init__.py +2 -0
  138. sky/jobs/client/sdk.py +101 -4
  139. sky/jobs/client/sdk_async.py +31 -5
  140. sky/jobs/constants.py +15 -8
  141. sky/jobs/controller.py +726 -284
  142. sky/jobs/file_content_utils.py +128 -0
  143. sky/jobs/log_gc.py +193 -0
  144. sky/jobs/recovery_strategy.py +250 -100
  145. sky/jobs/scheduler.py +271 -173
  146. sky/jobs/server/core.py +367 -114
  147. sky/jobs/server/server.py +81 -35
  148. sky/jobs/server/utils.py +89 -35
  149. sky/jobs/state.py +1498 -620
  150. sky/jobs/utils.py +771 -306
  151. sky/logs/agent.py +40 -5
  152. sky/logs/aws.py +9 -19
  153. sky/metrics/utils.py +282 -39
  154. sky/models.py +2 -0
  155. sky/optimizer.py +7 -6
  156. sky/provision/__init__.py +38 -1
  157. sky/provision/aws/config.py +34 -13
  158. sky/provision/aws/instance.py +5 -2
  159. sky/provision/azure/instance.py +5 -3
  160. sky/provision/common.py +22 -0
  161. sky/provision/cudo/instance.py +4 -3
  162. sky/provision/do/instance.py +4 -3
  163. sky/provision/docker_utils.py +112 -28
  164. sky/provision/fluidstack/instance.py +6 -5
  165. sky/provision/gcp/config.py +6 -1
  166. sky/provision/gcp/instance.py +4 -2
  167. sky/provision/hyperbolic/instance.py +4 -2
  168. sky/provision/instance_setup.py +66 -20
  169. sky/provision/kubernetes/__init__.py +2 -0
  170. sky/provision/kubernetes/config.py +7 -44
  171. sky/provision/kubernetes/constants.py +0 -1
  172. sky/provision/kubernetes/instance.py +609 -213
  173. sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml +1 -2
  174. sky/provision/kubernetes/network.py +12 -8
  175. sky/provision/kubernetes/network_utils.py +8 -25
  176. sky/provision/kubernetes/utils.py +422 -422
  177. sky/provision/kubernetes/volume.py +150 -18
  178. sky/provision/lambda_cloud/instance.py +16 -13
  179. sky/provision/nebius/instance.py +6 -2
  180. sky/provision/nebius/utils.py +103 -86
  181. sky/provision/oci/instance.py +4 -2
  182. sky/provision/paperspace/instance.py +4 -3
  183. sky/provision/primeintellect/__init__.py +10 -0
  184. sky/provision/primeintellect/config.py +11 -0
  185. sky/provision/primeintellect/instance.py +454 -0
  186. sky/provision/primeintellect/utils.py +398 -0
  187. sky/provision/provisioner.py +45 -15
  188. sky/provision/runpod/__init__.py +2 -0
  189. sky/provision/runpod/instance.py +4 -3
  190. sky/provision/runpod/volume.py +69 -13
  191. sky/provision/scp/instance.py +307 -130
  192. sky/provision/seeweb/__init__.py +11 -0
  193. sky/provision/seeweb/config.py +13 -0
  194. sky/provision/seeweb/instance.py +812 -0
  195. sky/provision/shadeform/__init__.py +11 -0
  196. sky/provision/shadeform/config.py +12 -0
  197. sky/provision/shadeform/instance.py +351 -0
  198. sky/provision/shadeform/shadeform_utils.py +83 -0
  199. sky/provision/slurm/__init__.py +12 -0
  200. sky/provision/slurm/config.py +13 -0
  201. sky/provision/slurm/instance.py +572 -0
  202. sky/provision/slurm/utils.py +583 -0
  203. sky/provision/vast/instance.py +9 -4
  204. sky/provision/vast/utils.py +10 -6
  205. sky/provision/volume.py +164 -0
  206. sky/provision/vsphere/common/ssl_helper.py +1 -1
  207. sky/provision/vsphere/common/vapiconnect.py +2 -1
  208. sky/provision/vsphere/common/vim_utils.py +3 -2
  209. sky/provision/vsphere/instance.py +8 -6
  210. sky/provision/vsphere/vsphere_utils.py +8 -1
  211. sky/resources.py +11 -3
  212. sky/schemas/api/responses.py +107 -6
  213. sky/schemas/db/global_user_state/008_skylet_ssh_tunnel_metadata.py +34 -0
  214. sky/schemas/db/global_user_state/009_last_activity_and_launched_at.py +89 -0
  215. sky/schemas/db/global_user_state/010_save_ssh_key.py +66 -0
  216. sky/schemas/db/global_user_state/011_is_ephemeral.py +34 -0
  217. sky/schemas/db/kv_cache/001_initial_schema.py +29 -0
  218. sky/schemas/db/serve_state/002_yaml_content.py +34 -0
  219. sky/schemas/db/skypilot_config/001_initial_schema.py +30 -0
  220. sky/schemas/db/spot_jobs/002_cluster_pool.py +3 -3
  221. sky/schemas/db/spot_jobs/004_job_file_contents.py +42 -0
  222. sky/schemas/db/spot_jobs/005_logs_gc.py +38 -0
  223. sky/schemas/db/spot_jobs/006_controller_pid_started_at.py +34 -0
  224. sky/schemas/db/spot_jobs/007_config_file_content.py +34 -0
  225. sky/schemas/generated/jobsv1_pb2.py +86 -0
  226. sky/schemas/generated/jobsv1_pb2.pyi +254 -0
  227. sky/schemas/generated/jobsv1_pb2_grpc.py +542 -0
  228. sky/schemas/generated/managed_jobsv1_pb2.py +76 -0
  229. sky/schemas/generated/managed_jobsv1_pb2.pyi +278 -0
  230. sky/schemas/generated/managed_jobsv1_pb2_grpc.py +278 -0
  231. sky/schemas/generated/servev1_pb2.py +58 -0
  232. sky/schemas/generated/servev1_pb2.pyi +115 -0
  233. sky/schemas/generated/servev1_pb2_grpc.py +322 -0
  234. sky/serve/autoscalers.py +2 -0
  235. sky/serve/client/impl.py +55 -21
  236. sky/serve/constants.py +4 -3
  237. sky/serve/controller.py +17 -11
  238. sky/serve/load_balancing_policies.py +1 -1
  239. sky/serve/replica_managers.py +219 -142
  240. sky/serve/serve_rpc_utils.py +179 -0
  241. sky/serve/serve_state.py +63 -54
  242. sky/serve/serve_utils.py +145 -109
  243. sky/serve/server/core.py +46 -25
  244. sky/serve/server/impl.py +311 -162
  245. sky/serve/server/server.py +21 -19
  246. sky/serve/service.py +84 -68
  247. sky/serve/service_spec.py +45 -7
  248. sky/server/auth/loopback.py +38 -0
  249. sky/server/auth/oauth2_proxy.py +12 -7
  250. sky/server/common.py +47 -24
  251. sky/server/config.py +62 -28
  252. sky/server/constants.py +9 -1
  253. sky/server/daemons.py +109 -38
  254. sky/server/metrics.py +76 -96
  255. sky/server/middleware_utils.py +166 -0
  256. sky/server/plugins.py +222 -0
  257. sky/server/requests/executor.py +384 -145
  258. sky/server/requests/payloads.py +83 -19
  259. sky/server/requests/preconditions.py +15 -13
  260. sky/server/requests/request_names.py +123 -0
  261. sky/server/requests/requests.py +511 -157
  262. sky/server/requests/serializers/decoders.py +48 -17
  263. sky/server/requests/serializers/encoders.py +102 -20
  264. sky/server/requests/serializers/return_value_serializers.py +60 -0
  265. sky/server/requests/threads.py +117 -0
  266. sky/server/rest.py +116 -24
  267. sky/server/server.py +497 -179
  268. sky/server/server_utils.py +30 -0
  269. sky/server/stream_utils.py +219 -45
  270. sky/server/uvicorn.py +30 -19
  271. sky/setup_files/MANIFEST.in +6 -1
  272. sky/setup_files/alembic.ini +8 -0
  273. sky/setup_files/dependencies.py +64 -19
  274. sky/setup_files/setup.py +44 -44
  275. sky/sky_logging.py +13 -5
  276. sky/skylet/attempt_skylet.py +116 -24
  277. sky/skylet/configs.py +3 -1
  278. sky/skylet/constants.py +139 -29
  279. sky/skylet/events.py +74 -14
  280. sky/skylet/executor/__init__.py +1 -0
  281. sky/skylet/executor/slurm.py +189 -0
  282. sky/skylet/job_lib.py +143 -105
  283. sky/skylet/log_lib.py +252 -8
  284. sky/skylet/log_lib.pyi +47 -7
  285. sky/skylet/providers/ibm/node_provider.py +12 -8
  286. sky/skylet/providers/ibm/vpc_provider.py +13 -12
  287. sky/skylet/runtime_utils.py +21 -0
  288. sky/skylet/services.py +524 -0
  289. sky/skylet/skylet.py +27 -2
  290. sky/skylet/subprocess_daemon.py +104 -28
  291. sky/skypilot_config.py +99 -79
  292. sky/ssh_node_pools/constants.py +12 -0
  293. sky/ssh_node_pools/core.py +40 -3
  294. sky/ssh_node_pools/deploy/__init__.py +4 -0
  295. sky/ssh_node_pools/deploy/deploy.py +952 -0
  296. sky/ssh_node_pools/deploy/tunnel_utils.py +199 -0
  297. sky/ssh_node_pools/deploy/utils.py +173 -0
  298. sky/ssh_node_pools/server.py +20 -21
  299. sky/{utils/kubernetes/ssh_utils.py → ssh_node_pools/utils.py} +9 -6
  300. sky/task.py +221 -104
  301. sky/templates/aws-ray.yml.j2 +1 -0
  302. sky/templates/azure-ray.yml.j2 +1 -0
  303. sky/templates/cudo-ray.yml.j2 +1 -0
  304. sky/templates/do-ray.yml.j2 +1 -0
  305. sky/templates/fluidstack-ray.yml.j2 +1 -0
  306. sky/templates/gcp-ray.yml.j2 +1 -0
  307. sky/templates/hyperbolic-ray.yml.j2 +1 -0
  308. sky/templates/ibm-ray.yml.j2 +2 -1
  309. sky/templates/jobs-controller.yaml.j2 +3 -0
  310. sky/templates/kubernetes-ray.yml.j2 +204 -55
  311. sky/templates/lambda-ray.yml.j2 +1 -0
  312. sky/templates/nebius-ray.yml.j2 +3 -0
  313. sky/templates/oci-ray.yml.j2 +1 -0
  314. sky/templates/paperspace-ray.yml.j2 +1 -0
  315. sky/templates/primeintellect-ray.yml.j2 +72 -0
  316. sky/templates/runpod-ray.yml.j2 +1 -0
  317. sky/templates/scp-ray.yml.j2 +1 -0
  318. sky/templates/seeweb-ray.yml.j2 +171 -0
  319. sky/templates/shadeform-ray.yml.j2 +73 -0
  320. sky/templates/slurm-ray.yml.j2 +85 -0
  321. sky/templates/vast-ray.yml.j2 +2 -0
  322. sky/templates/vsphere-ray.yml.j2 +1 -0
  323. sky/templates/websocket_proxy.py +188 -43
  324. sky/usage/usage_lib.py +16 -4
  325. sky/users/model.conf +1 -1
  326. sky/users/permission.py +84 -44
  327. sky/users/rbac.py +31 -3
  328. sky/utils/accelerator_registry.py +6 -3
  329. sky/utils/admin_policy_utils.py +18 -5
  330. sky/utils/annotations.py +128 -6
  331. sky/utils/asyncio_utils.py +78 -0
  332. sky/utils/atomic.py +1 -1
  333. sky/utils/auth_utils.py +153 -0
  334. sky/utils/cli_utils/status_utils.py +12 -7
  335. sky/utils/cluster_utils.py +28 -6
  336. sky/utils/command_runner.py +283 -30
  337. sky/utils/command_runner.pyi +63 -7
  338. sky/utils/common.py +3 -1
  339. sky/utils/common_utils.py +55 -7
  340. sky/utils/config_utils.py +1 -14
  341. sky/utils/context.py +127 -40
  342. sky/utils/context_utils.py +73 -18
  343. sky/utils/controller_utils.py +229 -70
  344. sky/utils/db/db_utils.py +95 -18
  345. sky/utils/db/kv_cache.py +149 -0
  346. sky/utils/db/migration_utils.py +24 -7
  347. sky/utils/env_options.py +4 -0
  348. sky/utils/git.py +559 -1
  349. sky/utils/kubernetes/create_cluster.sh +15 -30
  350. sky/utils/kubernetes/delete_cluster.sh +10 -7
  351. sky/utils/kubernetes/generate_kind_config.py +6 -66
  352. sky/utils/kubernetes/gpu_labeler.py +13 -3
  353. sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +2 -1
  354. sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +16 -16
  355. sky/utils/kubernetes/kubernetes_deploy_utils.py +187 -260
  356. sky/utils/kubernetes/rsync_helper.sh +11 -3
  357. sky/utils/kubernetes/ssh-tunnel.sh +7 -376
  358. sky/utils/kubernetes_enums.py +7 -15
  359. sky/utils/lock_events.py +4 -4
  360. sky/utils/locks.py +128 -31
  361. sky/utils/log_utils.py +0 -319
  362. sky/utils/resource_checker.py +13 -10
  363. sky/utils/resources_utils.py +53 -29
  364. sky/utils/rich_utils.py +8 -4
  365. sky/utils/schemas.py +138 -52
  366. sky/utils/subprocess_utils.py +17 -4
  367. sky/utils/thread_utils.py +91 -0
  368. sky/utils/timeline.py +2 -1
  369. sky/utils/ux_utils.py +35 -1
  370. sky/utils/volume.py +88 -4
  371. sky/utils/yaml_utils.py +9 -0
  372. sky/volumes/client/sdk.py +48 -10
  373. sky/volumes/server/core.py +59 -22
  374. sky/volumes/server/server.py +46 -17
  375. sky/volumes/volume.py +54 -42
  376. sky/workspaces/core.py +57 -21
  377. sky/workspaces/server.py +13 -12
  378. sky_templates/README.md +3 -0
  379. sky_templates/__init__.py +3 -0
  380. sky_templates/ray/__init__.py +0 -0
  381. sky_templates/ray/start_cluster +183 -0
  382. sky_templates/ray/stop_cluster +75 -0
  383. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/METADATA +343 -65
  384. skypilot_nightly-1.0.0.dev20251210.dist-info/RECORD +629 -0
  385. skypilot_nightly-1.0.0.dev20251210.dist-info/top_level.txt +2 -0
  386. sky/client/cli/git.py +0 -549
  387. sky/dashboard/out/_next/static/chunks/1121-408ed10b2f9fce17.js +0 -1
  388. sky/dashboard/out/_next/static/chunks/1141-943efc7aff0f0c06.js +0 -1
  389. sky/dashboard/out/_next/static/chunks/1836-37fede578e2da5f8.js +0 -40
  390. sky/dashboard/out/_next/static/chunks/3015-86cabed5d4669ad0.js +0 -1
  391. sky/dashboard/out/_next/static/chunks/3294.c80326aec9bfed40.js +0 -6
  392. sky/dashboard/out/_next/static/chunks/3785.4872a2f3aa489880.js +0 -1
  393. sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js +0 -1
  394. sky/dashboard/out/_next/static/chunks/4045.b30465273dc5e468.js +0 -21
  395. sky/dashboard/out/_next/static/chunks/4676-9da7fdbde90b5549.js +0 -10
  396. sky/dashboard/out/_next/static/chunks/4725.10f7a9a5d3ea8208.js +0 -1
  397. sky/dashboard/out/_next/static/chunks/5339.3fda4a4010ff4e06.js +0 -51
  398. sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -1
  399. sky/dashboard/out/_next/static/chunks/649.b9d7f7d10c1b8c53.js +0 -45
  400. sky/dashboard/out/_next/static/chunks/6856-dca7962af4814e1b.js +0 -1
  401. sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +0 -1
  402. sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js +0 -6
  403. sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js +0 -18
  404. sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js +0 -36
  405. sky/dashboard/out/_next/static/chunks/8969-0be3036bf86f8256.js +0 -1
  406. sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js +0 -6
  407. sky/dashboard/out/_next/static/chunks/9037-fa1737818d0a0969.js +0 -6
  408. sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js +0 -34
  409. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1cbba24bd1bd35f8.js +0 -16
  410. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0b4b35dc1dfe046c.js +0 -16
  411. sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js +0 -1
  412. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js +0 -11
  413. sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js +0 -16
  414. sky/dashboard/out/_next/static/chunks/pages/jobs-1f70d9faa564804f.js +0 -1
  415. sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js +0 -1
  416. sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js +0 -1
  417. sky/dashboard/out/_next/static/chunks/webpack-4fe903277b57b523.js +0 -1
  418. sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -3
  419. sky/dashboard/out/_next/static/mS-4qZPSkRuA1u-g2wQhg/_buildManifest.js +0 -1
  420. sky/templates/kubernetes-ssh-jump.yml.j2 +0 -94
  421. sky/utils/kubernetes/cleanup-tunnel.sh +0 -62
  422. sky/utils/kubernetes/deploy_remote_cluster.py +0 -1299
  423. sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -191
  424. skypilot_nightly-1.0.0.dev20250905.dist-info/RECORD +0 -547
  425. skypilot_nightly-1.0.0.dev20250905.dist-info/top_level.txt +0 -1
  426. /sky/dashboard/out/_next/static/{mS-4qZPSkRuA1u-g2wQhg → KYAhEFa3FTfq4JyKVgo-s}/_ssgManifest.js +0 -0
  427. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/WHEEL +0 -0
  428. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/entry_points.txt +0 -0
  429. {skypilot_nightly-1.0.0.dev20250905.dist-info → skypilot_nightly-1.0.0.dev20251210.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,30 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9847],{65168:function(e,t,n){n.d(t,{ZP:function(){return eB}});var r=n(87462),o=n(63366),i=n(67294),l=n(90512),a=n(94780);function s(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function u(...e){return i.useMemo(()=>e.every(e=>null==e)?null:t=>{e.forEach(e=>{s(e,t)})},e)}var c=function(e){return"string"==typeof e},d=function(e,t=[]){if(void 0===e)return{};let n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n},p=function(e){if(void 0===e)return{};let t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t},f=function(e){let{getSlotProps:t,additionalProps:n,externalSlotProps:o,externalForwardedProps:i,className:a}=e;if(!t){let e=(0,l.Z)(null==n?void 0:n.className,a,null==i?void 0:i.className,null==o?void 0:o.className),t=(0,r.Z)({},null==n?void 0:n.style,null==i?void 0:i.style,null==o?void 0:o.style),s=(0,r.Z)({},n,i,o);return e.length>0&&(s.className=e),Object.keys(t).length>0&&(s.style=t),{props:s,internalRef:void 0}}let s=d((0,r.Z)({},i,o)),u=p(o),c=p(i),f=t(s),v=(0,l.Z)(null==f?void 0:f.className,null==n?void 0:n.className,a,null==i?void 0:i.className,null==o?void 0:o.className),m=(0,r.Z)({},null==f?void 0:f.style,null==n?void 0:n.style,null==i?void 0:i.style,null==o?void 0:o.style),h=(0,r.Z)({},f,n,c,u);return v.length>0&&(h.className=v),Object.keys(m).length>0&&(h.style=m),{props:h,internalRef:f.ref}};let v=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];var m=function(e){var t,n;let{elementType:i,externalSlotProps:l,ownerState:a,skipResolvingSlotProps:s=!1}=e,d=(0,o.Z)(e,v),p=s?{}:"function"==typeof l?l(a,void 0):l,{props:m,internalRef:h}=f((0,r.Z)({},d,{externalSlotProps:p})),g=u(h,null==p?void 0:p.ref,null==(t=e.additionalProps)?void 0:t.ref);return n=(0,r.Z)({},m,{ref:g}),void 0===i||c(i)?n:(0,r.Z)({},n,{ownerState:(0,r.Z)({},n.ownerState,a)})},h=n(30957),g=n(81079),y=function(e,t=166){let n;function r(...o){clearTimeout(n),n=setTimeout(()=>{e.apply(this,o)},t)}return r.clear=()=>{clearTimeout(n)},r};function E(e){return e&&e.ownerDocument||document}function x(e){return E(e).defaultView||window}let b={},R=[];class k{constructor(){this.currentId=null,this.clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)},this.disposeEffect=()=>this.clear}static create(){return new k}start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,t()},e)}}function N(e){if(parseInt(i.version,10)>=19){var t;return(null==e||null==(t=e.props)?void 0:t.ref)||null}return(null==e?void 0:e.ref)||null}function P(e,t){return(P=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}var Z=n(73935),T={disabled:!1},w=i.createContext(null),O="unmounted",M="exited",C="entering",I="entered",S="exiting",D=function(e){function t(t,n){r=e.call(this,t,n)||this;var r,o,i=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?i?(o=M,r.appearStatus=C):o=I:o=t.unmountOnExit||t.mountOnEnter?O:M,r.state={status:o},r.nextCallback=null,r}t.prototype=Object.create(e.prototype),t.prototype.constructor=t,P(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===O?{status:M}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==C&&n!==I&&(t=C):(n===C||n===I)&&(t=S)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t){if(this.cancelNextCallback(),t===C){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:Z.findDOMNode(this);n&&n.scrollTop}this.performEnter(e)}else this.performExit()}else this.props.unmountOnExit&&this.state.status===M&&this.setState({status:O})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[Z.findDOMNode(this),r],i=o[0],l=o[1],a=this.getTimeouts(),s=r?a.appear:a.enter;if(!e&&!n||T.disabled){this.safeSetState({status:I},function(){t.props.onEntered(i)});return}this.props.onEnter(i,l),this.safeSetState({status:C},function(){t.props.onEntering(i,l),t.onTransitionEnd(s,function(){t.safeSetState({status:I},function(){t.props.onEntered(i,l)})})})},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:Z.findDOMNode(this);if(!t||T.disabled){this.safeSetState({status:M},function(){e.props.onExited(r)});return}this.props.onExit(r),this.safeSetState({status:S},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:M},function(){e.props.onExited(r)})})})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:Z.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(!n||r){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],i=o[0],l=o[1];this.props.addEndListener(i,l)}null!=e&&setTimeout(this.nextCallback,e)},n.render=function(){var e=this.state.status;if(e===O)return null;var t=this.props,n=t.children,r=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,(0,o.Z)(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return i.createElement(w.Provider,{value:null},"function"==typeof n?n(e,r):i.cloneElement(i.Children.only(n),r))},t}(i.Component);function j(){}D.contextType=w,D.propTypes={},D.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:j,onEntering:j,onEntered:j,onExit:j,onExiting:j,onExited:j},D.UNMOUNTED=O,D.EXITED=M,D.ENTERING=C,D.ENTERED=I,D.EXITING=S;var A=n(17172),F=n(87685),L=function(e=null){let t=i.useContext(F.T);return t&&0!==Object.keys(t).length?t:e};let _=(0,A.Z)();var U=n(2418),W=n(22453);function z(){let e=function(e=_){return L(e)}(U.Z);return e[W.Z]||e}let H=e=>e.scrollTop;function V(e,t){var n,r;let{timeout:o,easing:i,style:l={}}=e;return{duration:null!=(n=l.transitionDuration)?n:"number"==typeof o?o:o[t.mode]||0,easing:null!=(r=l.transitionTimingFunction)?r:"object"==typeof i?i[t.mode]:i,delay:l.transitionDelay}}var B=n(85893);let q=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function K(e){return"scale(".concat(e,", ").concat(e**2,")")}let X={entering:{opacity:1,transform:K(1)},entered:{opacity:1,transform:"none"}},Y="undefined"!=typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),$=i.forwardRef(function(e,t){let{addEndListener:n,appear:l=!0,children:a,easing:s,in:c,onEnter:d,onEntered:p,onEntering:f,onExit:v,onExited:m,onExiting:h,style:g,timeout:y="auto",TransitionComponent:E=D}=e,x=(0,o.Z)(e,q),P=function(){var e;let t=function(e,t){let n=i.useRef(b);return n.current===b&&(n.current=e(void 0)),n}(k.create).current;return e=t.disposeEffect,i.useEffect(e,R),t}(),Z=i.useRef(),T=z(),w=i.useRef(null),O=u(w,N(a),t),M=e=>t=>{if(e){let n=w.current;void 0===t?e(n):e(n,t)}},C=M(f),I=M((e,t)=>{let n;H(e);let{duration:r,delay:o,easing:i}=V({style:g,timeout:y,easing:s},{mode:"enter"});"auto"===y?(n=T.transitions.getAutoHeightDuration(e.clientHeight),Z.current=n):n=r,e.style.transition=[T.transitions.create("opacity",{duration:n,delay:o}),T.transitions.create("transform",{duration:Y?n:.666*n,delay:o,easing:i})].join(","),d&&d(e,t)}),S=M(p),j=M(h),A=M(e=>{let t;let{duration:n,delay:r,easing:o}=V({style:g,timeout:y,easing:s},{mode:"exit"});"auto"===y?(t=T.transitions.getAutoHeightDuration(e.clientHeight),Z.current=t):t=n,e.style.transition=[T.transitions.create("opacity",{duration:t,delay:r}),T.transitions.create("transform",{duration:Y?t:.666*t,delay:Y?r:r||.333*t,easing:o})].join(","),e.style.opacity=0,e.style.transform=K(.75),v&&v(e)}),F=M(m);return(0,B.jsx)(E,(0,r.Z)({appear:l,in:c,nodeRef:w,onEnter:I,onEntered:S,onEntering:C,onExit:A,onExited:F,onExiting:j,addEndListener:e=>{"auto"===y&&P.start(Z.current||0,e),n&&n(w.current,e)},timeout:"auto"===y?null:y},x,{children:(e,t)=>i.cloneElement(a,(0,r.Z)({style:(0,r.Z)({opacity:0,transform:K(.75),visibility:"exited"!==e||c?void 0:"hidden"},X[e],g,a.props.style),ref:O},t))}))});function G(e){let t=[],n=[];return Array.from(e.querySelectorAll('input,select,textarea,a[href],button,[tabindex],audio[controls],video[controls],[contenteditable]:not([contenteditable="false"])')).forEach((e,r)=>{let o=function(e){let t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1===o||e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type||!e.name)return!1;let t=t=>e.ownerDocument.querySelector('input[type="radio"]'.concat(t)),n=t('[name="'.concat(e.name,'"]:checked'));return n||(n=t('[name="'.concat(e.name,'"]'))),n!==e}(e)||(0===o?t.push(e):n.push({documentOrder:r,tabIndex:o,node:e}))}),n.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function J(){return!0}$.muiSupportAuto=!0;var Q=function(e){let{children:t,disableAutoFocus:n=!1,disableEnforceFocus:r=!1,disableRestoreFocus:o=!1,getTabbable:l=G,isEnabled:a=J,open:s}=e,c=i.useRef(!1),d=i.useRef(null),p=i.useRef(null),f=i.useRef(null),v=i.useRef(null),m=i.useRef(!1),h=i.useRef(null),g=u(N(t),h),y=i.useRef(null);i.useEffect(()=>{s&&h.current&&(m.current=!n)},[n,s]),i.useEffect(()=>{if(!s||!h.current)return;let e=E(h.current);return!h.current.contains(e.activeElement)&&(h.current.hasAttribute("tabIndex")||h.current.setAttribute("tabIndex","-1"),m.current&&h.current.focus()),()=>{o||(f.current&&f.current.focus&&(c.current=!0,f.current.focus()),f.current=null)}},[s]),i.useEffect(()=>{if(!s||!h.current)return;let e=E(h.current),t=t=>{y.current=t,!r&&a()&&"Tab"===t.key&&e.activeElement===h.current&&t.shiftKey&&(c.current=!0,p.current&&p.current.focus())},n=()=>{let t=h.current;if(null===t)return;if(!e.hasFocus()||!a()||c.current){c.current=!1;return}if(t.contains(e.activeElement)||r&&e.activeElement!==d.current&&e.activeElement!==p.current)return;if(e.activeElement!==v.current)v.current=null;else if(null!==v.current)return;if(!m.current)return;let n=[];if((e.activeElement===d.current||e.activeElement===p.current)&&(n=l(h.current)),n.length>0){var o,i;let e=!!((null==(o=y.current)?void 0:o.shiftKey)&&(null==(i=y.current)?void 0:i.key)==="Tab"),t=n[0],r=n[n.length-1];"string"!=typeof t&&"string"!=typeof r&&(e?r.focus():t.focus())}else t.focus()};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);let o=setInterval(()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n()},50);return()=>{clearInterval(o),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}},[n,r,o,a,s,l]);let x=e=>{null===f.current&&(f.current=e.relatedTarget),m.current=!0};return(0,B.jsxs)(i.Fragment,{children:[(0,B.jsx)("div",{tabIndex:s?0:-1,onFocus:x,ref:d,"data-testid":"sentinelStart"}),i.cloneElement(t,{ref:g,onFocus:e=>{null===f.current&&(f.current=e.relatedTarget),m.current=!0,v.current=e.target;let n=t.props.onFocus;n&&n(e)}}),(0,B.jsx)("div",{tabIndex:s?0:-1,onFocus:x,ref:p,"data-testid":"sentinelEnd"})]})};let ee="undefined"!=typeof window?i.useLayoutEffect:i.useEffect,et=i.forwardRef(function(e,t){let{children:n,container:r,disablePortal:o=!1}=e,[l,a]=i.useState(null),c=u(i.isValidElement(n)?N(n):null,t);return(ee(()=>{!o&&a(("function"==typeof r?r():r)||document.body)},[r,o]),ee(()=>{if(l&&!o)return s(t,l),()=>{s(t,null)}},[t,l,o]),o)?i.isValidElement(n)?i.cloneElement(n,{ref:c}):(0,B.jsx)(i.Fragment,{children:n}):(0,B.jsx)(i.Fragment,{children:l?Z.createPortal(n,l):l})}),en=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],er={entering:{opacity:1},entered:{opacity:1}},eo=i.forwardRef(function(e,t){let n=z(),l={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:a,appear:s=!0,children:c,easing:d,in:p,onEnter:f,onEntered:v,onEntering:m,onExit:h,onExited:g,onExiting:y,style:E,timeout:x=l,TransitionComponent:b=D}=e,R=(0,o.Z)(e,en),k=i.useRef(null),P=u(k,N(c),t),Z=e=>t=>{if(e){let n=k.current;void 0===t?e(n):e(n,t)}},T=Z(m),w=Z((e,t)=>{H(e);let r=V({style:E,timeout:x,easing:d},{mode:"enter"});e.style.webkitTransition=n.transitions.create("opacity",r),e.style.transition=n.transitions.create("opacity",r),f&&f(e,t)}),O=Z(v),M=Z(y),C=Z(e=>{let t=V({style:E,timeout:x,easing:d},{mode:"exit"});e.style.webkitTransition=n.transitions.create("opacity",t),e.style.transition=n.transitions.create("opacity",t),h&&h(e)}),I=Z(g);return(0,B.jsx)(b,(0,r.Z)({appear:s,in:p,nodeRef:k,onEnter:w,onEntered:O,onEntering:T,onExit:C,onExited:I,onExiting:M,addEndListener:e=>{a&&a(k.current,e)},timeout:x},R,{children:(e,t)=>i.cloneElement(c,(0,r.Z)({style:(0,r.Z)({opacity:0,visibility:"exited"!==e||p?void 0:"hidden"},er[e],E,c.props.style),ref:P},t))}))});var ei=n(1588),el=n(27621);function ea(e){return(0,el.ZP)("MuiBackdrop",e)}(0,ei.Z)("MuiBackdrop",["root","invisible"]);let es=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],eu=e=>{let{classes:t,invisible:n}=e;return(0,a.Z)({root:["root",n&&"invisible"]},ea,t)},ec=(0,h.ZP)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.invisible&&t.invisible]}})(e=>{let{ownerState:t}=e;return(0,r.Z)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},t.invisible&&{backgroundColor:"transparent"})}),ed=i.forwardRef(function(e,t){var n,i,a;let s=(0,g.i)({props:e,name:"MuiBackdrop"}),{children:u,className:c,component:d="div",components:p={},componentsProps:f={},invisible:v=!1,open:m,slotProps:h={},slots:y={},TransitionComponent:E=eo,transitionDuration:x}=s,b=(0,o.Z)(s,es),R=(0,r.Z)({},s,{component:d,invisible:v}),k=eu(R),N=null!=(n=h.root)?n:f.root;return(0,B.jsx)(E,(0,r.Z)({in:m,timeout:x},b,{children:(0,B.jsx)(ec,(0,r.Z)({"aria-hidden":!0},N,{as:null!=(i=null!=(a=y.root)?a:p.Root)?i:d,className:(0,l.Z)(k.root,c,null==N?void 0:N.className),ownerState:(0,r.Z)({},R,null==N?void 0:N.ownerState),classes:k,ref:t,children:u}))}))});var ep=function(e){let t=i.useRef(e);return ee(()=>{t.current=e}),i.useRef((...e)=>(0,t.current)(...e)).current};function ef(...e){return e.reduce((e,t)=>null==t?e:function(...n){e.apply(this,n),t.apply(this,n)},()=>{})}function ev(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function em(e){return parseInt(x(e).getComputedStyle(e).paddingRight,10)||0}function eh(e,t,n,r,o){let i=[t,n,...r];[].forEach.call(e.children,e=>{let t=-1===i.indexOf(e),n=!function(e){let t=-1!==["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}(e);t&&n&&ev(e,o)})}function eg(e,t){let n=-1;return e.some((e,r)=>!!t(e)&&(n=r,!0)),n}class ey{add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&ev(e.modalRef,!1);let r=function(e){let t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}(t);eh(t,e.mount,e.modalRef,r,!0);let o=eg(this.containers,e=>e.container===t);return -1!==o?this.containers[o].modals.push(e):this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:r}),n}mount(e,t){let n=eg(this.containers,t=>-1!==t.modals.indexOf(e)),r=this.containers[n];r.restore||(r.restore=function(e,t){let n=[],r=e.container;if(!t.disableScrollLock){let e;if(function(e){let t=E(e);return t.body===e?x(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(r)){let e=function(e){let t=e.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}(E(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight="".concat(em(r)+e,"px");let t=E(r).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight="".concat(em(t)+e,"px")})}if(r.parentNode instanceof DocumentFragment)e=E(r).body;else{let t=r.parentElement,n=x(r);e=(null==t?void 0:t.nodeName)==="HTML"&&"scroll"===n.getComputedStyle(t).overflowY?t:r}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach(e=>{let{value:t,el:n,property:r}=e;t?n.style.setProperty(r,t):n.style.removeProperty(r)})}}(r,t))}remove(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=this.modals.indexOf(e);if(-1===n)return n;let r=eg(this.containers,t=>-1!==t.modals.indexOf(e)),o=this.containers[r];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(n,1),0===o.modals.length)o.restore&&o.restore(),e.modalRef&&ev(e.modalRef,t),eh(o.container,e.mount,e.modalRef,o.hiddenSiblings,!1),this.containers.splice(r,1);else{let e=o.modals[o.modals.length-1];e.modalRef&&ev(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}}let eE=new ey;var ex=function(e){let{container:t,disableEscapeKeyDown:n=!1,disableScrollLock:o=!1,manager:l=eE,closeAfterTransition:a=!1,onTransitionEnter:s,onTransitionExited:c,children:p,onClose:f,open:v,rootRef:m}=e,h=i.useRef({}),g=i.useRef(null),y=i.useRef(null),x=u(y,m),[b,R]=i.useState(!v),k=!!p&&p.props.hasOwnProperty("in"),N=!0;("false"===e["aria-hidden"]||!1===e["aria-hidden"])&&(N=!1);let P=()=>E(g.current),Z=()=>(h.current.modalRef=y.current,h.current.mount=g.current,h.current),T=()=>{l.mount(Z(),{disableScrollLock:o}),y.current&&(y.current.scrollTop=0)},w=ep(()=>{let e=("function"==typeof t?t():t)||P().body;l.add(Z(),e),y.current&&T()}),O=i.useCallback(()=>l.isTopModal(Z()),[l]),M=ep(e=>{g.current=e,e&&(v&&O()?T():y.current&&ev(y.current,N))}),C=i.useCallback(()=>{l.remove(Z(),N)},[N,l]);i.useEffect(()=>()=>{C()},[C]),i.useEffect(()=>{v?w():k&&a||C()},[v,C,k,a,w]);let I=e=>t=>{var r;null==(r=e.onKeyDown)||r.call(e,t),"Escape"===t.key&&229!==t.which&&O()&&!n&&(t.stopPropagation(),f&&f(t,"escapeKeyDown"))},S=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.target===t.currentTarget&&f&&f(t,"backdropClick")};return{getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=d(e);delete n.onTransitionEnter,delete n.onTransitionExited;let o=(0,r.Z)({},n,t);return(0,r.Z)({role:"presentation"},o,{onKeyDown:I(o),ref:x})},getBackdropProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Z)({"aria-hidden":!0},e,{onClick:S(e),open:v})},getTransitionProps:()=>({onEnter:ef(()=>{R(!1),s&&s()},null==p?void 0:p.props.onEnter),onExited:ef(()=>{R(!0),c&&c(),a&&C()},null==p?void 0:p.props.onExited)}),rootRef:x,portalRef:M,isTopModal:O,exited:b,hasTransition:k}};function eb(e){return(0,el.ZP)("MuiModal",e)}(0,ei.Z)("MuiModal",["root","hidden","backdrop"]);let eR=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],ek=e=>{let{open:t,exited:n,classes:r}=e;return(0,a.Z)({root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]},eb,r)},eN=(0,h.ZP)("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})(e=>{let{theme:t,ownerState:n}=e;return(0,r.Z)({position:"fixed",zIndex:(t.vars||t).zIndex.modal,right:0,bottom:0,top:0,left:0},!n.open&&n.exited&&{visibility:"hidden"})}),eP=(0,h.ZP)(ed,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),eZ=i.forwardRef(function(e,t){var n,a,s,u,c,d;let p=(0,g.i)({name:"MuiModal",props:e}),{BackdropComponent:f=eP,BackdropProps:v,className:h,closeAfterTransition:y=!1,children:E,container:x,component:b,components:R={},componentsProps:k={},disableAutoFocus:N=!1,disableEnforceFocus:P=!1,disableEscapeKeyDown:Z=!1,disablePortal:T=!1,disableRestoreFocus:w=!1,disableScrollLock:O=!1,hideBackdrop:M=!1,keepMounted:C=!1,onBackdropClick:I,open:S,slotProps:D,slots:j}=p,A=(0,o.Z)(p,eR),F=(0,r.Z)({},p,{closeAfterTransition:y,disableAutoFocus:N,disableEnforceFocus:P,disableEscapeKeyDown:Z,disablePortal:T,disableRestoreFocus:w,disableScrollLock:O,hideBackdrop:M,keepMounted:C}),{getRootProps:L,getBackdropProps:_,getTransitionProps:U,portalRef:W,isTopModal:z,exited:H,hasTransition:V}=ex((0,r.Z)({},F,{rootRef:t})),q=(0,r.Z)({},F,{exited:H}),K=ek(q),X={};if(void 0===E.props.tabIndex&&(X.tabIndex="-1"),V){let{onEnter:e,onExited:t}=U();X.onEnter=e,X.onExited=t}let Y=null!=(n=null!=(a=null==j?void 0:j.root)?a:R.Root)?n:eN,$=null!=(s=null!=(u=null==j?void 0:j.backdrop)?u:R.Backdrop)?s:f,G=null!=(c=null==D?void 0:D.root)?c:k.root,J=null!=(d=null==D?void 0:D.backdrop)?d:k.backdrop,ee=m({elementType:Y,externalSlotProps:G,externalForwardedProps:A,getSlotProps:L,additionalProps:{ref:t,as:b},ownerState:q,className:(0,l.Z)(h,null==G?void 0:G.className,null==K?void 0:K.root,!q.open&&q.exited&&(null==K?void 0:K.hidden))}),en=m({elementType:$,externalSlotProps:J,additionalProps:v,getSlotProps:e=>_((0,r.Z)({},e,{onClick:t=>{I&&I(t),null!=e&&e.onClick&&e.onClick(t)}})),className:(0,l.Z)(null==J?void 0:J.className,null==v?void 0:v.className,null==K?void 0:K.backdrop),ownerState:q});return C||S||V&&!H?(0,B.jsx)(et,{ref:W,container:x,disablePortal:T,children:(0,B.jsxs)(Y,(0,r.Z)({},ee,{children:[!M&&f?(0,B.jsx)($,(0,r.Z)({},en)):null,(0,B.jsx)(Q,{disableEnforceFocus:P,disableAutoFocus:N,disableRestoreFocus:w,isEnabled:z,open:S,children:i.cloneElement(E,X)})]}))}):null});var eT=n(2101),ew=e=>((e<1?5.11916*e**2:4.5*Math.log(e+1)+2)/100).toFixed(2);function eO(e){return(0,el.ZP)("MuiPaper",e)}(0,ei.Z)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);let eM=["className","component","elevation","square","variant"],eC=e=>{let{square:t,elevation:n,variant:r,classes:o}=e;return(0,a.Z)({root:["root",r,!t&&"rounded","elevation"===r&&"elevation".concat(n)]},eO,o)},eI=(0,h.ZP)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t["elevation".concat(n.elevation)]]}})(e=>{var t;let{theme:n,ownerState:o}=e;return(0,r.Z)({backgroundColor:(n.vars||n).palette.background.paper,color:(n.vars||n).palette.text.primary,transition:n.transitions.create("box-shadow")},!o.square&&{borderRadius:n.shape.borderRadius},"outlined"===o.variant&&{border:"1px solid ".concat((n.vars||n).palette.divider)},"elevation"===o.variant&&(0,r.Z)({boxShadow:(n.vars||n).shadows[o.elevation]},!n.vars&&"dark"===n.palette.mode&&{backgroundImage:"linear-gradient(".concat((0,eT.Fq)("#fff",ew(o.elevation)),", ").concat((0,eT.Fq)("#fff",ew(o.elevation)),")")},n.vars&&{backgroundImage:null==(t=n.vars.overlays)?void 0:t[o.elevation]}))}),eS=i.forwardRef(function(e,t){let n=(0,g.i)({props:e,name:"MuiPaper"}),{className:i,component:a="div",elevation:s=1,square:u=!1,variant:c="elevation"}=n,d=(0,o.Z)(n,eM),p=(0,r.Z)({},n,{component:a,elevation:s,square:u,variant:c}),f=eC(p);return(0,B.jsx)(eI,(0,r.Z)({as:a,ownerState:p,className:(0,l.Z)(f.root,i),ref:t},d))});function eD(e){return(0,el.ZP)("MuiPopover",e)}(0,ei.Z)("MuiPopover",["root","paper"]);let ej=["onEntering"],eA=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],eF=["slotProps"];function eL(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function e_(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function eU(e){return[e.horizontal,e.vertical].map(e=>"number"==typeof e?"".concat(e,"px"):e).join(" ")}function eW(e){return"function"==typeof e?e():e}let ez=e=>{let{classes:t}=e;return(0,a.Z)({root:["root"],paper:["paper"]},eD,t)},eH=(0,h.ZP)(eZ,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),eV=(0,h.ZP)(eS,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0});var eB=i.forwardRef(function(e,t){var n,a,s;let d=(0,g.i)({props:e,name:"MuiPopover"}),{action:p,anchorEl:f,anchorOrigin:v={vertical:"top",horizontal:"left"},anchorPosition:h,anchorReference:b="anchorEl",children:R,className:k,container:N,elevation:P=8,marginThreshold:Z=16,open:T,PaperProps:w={},slots:O,slotProps:M,transformOrigin:C={vertical:"top",horizontal:"left"},TransitionComponent:I=$,transitionDuration:S="auto",TransitionProps:{onEntering:D}={},disableScrollLock:j=!1}=d,A=(0,o.Z)(d.TransitionProps,ej),F=(0,o.Z)(d,eA),L=null!=(n=null==M?void 0:M.paper)?n:w,_=i.useRef(),U=u(_,L.ref),W=(0,r.Z)({},d,{anchorOrigin:v,anchorReference:b,elevation:P,marginThreshold:Z,externalPaperSlotProps:L,transformOrigin:C,TransitionComponent:I,transitionDuration:S,TransitionProps:A}),z=ez(W),H=i.useCallback(()=>{if("anchorPosition"===b)return h;let e=eW(f),t=(e&&1===e.nodeType?e:E(_.current).body).getBoundingClientRect();return{top:t.top+eL(t,v.vertical),left:t.left+e_(t,v.horizontal)}},[f,v.horizontal,v.vertical,h,b]),V=i.useCallback(e=>({vertical:eL(e,C.vertical),horizontal:e_(e,C.horizontal)}),[C.horizontal,C.vertical]),q=i.useCallback(e=>{let t={width:e.offsetWidth,height:e.offsetHeight},n=V(t);if("none"===b)return{top:null,left:null,transformOrigin:eU(n)};let r=H(),o=r.top-n.vertical,i=r.left-n.horizontal,l=o+t.height,a=i+t.width,s=x(eW(f)),u=s.innerHeight-Z,c=s.innerWidth-Z;if(null!==Z&&o<Z){let e=o-Z;o-=e,n.vertical+=e}else if(null!==Z&&l>u){let e=l-u;o-=e,n.vertical+=e}if(null!==Z&&i<Z){let e=i-Z;i-=e,n.horizontal+=e}else if(a>c){let e=a-c;i-=e,n.horizontal+=e}return{top:"".concat(Math.round(o),"px"),left:"".concat(Math.round(i),"px"),transformOrigin:eU(n)}},[f,b,H,V,Z]),[K,X]=i.useState(T),Y=i.useCallback(()=>{let e=_.current;if(!e)return;let t=q(e);null!==t.top&&(e.style.top=t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,X(!0)},[q]);i.useEffect(()=>(j&&window.addEventListener("scroll",Y),()=>window.removeEventListener("scroll",Y)),[f,j,Y]),i.useEffect(()=>{T&&Y()}),i.useImperativeHandle(p,()=>T?{updatePosition:()=>{Y()}}:null,[T,Y]),i.useEffect(()=>{if(!T)return;let e=y(()=>{Y()}),t=x(f);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[f,T,Y]);let G=S;"auto"!==S||I.muiSupportAuto||(G=void 0);let J=N||(f?E(eW(f)).body:void 0),Q=null!=(a=null==O?void 0:O.root)?a:eH,ee=null!=(s=null==O?void 0:O.paper)?s:eV,et=m({elementType:ee,externalSlotProps:(0,r.Z)({},L,{style:K?L.style:(0,r.Z)({},L.style,{opacity:0})}),additionalProps:{elevation:P,ref:U},ownerState:W,className:(0,l.Z)(z.paper,null==L?void 0:L.className)}),en=m({elementType:Q,externalSlotProps:(null==M?void 0:M.root)||{},externalForwardedProps:F,additionalProps:{ref:t,slotProps:{backdrop:{invisible:!0}},container:J,open:T},ownerState:W,className:(0,l.Z)(z.root,k)}),{slotProps:er}=en,eo=(0,o.Z)(en,eF);return(0,B.jsx)(Q,(0,r.Z)({},eo,!c(Q)&&{slotProps:er,disableScrollLock:j},{children:(0,B.jsx)(I,(0,r.Z)({appear:!0,in:T,onEntering:(e,t)=>{D&&D(e,t),Y()},onExited:()=>{X(!1)},timeout:G},A,{children:(0,B.jsx)(ee,(0,r.Z)({},et,{children:R}))}))}))})},88507:function(e,t,n){n.d(t,{Z:function(){return r}});/**
2
+ * @license lucide-react v0.407.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */let r=(0,n(60998).Z)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},13626:function(e,t,n){n.d(t,{Z:function(){return r}});/**
7
+ * @license lucide-react v0.407.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */let r=(0,n(60998).Z)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},47603:function(e,t,n){n.d(t,{Z:function(){return r}});/**
12
+ * @license lucide-react v0.407.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */let r=(0,n(60998).Z)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},28586:function(e,t,n){n.d(t,{Z:function(){return r}});/**
17
+ * @license lucide-react v0.407.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */let r=(0,n(60998).Z)("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]])},43767:function(e,t,n){n.d(t,{Z:function(){return r}});/**
22
+ * @license lucide-react v0.407.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */let r=(0,n(60998).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},6327:function(e,t,n){n.d(t,{x8:function(){return ea},VY:function(){return eo},dk:function(){return el},aV:function(){return er},h_:function(){return en},fC:function(){return ee},Dx:function(){return ei},xz:function(){return et}});var r=n(67294),o=n(36206),i=n(28771),l=n(25360),a=n(91276),s=n(77342),u=n(46063),c=n(95420),d=n(42651),p=n(9981),f=e=>{let t,n;let{present:o,children:l}=e,a=function(e){var t,n;let[o,i]=r.useState(),l=r.useRef(null),a=r.useRef(e),s=r.useRef("none"),[u,c]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>n[e][t]??e,t));return r.useEffect(()=>{let e=v(l.current);s.current="mounted"===u?e:"none"},[u]),(0,p.b)(()=>{let t=l.current,n=a.current;if(n!==e){let r=s.current,o=v(t);e?c("MOUNT"):"none"===o||t?.display==="none"?c("UNMOUNT"):n&&r!==o?c("ANIMATION_OUT"):c("UNMOUNT"),a.current=e}},[e,c]),(0,p.b)(()=>{if(o){let e;let t=o.ownerDocument.defaultView??window,n=n=>{let r=v(l.current).includes(n.animationName);if(n.target===o&&r&&(c("ANIMATION_END"),!a.current)){let n=o.style.animationFillMode;o.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=n)})}},r=e=>{e.target===o&&(s.current=v(l.current))};return o.addEventListener("animationstart",r),o.addEventListener("animationcancel",n),o.addEventListener("animationend",n),()=>{t.clearTimeout(e),o.removeEventListener("animationstart",r),o.removeEventListener("animationcancel",n),o.removeEventListener("animationend",n)}}c("ANIMATION_END")},[o,c]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:r.useCallback(e=>{l.current=e?getComputedStyle(e):null,i(e)},[])}}(o),s="function"==typeof l?l({present:a.isPresent}):r.Children.only(l),u=(0,i.e)(a.ref,(t=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning?s.ref:(t=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning?s.props.ref:s.props.ref||s.ref);return"function"==typeof l||a.isPresent?r.cloneElement(s,{ref:u}):null};function v(e){return e?.animationName||"none"}f.displayName="Presence";var m=n(75320),h=n(27552),g=n(6223),y=n(23541),E=n(88426),x=n(85893),b="Dialog",[R,k]=(0,l.b)(b),[N,P]=R(b),Z=e=>{let{__scopeDialog:t,children:n,open:o,defaultOpen:i,onOpenChange:l,modal:u=!0}=e,c=r.useRef(null),d=r.useRef(null),[p,f]=(0,s.T)({prop:o,defaultProp:i??!1,onChange:l,caller:b});return(0,x.jsx)(N,{scope:t,triggerRef:c,contentRef:d,contentId:(0,a.M)(),titleId:(0,a.M)(),descriptionId:(0,a.M)(),open:p,onOpenChange:f,onOpenToggle:r.useCallback(()=>f(e=>!e),[f]),modal:u,children:n})};Z.displayName=b;var T="DialogTrigger",w=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,l=P(T,n),a=(0,i.e)(t,l.triggerRef);return(0,x.jsx)(m.WV.button,{type:"button","aria-haspopup":"dialog","aria-expanded":l.open,"aria-controls":l.contentId,"data-state":X(l.open),...r,ref:a,onClick:(0,o.M)(e.onClick,l.onOpenToggle)})});w.displayName=T;var O="DialogPortal",[M,C]=R(O,{forceMount:void 0}),I=e=>{let{__scopeDialog:t,forceMount:n,children:o,container:i}=e,l=P(O,t);return(0,x.jsx)(M,{scope:t,forceMount:n,children:r.Children.map(o,e=>(0,x.jsx)(f,{present:n||l.open,children:(0,x.jsx)(d.h,{asChild:!0,container:i,children:e})}))})};I.displayName=O;var S="DialogOverlay",D=r.forwardRef((e,t)=>{let n=C(S,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=P(S,e.__scopeDialog);return i.modal?(0,x.jsx)(f,{present:r||i.open,children:(0,x.jsx)(A,{...o,ref:t})}):null});D.displayName=S;var j=(0,E.Z8)("DialogOverlay.RemoveScroll"),A=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=P(S,n);return(0,x.jsx)(g.Z,{as:j,allowPinchZoom:!0,shards:[o.contentRef],children:(0,x.jsx)(m.WV.div,{"data-state":X(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),F="DialogContent",L=r.forwardRef((e,t)=>{let n=C(F,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=P(F,e.__scopeDialog);return(0,x.jsx)(f,{present:r||i.open,children:i.modal?(0,x.jsx)(_,{...o,ref:t}):(0,x.jsx)(U,{...o,ref:t})})});L.displayName=F;var _=r.forwardRef((e,t)=>{let n=P(F,e.__scopeDialog),l=r.useRef(null),a=(0,i.e)(t,n.contentRef,l);return r.useEffect(()=>{let e=l.current;if(e)return(0,y.Ry)(e)},[]),(0,x.jsx)(W,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.M)(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:(0,o.M)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,o.M)(e.onFocusOutside,e=>e.preventDefault())})}),U=r.forwardRef((e,t)=>{let n=P(F,e.__scopeDialog),o=r.useRef(!1),i=r.useRef(!1);return(0,x.jsx)(W,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(o.current||n.triggerRef.current?.focus(),t.preventDefault()),o.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(o.current=!0,"pointerdown"!==t.detail.originalEvent.type||(i.current=!0));let r=t.target;n.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),W=r.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:l,onCloseAutoFocus:a,...s}=e,d=P(F,n),p=r.useRef(null),f=(0,i.e)(t,p);return(0,h.EW)(),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(c.M,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:l,onUnmountAutoFocus:a,children:(0,x.jsx)(u.XB,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":X(d.open),...s,ref:f,onDismiss:()=>d.onOpenChange(!1)})}),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(J,{titleId:d.titleId}),(0,x.jsx)(Q,{contentRef:p,descriptionId:d.descriptionId})]})]})}),z="DialogTitle",H=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=P(z,n);return(0,x.jsx)(m.WV.h2,{id:o.titleId,...r,ref:t})});H.displayName=z;var V="DialogDescription",B=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=P(V,n);return(0,x.jsx)(m.WV.p,{id:o.descriptionId,...r,ref:t})});B.displayName=V;var q="DialogClose",K=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=P(q,n);return(0,x.jsx)(m.WV.button,{type:"button",...r,ref:t,onClick:(0,o.M)(e.onClick,()=>i.onOpenChange(!1))})});function X(e){return e?"open":"closed"}K.displayName=q;var Y="DialogTitleWarning",[$,G]=(0,l.k)(Y,{contentName:F,titleName:z,docsSlug:"dialog"}),J=({titleId:e})=>{let t=G(Y),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
27
+
28
+ If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
29
+
30
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return r.useEffect(()=>{e&&!document.getElementById(e)&&console.error(n)},[n,e]),null},Q=({contentRef:e,descriptionId:t})=>{let n=G("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;return r.useEffect(()=>{let n=e.current?.getAttribute("aria-describedby");t&&n&&!document.getElementById(t)&&console.warn(o)},[o,e,t]),null},ee=Z,et=w,en=I,er=D,eo=L,ei=H,el=B,ea=K},12003:function(e,t,n){n.d(t,{j:function(){return l}});var r=n(90512);let o=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,i=r.W,l=(e,t)=>n=>{var r;if((null==t?void 0:t.variants)==null)return i(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:l,defaultVariants:a}=t,s=Object.keys(l).map(e=>{let t=null==n?void 0:n[e],r=null==a?void 0:a[e];if(null===t)return null;let i=o(t)||o(r);return l[e][i]}),u=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e},{});return i(e,s,null==t?void 0:null===(r=t.compoundVariants)||void 0===r?void 0:r.reduce((e,t)=>{let{class:n,className:r,...o}=t;return Object.entries(o).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...a,...u}[t]):({...a,...u})[t]===n})?[...e,n,r]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}}}]);
@@ -0,0 +1,34 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2888],{83454:function(e,t,n){"use strict";var o,r;e.exports=(null==(o=n.g.process)?void 0:o.env)&&"object"==typeof(null==(r=n.g.process)?void 0:r.env)?n.g.process:n(77663)},91118:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return n(32586)}])},19606:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return s},noSSR:function(){return l}});let o=n(10260);n(85893),n(67294);let r=o._(n(6119));function i(e){return{default:(null==e?void 0:e.default)||e}}function l(e,t){return delete t.webpack,delete t.modules,e(t)}function s(e,t){let n=r.default,o={loading:e=>{let{error:t,isLoading:n,pastDelay:o}=e;return null}};e instanceof Promise?o.loader=()=>e:"function"==typeof e?o.loader=e:"object"==typeof e&&(o={...o,...e});let s=(o={...o,...t}).loader;return(o.loadableGenerated&&(o={...o,...o.loadableGenerated},delete o.loadableGenerated),"boolean"!=typeof o.ssr||o.ssr)?n({...o,loader:()=>null!=s?s().then(i):Promise.resolve(i(()=>null))}):(delete o.webpack,delete o.modules,l(n,o))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},16725:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"LoadableContext",{enumerable:!0,get:function(){return o}});let o=n(10260)._(n(67294)).default.createContext(null)},6119:function(e,t,n){"use strict";/**
2
+ @copyright (c) 2017-present James Kyle <me@thejameskyle.com>
3
+ MIT License
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
15
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
17
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
18
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
19
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
20
+ */Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return h}});let o=n(10260)._(n(67294)),r=n(16725),i=[],l=[],s=!1;function a(e){let t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then(e=>(n.loading=!1,n.loaded=e,e)).catch(e=>{throw n.loading=!1,n.error=e,e}),n}class c{promise(){return this._res.promise}retry(){this._clearTimeouts(),this._res=this._loadFn(this._opts.loader),this._state={pastDelay:!1,timedOut:!1};let{_res:e,_opts:t}=this;e.loading&&("number"==typeof t.delay&&(0===t.delay?this._state.pastDelay=!0:this._delay=setTimeout(()=>{this._update({pastDelay:!0})},t.delay)),"number"==typeof t.timeout&&(this._timeout=setTimeout(()=>{this._update({timedOut:!0})},t.timeout))),this._res.promise.then(()=>{this._update({}),this._clearTimeouts()}).catch(e=>{this._update({}),this._clearTimeouts()}),this._update({})}_update(e){this._state={...this._state,error:this._res.error,loaded:this._res.loaded,loading:this._res.loading,...e},this._callbacks.forEach(e=>e())}_clearTimeouts(){clearTimeout(this._delay),clearTimeout(this._timeout)}getCurrentValue(){return this._state}subscribe(e){return this._callbacks.add(e),()=>{this._callbacks.delete(e)}}constructor(e,t){this._loadFn=e,this._opts=t,this._callbacks=new Set,this._delay=null,this._timeout=null,this.retry()}}function u(e){return function(e,t){let n=Object.assign({loader:null,loading:null,delay:200,timeout:null,webpack:null,modules:null},t),i=null;function a(){if(!i){let t=new c(e,n);i={getCurrentValue:t.getCurrentValue.bind(t),subscribe:t.subscribe.bind(t),retry:t.retry.bind(t),promise:t.promise.bind(t)}}return i.promise()}if(!s){let e=n.webpack?n.webpack():n.modules;e&&l.push(t=>{for(let n of e)if(t.includes(n))return a()})}function u(e,t){!function(){a();let e=o.default.useContext(r.LoadableContext);e&&Array.isArray(n.modules)&&n.modules.forEach(t=>{e(t)})}();let l=o.default.useSyncExternalStore(i.subscribe,i.getCurrentValue,i.getCurrentValue);return o.default.useImperativeHandle(t,()=>({retry:i.retry}),[]),o.default.useMemo(()=>{var t;return l.loading||l.error?o.default.createElement(n.loading,{isLoading:l.loading,pastDelay:l.pastDelay,timedOut:l.timedOut,error:l.error,retry:i.retry}):l.loaded?o.default.createElement((t=l.loaded)&&t.default?t.default:t,e):null},[e,l])}return u.preload=()=>a(),u.displayName="LoadableComponent",o.default.forwardRef(u)}(a,e)}function d(e,t){let n=[];for(;e.length;){let o=e.pop();n.push(o(t))}return Promise.all(n).then(()=>{if(e.length)return d(e,t)})}u.preloadAll=()=>new Promise((e,t)=>{d(i).then(e,t)}),u.preloadReady=e=>(void 0===e&&(e=[]),new Promise(t=>{let n=()=>(s=!0,t());d(l,e).then(n,n)})),window.__NEXT_PRELOADREADY=u.preloadReady;let h=u},47145:function(e,t,n){"use strict";n.d(t,{x:function(){return i}});var o=n(94545),r=n(93225);let i={fetch:async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"POST";try{let i=window.location.origin,l="".concat(i).concat(r.f4).concat(e),s=await fetch(l,{method:n,headers:"POST"===n?{"Content-Type":"application/json"}:{},body:"POST"===n?JSON.stringify(t):void 0});if(!s.ok){let t="Initial API request ".concat(e," failed with status ").concat(s.status);throw Error(t)}let a=s.headers.get("X-Skypilot-Request-ID")||s.headers.get("X-Request-ID");if(!a){let t="No request ID received from server for ".concat(e);throw Error(t)}let c=await fetch("".concat(i).concat(r.f4,"/api/get?request_id=").concat(a));if(!c.ok){let t=await (0,o.oN)(c),n="API request to get ".concat(e," result failed with status ").concat(c.status,", error: ").concat(t);throw Error(n)}let u=await c.json();return u.return_value?JSON.parse(u.return_value):[]}catch(n){let t="Error in apiClient.fetch for ".concat(e,": ").concat(n);throw console.error(t),Error(t)}},post:async(e,t)=>{let n=window.location.origin,o="".concat(n).concat(r.f4).concat(e);return await fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})},stream:async(e,t,n)=>{let o=await i.post(e,t);if(!o.ok){let t="API request ".concat(e," failed with status ").concat(o.status);throw console.error(t),Error(t)}let r=o.body.getReader();try{for(;;){let{done:e,value:t}=await r.read();if(e)break;let o=new TextDecoder().decode(t);n(o)}}catch(e){throw console.error("Error in stream:",e),e}},get:async e=>{let t=window.location.origin,n="".concat(t).concat(r.f4).concat(e);return await fetch(n)}}},93225:function(e,t,n){"use strict";n.d(t,{$m:function(){return a},Bo:function(){return l},GW:function(){return r},Z2:function(){return c},f4:function(){return o},iW:function(){return s},mF:function(){return i}}),n(83454);let o=function(){{let e=window.location.pathname,t=e.indexOf("/dashboard");if(-1!==t){let n=e.substring(0,t);return"".concat(n,"/internal/dashboard")}return"/internal/dashboard"}}(),r=function(){{let e=window.location.pathname,t=e.indexOf("/dashboard");return -1!==t?e.substring(0,t+10):"/dashboard"}}();"/api/v1".replace(/^http/,"ws");let i="ClusterDoesNotExist",l="NotSupportedError",s="ClusterNotUpError",a=["AWS","Azure","GCP","IBM","Lambda","SCP","OCI","RunPod","VAST","vSphere","Cudo","FluidStack","Paperspace","DO","Nebius"],c=Object.fromEntries([...a.map(e=>[e.toLowerCase(),e]),["kubernetes","Kubernetes"],["ssh","SSH Node Pool"]])},94545:function(e,t,n){"use strict";function o(e){return e.startsWith("sky-jobs-controller-")}function r(e,t,n){return null===t?e:[...e].sort((e,o)=>e[t]<o[t]?"ascending"===n?-1:1:e[t]>o[t]?"ascending"===n?1:-1:0)}async function i(e){let t=e.statusText;if(500===e.status)try{let n=await e.json();if(n.detail&&n.detail.error)try{t=JSON.parse(n.detail.error).message||String(n.detail.error)}catch(e){console.error("Error parsing JSON from data.detail.error:",e),t=String(n.detail.error)}}catch(e){console.error("Error parsing response JSON:",e),t=String(e)}return t}n.d(t,{R0:function(){return r},Ym:function(){return o},oN:function(){return i}})},6556:function(e,t,n){"use strict";n.d(t,{n:function(){return l}});var o=n(67294);let r="skypilot-dashboard-first-visit",i="skypilot-dashboard-tour-completed";function l(){let[e,t]=(0,o.useState)(!1),[n,l]=(0,o.useState)(!1),[s,a]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{a(!0);let e=localStorage.getItem(r),n=localStorage.getItem(i);e||(t(!0),localStorage.setItem(r,"true")),n&&l(!0)},[]),{isFirstVisit:!!s&&e,tourCompleted:!!s&&n,shouldShowTourPrompt:s&&e&&!n,shouldPulseHelpButton:s&&e&&!n,markTourCompleted:()=>{localStorage.setItem(i,"true"),l(!0)},resetFirstVisit:()=>{localStorage.removeItem(r),localStorage.removeItem(i),t(!0),l(!1)},isClient:s}}},94849:function(e,t,n){"use strict";let o,r;n.d(t,{C:function(){return t5},r:function(){return t3}});var i,l,s=n(85893),a=n(67294),c=n(11163);function u(e){return e instanceof HTMLElement}function d(e){return"function"==typeof e}function h(e){return"string"==typeof e}function f(e){return void 0===e}class p{on(e,t,n,o=!1){var r;return f(this.bindings)&&(this.bindings={}),f(this.bindings[e])&&(this.bindings[e]=[]),null==(r=this.bindings[e])||r.push({handler:t,ctx:n,once:o}),this}once(e,t,n){return this.on(e,t,n,!0)}off(e,t){if(f(this.bindings)||f(this.bindings[e]))return this;if(f(t))delete this.bindings[e];else{var n;null==(n=this.bindings[e])||n.forEach((n,o)=>{if(n.handler===t){var r;null==(r=this.bindings[e])||r.splice(o,1)}})}return this}trigger(e,...t){if(!f(this.bindings)&&this.bindings[e]){var n;null==(n=this.bindings[e])||n.forEach((n,o)=>{let{ctx:r,handler:i,once:l}=n;if(i.apply(r||this,t),l){var s;null==(s=this.bindings[e])||s.splice(o,1)}})}return this}}function m(){return(m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(null,arguments)}function g(e,t){if(null==e)return{};var n={};for(var o in e)if(({}).hasOwnProperty.call(e,o)){if(t.includes(o))continue;n[o]=e[o]}return n}let y={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")};function b(e,t){return t}function v(e,t){return e.filter(e=>void 0!==e)}function x(e){return"object"!=typeof e||null===e?0:Array.isArray(e)?2:!function(e){if(!E.has(Object.prototype.toString.call(e)))return!1;let{constructor:t}=e;if(void 0===t)return!0;let n=t.prototype;return!!(null!==n&&"object"==typeof n&&E.has(Object.prototype.toString.call(n))&&n.hasOwnProperty("isPrototypeOf"))}(e)?e instanceof Set?3:e instanceof Map?4:5:1}function w(e){return{*[Symbol.iterator](){for(let t of e)for(let e of t)yield e}}}y.defaultMerge,(i=l||(l={}))[i.NOT=0]="NOT",i[i.RECORD=1]="RECORD",i[i.ARRAY=2]="ARRAY",i[i.SET=3]="SET",i[i.MAP=4]="MAP",i[i.OTHER=5]="OTHER";let E=new Set(["[object Object]","[object Module]"]),S={mergeRecords:function(e,t,n){let o={};for(let r of function(e){let t=new Set;for(let n of e)for(let e of[...Object.keys(n),...Object.getOwnPropertySymbols(n)])t.add(e);return t}(e)){let i=[];for(let t of e)"object"==typeof t&&Object.prototype.propertyIsEnumerable.call(t,r)&&i.push(t[r]);if(0===i.length)continue;let l=t.metaDataUpdater(n,{key:r,parents:e}),s=k(i,t,l);s!==y.skip&&("__proto__"===r?Object.defineProperty(o,r,{value:s,configurable:!0,enumerable:!0,writable:!0}):o[r]=s)}return o},mergeArrays:function(e){return e.flat()},mergeSets:function(e){return new Set(w(e))},mergeMaps:function(e){return new Map(w(e))},mergeOthers:function(e){return e.at(-1)}};function T(...e){return(function(e,t){var n,o,r;let i={defaultMergeFunctions:S,mergeFunctions:m({},S,Object.fromEntries(Object.entries(e).filter(([e,t])=>Object.hasOwn(S,e)).map(([e,t])=>!1===t?[e,S.mergeOthers]:[e,t]))),metaDataUpdater:null!=(n=e.metaDataUpdater)?n:b,deepmerge:l,useImplicitDefaultMerging:null!=(o=e.enableImplicitDefaultMerging)&&o,filterValues:!1===e.filterValues?void 0:null!=(r=e.filterValues)?r:v,actions:y};function l(...e){return k(e,i,void 0)}return l})({})(...e)}function k(e,t,n){var o;let r=null!=(o=null==t.filterValues?void 0:t.filterValues(e,n))?o:e;if(0===r.length)return;if(1===r.length)return $(r,t,n);let i=x(r[0]);if(0!==i&&5!==i){for(let e=1;e<r.length;e++)if(x(r[e])!==i)return $(r,t,n)}switch(i){case 1:return function(e,t,n){let o=t.mergeFunctions.mergeRecords(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeRecords!==t.defaultMergeFunctions.mergeRecords?t.defaultMergeFunctions.mergeRecords(e,t,n):o}(r,t,n);case 2:return function(e,t,n){let o=t.mergeFunctions.mergeArrays(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeArrays!==t.defaultMergeFunctions.mergeArrays?t.defaultMergeFunctions.mergeArrays(e):o}(r,t,n);case 3:return function(e,t,n){let o=t.mergeFunctions.mergeSets(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeSets!==t.defaultMergeFunctions.mergeSets?t.defaultMergeFunctions.mergeSets(e):o}(r,t,n);case 4:return function(e,t,n){let o=t.mergeFunctions.mergeMaps(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeMaps!==t.defaultMergeFunctions.mergeMaps?t.defaultMergeFunctions.mergeMaps(e):o}(r,t,n);default:return $(r,t,n)}}function $(e,t,n){let o=t.mergeFunctions.mergeOthers(e,t,n);return o===y.defaultMerge||t.useImplicitDefaultMerging&&void 0===o&&t.mergeFunctions.mergeOthers!==t.defaultMergeFunctions.mergeOthers?t.defaultMergeFunctions.mergeOthers(e):o}function _(e){let t=Object.getOwnPropertyNames(e.constructor.prototype);for(let n=0;n<t.length;n++){let o=t[n],r=e[o];"constructor"!==o&&"function"==typeof r&&(e[o]=r.bind(e))}return e}class O{constructor(e){}}class P{constructor(e,t){}}function C(e){return h(e)&&""!==e?"-"!==e.charAt(e.length-1)?`${e}-`:e:""}function A(e){return null==e||!e.element||!e.on}function I(){let e=Date.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{let n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?n:3&n|8).toString(16)})}let L=["top","right","bottom","left"].reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]),R=Math.min,M=Math.max,q=Math.round,B=Math.floor,j=e=>({x:e,y:e}),H={left:"right",right:"left",bottom:"top",top:"bottom"},D={start:"end",end:"start"};function N(e,t){return"function"==typeof e?e(t):e}function F(e){return e.split("-")[0]}function V(e){return e.split("-")[1]}function W(e){return"x"===e?"y":"x"}function z(e){return"y"===e?"height":"width"}function U(e){return["top","bottom"].includes(F(e))?"y":"x"}function G(e,t,n){void 0===n&&(n=!1);let o=V(e),r=W(U(e)),i=z(r),l="x"===r?o===(n?"end":"start")?"right":"left":"start"===o?"bottom":"top";return t.reference[i]>t.floating[i]&&(l=Y(l)),[l,Y(l)]}function J(e){return e.replace(/start|end/g,e=>D[e])}function Y(e){return e.replace(/left|right|bottom|top/g,e=>H[e])}function K(e){return"number"!=typeof e?m({top:0,right:0,bottom:0,left:0},e):{top:e,right:e,bottom:e,left:e}}function X(e){let{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}let Z=["crossAxis","alignment","allowedPlacements","autoAlignment"],Q=["mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment"],ee=["mainAxis","crossAxis","limiter"];function et(e,t,n){let o,{reference:r,floating:i}=e,l=U(t),s=W(U(t)),a=z(s),c=F(t),u="y"===l,d=r.x+r.width/2-i.width/2,h=r.y+r.height/2-i.height/2,f=r[a]/2-i[a]/2;switch(c){case"top":o={x:d,y:r.y-i.height};break;case"bottom":o={x:d,y:r.y+r.height};break;case"right":o={x:r.x+r.width,y:h};break;case"left":o={x:r.x-i.width,y:h};break;default:o={x:r.x,y:r.y}}switch(V(t)){case"start":o[s]-=f*(n&&u?-1:1);break;case"end":o[s]+=f*(n&&u?-1:1)}return o}let en=async(e,t,n)=>{let{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:l}=n,s=i.filter(Boolean),a=await (null==l.isRTL?void 0:l.isRTL(t)),c=await l.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:d}=et(c,o,a),h=o,f={},p=0;for(let n=0;n<s.length;n++){let{name:i,fn:g}=s[n],{x:y,y:b,data:v,reset:x}=await g({x:u,y:d,initialPlacement:o,placement:h,strategy:r,middlewareData:f,rects:c,platform:l,elements:{reference:e,floating:t}});u=null!=y?y:u,d=null!=b?b:d,f=m({},f,{[i]:m({},f[i],v)}),x&&p<=50&&(p++,"object"==typeof x&&(x.placement&&(h=x.placement),x.rects&&(c=!0===x.rects?await l.getElementRects({reference:e,floating:t,strategy:r}):x.rects),{x:u,y:d}=et(c,h,a)),n=-1)}return{x:u,y:d,placement:h,strategy:r,middlewareData:f}};async function eo(e,t){var n;void 0===t&&(t={});let{x:o,y:r,platform:i,rects:l,elements:s,strategy:a}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:h=!1,padding:f=0}=N(t,e),p=K(f),m=s[h?"floating"===d?"reference":"floating":d],g=X(await i.getClippingRect({element:null==(n=await (null==i.isElement?void 0:i.isElement(m)))||n?m:m.contextElement||await (null==i.getDocumentElement?void 0:i.getDocumentElement(s.floating)),boundary:c,rootBoundary:u,strategy:a})),y="floating"===d?{x:o,y:r,width:l.floating.width,height:l.floating.height}:l.reference,b=await (null==i.getOffsetParent?void 0:i.getOffsetParent(s.floating)),v=await (null==i.isElement?void 0:i.isElement(b))&&await (null==i.getScale?void 0:i.getScale(b))||{x:1,y:1},x=X(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:y,offsetParent:b,strategy:a}):y);return{top:(g.top-x.top+p.top)/v.y,bottom:(x.bottom-g.bottom+p.bottom)/v.y,left:(g.left-x.left+p.left)/v.x,right:(x.right-g.right+p.right)/v.x}}function er(){return"undefined"!=typeof window}function ei(e){return ea(e)?(e.nodeName||"").toLowerCase():"#document"}function el(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function es(e){var t;return null==(t=(ea(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function ea(e){return!!er()&&(e instanceof Node||e instanceof el(e).Node)}function ec(e){return!!er()&&(e instanceof Element||e instanceof el(e).Element)}function eu(e){return!!er()&&(e instanceof HTMLElement||e instanceof el(e).HTMLElement)}function ed(e){return!!er()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof el(e).ShadowRoot)}function eh(e){let{overflow:t,overflowX:n,overflowY:o,display:r}=ey(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function ef(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch(e){return!1}})}function ep(e){let t=em(),n=ec(e)?ey(e):e;return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some(e=>(n.willChange||"").includes(e))||["paint","layout","strict","content"].some(e=>(n.contain||"").includes(e))}function em(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function eg(e){return["html","body","#document"].includes(ei(e))}function ey(e){return el(e).getComputedStyle(e)}function eb(e){return ec(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ev(e){if("html"===ei(e))return e;let t=e.assignedSlot||e.parentNode||ed(e)&&e.host||es(e);return ed(t)?t.host:t}function ex(e,t,n){var o;void 0===t&&(t=[]),void 0===n&&(n=!0);let r=function e(t){let n=ev(t);return eg(n)?t.ownerDocument?t.ownerDocument.body:t.body:eu(n)&&eh(n)?n:e(n)}(e),i=r===(null==(o=e.ownerDocument)?void 0:o.body),l=el(r);if(i){let e=ew(l);return t.concat(l,l.visualViewport||[],eh(r)?r:[],e&&n?ex(e):[])}return t.concat(r,ex(r,[],n))}function ew(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function eE(e){let t=ey(e),n=parseFloat(t.width)||0,o=parseFloat(t.height)||0,r=eu(e),i=r?e.offsetWidth:n,l=r?e.offsetHeight:o,s=q(n)!==i||q(o)!==l;return s&&(n=i,o=l),{width:n,height:o,$:s}}function eS(e){return ec(e)?e:e.contextElement}function eT(e){let t=eS(e);if(!eu(t))return j(1);let n=t.getBoundingClientRect(),{width:o,height:r,$:i}=eE(t),l=(i?q(n.width):n.width)/o,s=(i?q(n.height):n.height)/r;return l&&Number.isFinite(l)||(l=1),s&&Number.isFinite(s)||(s=1),{x:l,y:s}}let ek=j(0);function e$(e){let t=el(e);return em()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:ek}function e_(e,t,n,o){var r;void 0===t&&(t=!1),void 0===n&&(n=!1);let i=e.getBoundingClientRect(),l=eS(e),s=j(1);t&&(o?ec(o)&&(s=eT(o)):s=eT(e));let a=(void 0===(r=n)&&(r=!1),o&&(!r||o===el(l))&&r)?e$(l):j(0),c=(i.left+a.x)/s.x,u=(i.top+a.y)/s.y,d=i.width/s.x,h=i.height/s.y;if(l){let e=el(l),t=o&&ec(o)?el(o):o,n=e,r=ew(n);for(;r&&o&&t!==n;){let e=eT(r),t=r.getBoundingClientRect(),o=ey(r),i=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,l=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;c*=e.x,u*=e.y,d*=e.x,h*=e.y,c+=i,u+=l,r=ew(n=el(r))}}return X({width:d,height:h,x:c,y:u})}function eO(e,t){let n=eb(e).scrollLeft;return t?t.left+n:e_(es(e)).left+n}function eP(e,t,n){void 0===n&&(n=!1);let o=e.getBoundingClientRect();return{x:o.left+t.scrollLeft-(n?0:eO(e,o)),y:o.top+t.scrollTop}}function eC(e,t,n){let o;if("viewport"===t)o=function(e,t){let n=el(e),o=es(e),r=n.visualViewport,i=o.clientWidth,l=o.clientHeight,s=0,a=0;if(r){i=r.width,l=r.height;let e=em();(!e||e&&"fixed"===t)&&(s=r.offsetLeft,a=r.offsetTop)}return{width:i,height:l,x:s,y:a}}(e,n);else if("document"===t)o=function(e){let t=es(e),n=eb(e),o=e.ownerDocument.body,r=M(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=M(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight),l=-n.scrollLeft+eO(e),s=-n.scrollTop;return"rtl"===ey(o).direction&&(l+=M(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:l,y:s}}(es(e));else if(ec(t))o=function(e,t){let n=e_(e,!0,"fixed"===t),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=eu(e)?eT(e):j(1),l=e.clientWidth*i.x;return{width:l,height:e.clientHeight*i.y,x:r*i.x,y:o*i.y}}(t,n);else{let n=e$(e);o={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return X(o)}function eA(e){return"static"===ey(e).position}function eI(e,t){if(!eu(e)||"fixed"===ey(e).position)return null;if(t)return t(e);let n=e.offsetParent;return es(e)===n&&(n=n.ownerDocument.body),n}function eL(e,t){let n=el(e);if(ef(e))return n;if(!eu(e)){let t=ev(e);for(;t&&!eg(t);){if(ec(t)&&!eA(t))return t;t=ev(t)}return n}let o=eI(e,t);for(;o&&["table","td","th"].includes(ei(o))&&eA(o);)o=eI(o,t);return o&&eg(o)&&eA(o)&&!ep(o)?n:o||function(e){let t=ev(e);for(;eu(t)&&!eg(t);){if(ep(t))return t;if(ef(t))break;t=ev(t)}return null}(e)||n}let eR=async function(e){let t=this.getOffsetParent||eL,n=this.getDimensions,o=await n(e.floating);return{reference:function(e,t,n){let o=eu(t),r=es(t),i="fixed"===n,l=e_(e,!0,i,t),s={scrollLeft:0,scrollTop:0},a=j(0);if(o||!o&&!i){if(("body"!==ei(t)||eh(r))&&(s=eb(t)),o){let e=e_(t,!0,i,t);a.x=e.x+t.clientLeft,a.y=e.y+t.clientTop}else r&&(a.x=eO(r))}let c=!r||o||i?j(0):eP(r,s);return{x:l.left+s.scrollLeft-a.x-c.x,y:l.top+s.scrollTop-a.y-c.y,width:l.width,height:l.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}},eM={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e,i="fixed"===r,l=es(o),s=!!t&&ef(t.floating);if(o===l||s&&i)return n;let a={scrollLeft:0,scrollTop:0},c=j(1),u=j(0),d=eu(o);if((d||!d&&!i)&&(("body"!==ei(o)||eh(l))&&(a=eb(o)),eu(o))){let e=e_(o);c=eT(o),u.x=e.x+o.clientLeft,u.y=e.y+o.clientTop}let h=!l||d||i?j(0):eP(l,a,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-a.scrollLeft*c.x+u.x+h.x,y:n.y*c.y-a.scrollTop*c.y+u.y+h.y}},getDocumentElement:es,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e,i=[..."clippingAncestors"===n?ef(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let o=ex(e,[],!1).filter(e=>ec(e)&&"body"!==ei(e)),r=null,i="fixed"===ey(e).position,l=i?ev(e):e;for(;ec(l)&&!eg(l);){let t=ey(l),n=ep(l);n||"fixed"!==t.position||(r=null),(i?!n&&!r:!n&&"static"===t.position&&!!r&&["absolute","fixed"].includes(r.position)||eh(l)&&!n&&function e(t,n){let o=ev(t);return!(o===n||!ec(o)||eg(o))&&("fixed"===ey(o).position||e(o,n))}(e,l))?o=o.filter(e=>e!==l):r=t,l=ev(l)}return t.set(e,o),o}(t,this._c):[].concat(n),o],l=i[0],s=i.reduce((e,n)=>{let o=eC(t,n,r);return e.top=M(o.top,e.top),e.right=R(o.right,e.right),e.bottom=R(o.bottom,e.bottom),e.left=M(o.left,e.left),e},eC(t,l,r));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:eL,getElementRects:eR,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=eE(e);return{width:t,height:n}},getScale:eT,isElement:ec,isRTL:function(e){return"rtl"===ey(e).direction}},eq=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:o,placement:r,rects:i,platform:l,elements:s,middlewareData:a}=t,{element:c,padding:u=0}=N(e,t)||{};if(null==c)return{};let d=K(u),h={x:n,y:o},f=W(U(r)),p=z(f),g=await l.getDimensions(c),y="y"===f,b=y?"clientHeight":"clientWidth",v=i.reference[p]+i.reference[f]-h[f]-i.floating[p],x=h[f]-i.reference[f],w=await (null==l.getOffsetParent?void 0:l.getOffsetParent(c)),E=w?w[b]:0;E&&await (null==l.isElement?void 0:l.isElement(w))||(E=s.floating[b]||i.floating[p]);let S=E/2-g[p]/2-1,T=R(d[y?"top":"left"],S),k=R(d[y?"bottom":"right"],S),$=E-g[p]-k,_=E/2-g[p]/2+(v/2-x/2),O=M(T,R(_,$)),P=!a.arrow&&null!=V(r)&&_!==O&&i.reference[p]/2-(_<T?T:k)-g[p]/2<0,C=P?_<T?_-T:_-$:0;return{[f]:h[f]+C,data:m({[f]:O,centerOffset:_-O-C},P&&{alignmentOffset:C}),reset:P}}}),eB=(e,t,n)=>{let o=new Map,r=m({platform:eM},n),i=m({},r.platform,{_c:o});return en(e,t,m({},r,{platform:i}))};function ej(){}function eH(e){return e()}function eD(){return Object.create(null)}function eN(e){e.forEach(eH)}function eF(e){return"function"==typeof e}function eV(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function eW(e,t){e.appendChild(t)}function ez(e,t,n){e.insertBefore(t,n||null)}function eU(e){e.parentNode&&e.parentNode.removeChild(e)}function eG(e){return document.createElement(e)}function eJ(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function eY(e){return document.createTextNode(e)}function eK(){return eY(" ")}function eX(e,t,n,o){return e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)}function eZ(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}let eQ=["width","height"];function e0(e,t){let n=Object.getOwnPropertyDescriptors(e.__proto__);for(let o in t)null==t[o]?e.removeAttribute(o):"style"===o?e.style.cssText=t[o]:"__value"===o?e.value=e[o]=t[o]:n[o]&&n[o].set&&-1===eQ.indexOf(o)?e[o]=t[o]:eZ(e,o,t[o])}function e1(e,t,n){e.classList.toggle(t,!!n)}function e2(){if(!o)throw Error("Function called outside component initialization");return o}function e4(e){e2().$$.after_update.push(e)}let e6=[],e3=[],e5=[],e9=[],e8=Promise.resolve(),e7=!1;function te(e){e5.push(e)}let tt=new Set,tn=0;function to(){if(0!==tn)return;let e=o;do{try{for(;tn<e6.length;){let e=e6[tn];tn++,o=e,function(e){if(null!==e.fragment){e.update(),eN(e.before_update);let t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(te)}}(e.$$)}}catch(e){throw e6.length=0,tn=0,e}for(o=null,e6.length=0,tn=0;e3.length;)e3.pop()();for(let e=0;e<e5.length;e+=1){let t=e5[e];tt.has(t)||(tt.add(t),t())}e5.length=0}while(e6.length);for(;e9.length;)e9.pop()();e7=!1,tt.clear(),o=e}let tr=new Set;function ti(){r={r:0,c:[],p:r}}function tl(){r.r||eN(r.c),r=r.p}function ts(e,t){e&&e.i&&(tr.delete(e),e.i(t))}function ta(e,t,n,o){e&&e.o?tr.has(e)||(tr.add(e),r.c.push(()=>{tr.delete(e),o&&(n&&e.d(1),o())}),e.o(t)):o&&o()}function tc(e){return(null==e?void 0:e.length)!==void 0?e:Array.from(e)}function tu(e){e&&e.c()}function td(e,t,n){let{fragment:o,after_update:r}=e.$$;o&&o.m(t,n),te(()=>{let t=e.$$.on_mount.map(eH).filter(eF);e.$$.on_destroy?e.$$.on_destroy.push(...t):eN(t),e.$$.on_mount=[]}),r.forEach(te)}function th(e,t){let n=e.$$;null!==n.fragment&&(!function(e){let t=[],n=[];e5.forEach(o=>-1===e.indexOf(o)?t.push(o):n.push(o)),n.forEach(e=>e()),e5=t}(n.after_update),eN(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function tf(e,t,n,r,i,l,s=null,a=[-1]){let c=o;o=e;let u=e.$$={fragment:null,ctx:[],props:l,update:ej,not_equal:i,bound:eD(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(t.context||(c?c.$$.context:[])),callbacks:eD(),dirty:a,skip_bound:!1,root:t.target||c.$$.root};s&&s(u.root);let d=!1;if(u.ctx=n?n(e,t.props||{},(t,n,...o)=>{let r=o.length?o[0]:n;return u.ctx&&i(u.ctx[t],u.ctx[t]=r)&&(!u.skip_bound&&u.bound[t]&&u.bound[t](r),d)&&(-1===e.$$.dirty[0]&&(e6.push(e),e7||(e7=!0,e8.then(to)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31),n}):[],u.update(),d=!0,eN(u.before_update),u.fragment=!!r&&r(u.ctx),t.target){if(t.hydrate){let e=Array.from(t.target.childNodes);u.fragment&&u.fragment.l(e),e.forEach(eU)}else u.fragment&&u.fragment.c();t.intro&&ts(e.$$.fragment),td(e,t.target,t.anchor),to()}o=c}class tp{constructor(){this.$$=void 0,this.$$set=void 0}$destroy(){th(this,1),this.$destroy=ej}$on(e,t){if(!eF(t))return ej;let n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{let e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){this.$$set&&0!==Object.keys(e).length&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}function tm(e){let t,n,o,r,i;return{c(){eZ(t=eG("button"),"aria-label",n=e[3]?e[3]:null),eZ(t,"class",o=`${e[1]||""} shepherd-button ${e[4]?"shepherd-button-secondary":""}`),t.disabled=e[2],eZ(t,"tabindex","0"),eZ(t,"type","button")},m(n,o){ez(n,t,o),t.innerHTML=e[5],r||(i=eX(t,"click",function(){eF(e[0])&&e[0].apply(this,arguments)}),r=!0)},p(r,[i]){e=r,32&i&&(t.innerHTML=e[5]),8&i&&n!==(n=e[3]?e[3]:null)&&eZ(t,"aria-label",n),18&i&&o!==(o=`${e[1]||""} shepherd-button ${e[4]?"shepherd-button-secondary":""}`)&&eZ(t,"class",o),4&i&&(t.disabled=e[2])},i:ej,o:ej,d(e){e&&eU(t),r=!1,i()}}}function tg(e,t,n){let o,r,i,l,s,a,{config:c,step:u}=t;function h(e){return d(e)?e=e.call(u):e}return e.$$set=e=>{"config"in e&&n(6,c=e.config),"step"in e&&n(7,u=e.step)},e.$$.update=()=>{192&e.$$.dirty&&(n(0,o=c.action?c.action.bind(u.tour):null),n(1,r=c.classes),n(2,i=!!c.disabled&&h(c.disabled)),n(3,l=c.label?h(c.label):null),n(4,s=c.secondary),n(5,a=c.text?h(c.text):null))},[o,r,i,l,s,a,c,u]}"undefined"!=typeof window&&(window.__svelte||(window.__svelte={v:new Set})).v.add("4");class ty extends tp{constructor(e){super(),tf(this,e,tg,tm,eV,{config:6,step:7})}}function tb(e,t,n){let o=e.slice();return o[2]=t[n],o}function tv(e){let t,n;let o=tc(e[1]),r=[];for(let t=0;t<o.length;t+=1)r[t]=tx(tb(e,o,t));let i=e=>ta(r[e],1,1,()=>{r[e]=null});return{c(){for(let e=0;e<r.length;e+=1)r[e].c();t=eY("")},m(e,o){for(let t=0;t<r.length;t+=1)r[t]&&r[t].m(e,o);ez(e,t,o),n=!0},p(e,n){if(3&n){let l;for(l=0,o=tc(e[1]);l<o.length;l+=1){let i=tb(e,o,l);r[l]?(r[l].p(i,n),ts(r[l],1)):(r[l]=tx(i),r[l].c(),ts(r[l],1),r[l].m(t.parentNode,t))}for(ti(),l=o.length;l<r.length;l+=1)i(l);tl()}},i(e){if(!n){for(let e=0;e<o.length;e+=1)ts(r[e]);n=!0}},o(e){r=r.filter(Boolean);for(let e=0;e<r.length;e+=1)ta(r[e]);n=!1},d(e){e&&eU(t),function(e,t){for(let n=0;n<e.length;n+=1)e[n]&&e[n].d(t)}(r,e)}}}function tx(e){let t,n;return t=new ty({props:{config:e[2],step:e[0]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};2&n&&(o.config=e[2]),1&n&&(o.step=e[0]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tw(e){let t,n;let o=e[1]&&tv(e);return{c(){t=eG("footer"),o&&o.c(),eZ(t,"class","shepherd-footer")},m(e,r){ez(e,t,r),o&&o.m(t,null),n=!0},p(e,[n]){e[1]?o?(o.p(e,n),2&n&&ts(o,1)):((o=tv(e)).c(),ts(o,1),o.m(t,null)):o&&(ti(),ta(o,1,1,()=>{o=null}),tl())},i(e){n||(ts(o),n=!0)},o(e){ta(o),n=!1},d(e){e&&eU(t),o&&o.d()}}}function tE(e,t,n){let o;let{step:r}=t;return e.$$set=e=>{"step"in e&&n(0,r=e.step)},e.$$.update=()=>{1&e.$$.dirty&&n(1,o=r.options.buttons)},[r,o]}class tS extends tp{constructor(e){super(),tf(this,e,tE,tw,eV,{step:0})}}function tT(e){let t,n,o,r,i;return{c(){t=eG("button"),(n=eG("span")).textContent="\xd7",eZ(n,"aria-hidden","true"),eZ(t,"aria-label",o=e[0].label?e[0].label:"Close Tour"),eZ(t,"class","shepherd-cancel-icon"),eZ(t,"type","button")},m(o,l){ez(o,t,l),eW(t,n),r||(i=eX(t,"click",e[1]),r=!0)},p(e,[n]){1&n&&o!==(o=e[0].label?e[0].label:"Close Tour")&&eZ(t,"aria-label",o)},i:ej,o:ej,d(e){e&&eU(t),r=!1,i()}}}function tk(e,t,n){let{cancelIcon:o,step:r}=t;return e.$$set=e=>{"cancelIcon"in e&&n(0,o=e.cancelIcon),"step"in e&&n(2,r=e.step)},[o,e=>{e.preventDefault(),r.cancel()},r]}class t$ extends tp{constructor(e){super(),tf(this,e,tk,tT,eV,{cancelIcon:0,step:2})}}function t_(e){let t;return{c(){eZ(t=eG("h3"),"id",e[1]),eZ(t,"class","shepherd-title")},m(n,o){ez(n,t,o),e[3](t)},p(e,[n]){2&n&&eZ(t,"id",e[1])},i:ej,o:ej,d(n){n&&eU(t),e[3](null)}}}function tO(e,t,n){let{labelId:o,element:r,title:i}=t;return e4(()=>{d(i)&&n(2,i=i()),n(0,r.innerHTML=i,r)}),e.$$set=e=>{"labelId"in e&&n(1,o=e.labelId),"element"in e&&n(0,r=e.element),"title"in e&&n(2,i=e.title)},[r,o,i,function(e){e3[e?"unshift":"push"](()=>{n(0,r=e)})}]}class tP extends tp{constructor(e){super(),tf(this,e,tO,t_,eV,{labelId:1,element:0,title:2})}}function tC(e){let t,n;return t=new tP({props:{labelId:e[0],title:e[2]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};1&n&&(o.labelId=e[0]),4&n&&(o.title=e[2]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tA(e){let t,n;return t=new t$({props:{cancelIcon:e[3],step:e[1]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};8&n&&(o.cancelIcon=e[3]),2&n&&(o.step=e[1]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tI(e){let t,n,o;let r=e[2]&&tC(e),i=e[3]&&e[3].enabled&&tA(e);return{c(){t=eG("header"),r&&r.c(),n=eK(),i&&i.c(),eZ(t,"class","shepherd-header")},m(e,l){ez(e,t,l),r&&r.m(t,null),eW(t,n),i&&i.m(t,null),o=!0},p(e,[o]){e[2]?r?(r.p(e,o),4&o&&ts(r,1)):((r=tC(e)).c(),ts(r,1),r.m(t,n)):r&&(ti(),ta(r,1,1,()=>{r=null}),tl()),e[3]&&e[3].enabled?i?(i.p(e,o),8&o&&ts(i,1)):((i=tA(e)).c(),ts(i,1),i.m(t,null)):i&&(ti(),ta(i,1,1,()=>{i=null}),tl())},i(e){o||(ts(r),ts(i),o=!0)},o(e){ta(r),ta(i),o=!1},d(e){e&&eU(t),r&&r.d(),i&&i.d()}}}function tL(e,t,n){let o,r,{labelId:i,step:l}=t;return e.$$set=e=>{"labelId"in e&&n(0,i=e.labelId),"step"in e&&n(1,l=e.step)},e.$$.update=()=>{2&e.$$.dirty&&(n(2,o=l.options.title),n(3,r=l.options.cancelIcon))},[i,l,o,r]}class tR extends tp{constructor(e){super(),tf(this,e,tL,tI,eV,{labelId:0,step:1})}}function tM(e){let t;return{c(){eZ(t=eG("div"),"class","shepherd-text"),eZ(t,"id",e[1])},m(n,o){ez(n,t,o),e[3](t)},p(e,[n]){2&n&&eZ(t,"id",e[1])},i:ej,o:ej,d(n){n&&eU(t),e[3](null)}}}function tq(e,t,n){let{descriptionId:o,element:r,step:i}=t;return e4(()=>{let{text:e}=i.options;d(e)&&(e=e.call(i)),u(e)?r.appendChild(e):n(0,r.innerHTML=e,r)}),e.$$set=e=>{"descriptionId"in e&&n(1,o=e.descriptionId),"element"in e&&n(0,r=e.element),"step"in e&&n(2,i=e.step)},[r,o,i,function(e){e3[e?"unshift":"push"](()=>{n(0,r=e)})}]}class tB extends tp{constructor(e){super(),tf(this,e,tq,tM,eV,{descriptionId:1,element:0,step:2})}}function tj(e){let t,n;return t=new tR({props:{labelId:e[1],step:e[2]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};2&n&&(o.labelId=e[1]),4&n&&(o.step=e[2]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tH(e){let t,n;return t=new tB({props:{descriptionId:e[0],step:e[2]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};1&n&&(o.descriptionId=e[0]),4&n&&(o.step=e[2]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tD(e){let t,n;return t=new tS({props:{step:e[2]}}),{c(){tu(t.$$.fragment)},m(e,o){td(t,e,o),n=!0},p(e,n){let o={};4&n&&(o.step=e[2]),t.$set(o)},i(e){n||(ts(t.$$.fragment,e),n=!0)},o(e){ta(t.$$.fragment,e),n=!1},d(e){th(t,e)}}}function tN(e){let t,n,o,r;let i=!f(e[2].options.title)||e[2].options.cancelIcon&&e[2].options.cancelIcon.enabled,l=!f(e[2].options.text),s=Array.isArray(e[2].options.buttons)&&e[2].options.buttons.length,a=i&&tj(e),c=l&&tH(e),u=s&&tD(e);return{c(){t=eG("div"),a&&a.c(),n=eK(),c&&c.c(),o=eK(),u&&u.c(),eZ(t,"class","shepherd-content")},m(e,i){ez(e,t,i),a&&a.m(t,null),eW(t,n),c&&c.m(t,null),eW(t,o),u&&u.m(t,null),r=!0},p(e,[r]){4&r&&(i=!f(e[2].options.title)||e[2].options.cancelIcon&&e[2].options.cancelIcon.enabled),i?a?(a.p(e,r),4&r&&ts(a,1)):((a=tj(e)).c(),ts(a,1),a.m(t,n)):a&&(ti(),ta(a,1,1,()=>{a=null}),tl()),4&r&&(l=!f(e[2].options.text)),l?c?(c.p(e,r),4&r&&ts(c,1)):((c=tH(e)).c(),ts(c,1),c.m(t,o)):c&&(ti(),ta(c,1,1,()=>{c=null}),tl()),4&r&&(s=Array.isArray(e[2].options.buttons)&&e[2].options.buttons.length),s?u?(u.p(e,r),4&r&&ts(u,1)):((u=tD(e)).c(),ts(u,1),u.m(t,null)):u&&(ti(),ta(u,1,1,()=>{u=null}),tl())},i(e){r||(ts(a),ts(c),ts(u),r=!0)},o(e){ta(a),ta(c),ta(u),r=!1},d(e){e&&eU(t),a&&a.d(),c&&c.d(),u&&u.d()}}}function tF(e,t,n){let{descriptionId:o,labelId:r,step:i}=t;return e.$$set=e=>{"descriptionId"in e&&n(0,o=e.descriptionId),"labelId"in e&&n(1,r=e.labelId),"step"in e&&n(2,i=e.step)},[o,r,i]}class tV extends tp{constructor(e){super(),tf(this,e,tF,tN,eV,{descriptionId:0,labelId:1,step:2})}}function tW(e){let t;return{c(){eZ(t=eG("div"),"class","shepherd-arrow"),eZ(t,"data-popper-arrow","")},m(e,n){ez(e,t,n)},d(e){e&&eU(t)}}}function tz(e){let t,n,o,r,i,l,s,a;let c=e[4].options.arrow&&e[4].options.attachTo&&e[4].options.attachTo.element&&e[4].options.attachTo.on&&tW();o=new tV({props:{descriptionId:e[2],labelId:e[3],step:e[4]}});let u=[{"aria-describedby":r=f(e[4].options.text)?null:e[2]},{"aria-labelledby":i=e[4].options.title?e[3]:null},e[1],{open:"true"}],d={};for(let e=0;e<u.length;e+=1)d=function(e,t){for(let n in t)e[n]=t[n];return e}(d,u[e]);return{c(){t=eG("dialog"),c&&c.c(),n=eK(),tu(o.$$.fragment),e0(t,d),e1(t,"shepherd-has-cancel-icon",e[5]),e1(t,"shepherd-has-title",e[6]),e1(t,"shepherd-element",!0)},m(r,i){ez(r,t,i),c&&c.m(t,null),eW(t,n),td(o,t,null),e[13](t),l=!0,s||(a=eX(t,"keydown",e[7]),s=!0)},p(e,[s]){e[4].options.arrow&&e[4].options.attachTo&&e[4].options.attachTo.element&&e[4].options.attachTo.on?c||((c=tW()).c(),c.m(t,n)):c&&(c.d(1),c=null);let a={};4&s&&(a.descriptionId=e[2]),8&s&&(a.labelId=e[3]),16&s&&(a.step=e[4]),o.$set(a),e0(t,d=function(e,t){let n={},o={},r={$$scope:1},i=e.length;for(;i--;){let l=e[i],s=t[i];if(s){for(let e in l)e in s||(o[e]=1);for(let e in s)r[e]||(n[e]=s[e],r[e]=1);e[i]=s}else for(let e in l)r[e]=1}for(let e in o)e in n||(n[e]=void 0);return n}(u,[(!l||20&s&&r!==(r=f(e[4].options.text)?null:e[2]))&&{"aria-describedby":r},(!l||24&s&&i!==(i=e[4].options.title?e[3]:null))&&{"aria-labelledby":i},2&s&&e[1],{open:"true"}])),e1(t,"shepherd-has-cancel-icon",e[5]),e1(t,"shepherd-has-title",e[6]),e1(t,"shepherd-element",!0)},i(e){l||(ts(o.$$.fragment,e),l=!0)},o(e){ta(o.$$.fragment,e),l=!1},d(n){n&&eU(t),c&&c.d(),th(o),e[13](null),s=!1,a()}}}function tU(e){return e.split(" ").filter(e=>!!e.length)}function tG(e,t,n){var o;let r,i,l,{classPrefix:s,element:a,descriptionId:c,firstFocusableElement:u,focusableElements:d,labelId:f,lastFocusableElement:p,step:m,dataStepId:g}=t;return o=()=>{n(1,g={[`data-${s}shepherd-step-id`]:m.id}),n(9,d=a.querySelectorAll('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex="0"]')),n(8,u=d[0]),n(10,p=d[d.length-1])},e2().$$.on_mount.push(o),e4(()=>{l!==m.options.classes&&(function(e){if(h(e)){let t=tU(e);t.length&&a.classList.remove(...t)}}(l),function(e){if(h(e)){let t=tU(e);t.length&&a.classList.add(...t)}}(l=m.options.classes))}),e.$$set=e=>{"classPrefix"in e&&n(11,s=e.classPrefix),"element"in e&&n(0,a=e.element),"descriptionId"in e&&n(2,c=e.descriptionId),"firstFocusableElement"in e&&n(8,u=e.firstFocusableElement),"focusableElements"in e&&n(9,d=e.focusableElements),"labelId"in e&&n(3,f=e.labelId),"lastFocusableElement"in e&&n(10,p=e.lastFocusableElement),"step"in e&&n(4,m=e.step),"dataStepId"in e&&n(1,g=e.dataStepId)},e.$$.update=()=>{16&e.$$.dirty&&(n(5,r=m.options&&m.options.cancelIcon&&m.options.cancelIcon.enabled),n(6,i=m.options&&m.options.title))},[a,g,c,f,m,r,i,e=>{let{tour:t}=m;switch(e.keyCode){case 9:if(0===d.length){e.preventDefault();break}e.shiftKey?(document.activeElement===u||document.activeElement.classList.contains("shepherd-element"))&&(e.preventDefault(),p.focus()):document.activeElement===p&&(e.preventDefault(),u.focus());break;case 27:t.options.exitOnEsc&&(e.preventDefault(),e.stopPropagation(),m.cancel());break;case 37:t.options.keyboardNavigation&&(e.preventDefault(),e.stopPropagation(),t.back());break;case 39:t.options.keyboardNavigation&&(e.preventDefault(),e.stopPropagation(),t.next())}},u,d,p,s,()=>a,function(e){e3[e?"unshift":"push"](()=>{n(0,a=e)})}]}class tJ extends tp{constructor(e){super(),tf(this,e,tG,tz,eV,{classPrefix:11,element:0,descriptionId:2,firstFocusableElement:8,focusableElements:9,labelId:3,lastFocusableElement:10,step:4,dataStepId:1,getElement:12})}get getElement(){return this.$$.ctx[12]}}class tY extends p{constructor(e,t={}){return super(),this._resolvedAttachTo=void 0,this._resolvedExtraHighlightElements=void 0,this.classPrefix=void 0,this.el=void 0,this.target=void 0,this.tour=void 0,this.tour=e,this.classPrefix=this.tour.options?C(this.tour.options.classPrefix):"",this.styles=e.styles,this._resolvedAttachTo=null,_(this),this._setOptions(t),this}cancel(){this.tour.cancel(),this.trigger("cancel")}complete(){this.tour.complete(),this.trigger("complete")}destroy(){this.cleanup&&this.cleanup(),this.cleanup=null,u(this.el)&&(this.el.remove(),this.el=null),this._updateStepTargetOnHide(),this.trigger("destroy")}getTour(){return this.tour}hide(){var e;null==(e=this.tour.modal)||e.hide(),this.trigger("before-hide"),this.el&&(this.el.hidden=!0),this._updateStepTargetOnHide(),this.trigger("hide")}_resolveExtraHiglightElements(){return this._resolvedExtraHighlightElements=this.options.extraHighlights?this.options.extraHighlights.flatMap(e=>Array.from(document.querySelectorAll(e))):[],this._resolvedExtraHighlightElements}_resolveAttachToOptions(){return this._resolvedAttachTo=function(e){let t=e.options.attachTo||{},n=Object.assign({},t);if(d(n.element)&&(n.element=n.element.call(e)),h(n.element)){try{n.element=document.querySelector(n.element)}catch(e){}n.element||console.error(`The element for this Shepherd step was not found ${t.element}`)}return n}(this),this._resolvedAttachTo}_getResolvedAttachToOptions(){return null===this._resolvedAttachTo?this._resolveAttachToOptions():this._resolvedAttachTo}isOpen(){return!!(this.el&&!this.el.hidden)}show(){return d(this.options.beforeShowPromise)?Promise.resolve(this.options.beforeShowPromise()).then(()=>this._show()):Promise.resolve(this._show())}updateStepOptions(e){Object.assign(this.options,e),this.shepherdElementComponent&&this.shepherdElementComponent.$set({step:this})}getElement(){return this.el}getTarget(){return this.target}_createTooltipContent(){let e=`${this.id}-description`,t=`${this.id}-label`;return this.shepherdElementComponent=new tJ({target:this.tour.options.stepsContainer||document.body,props:{classPrefix:this.classPrefix,descriptionId:e,labelId:t,step:this,styles:this.styles}}),this.shepherdElementComponent.getElement()}_scrollTo(e){let{element:t}=this._getResolvedAttachToOptions();d(this.options.scrollToHandler)?this.options.scrollToHandler(t):t instanceof Element&&"function"==typeof t.scrollIntoView&&t.scrollIntoView(e)}_getClassOptions(e){let t=this.tour&&this.tour.options&&this.tour.options.defaultStepOptions,n=e.classes?e.classes:"",o=t&&t.classes?t.classes:"";return Array.from(new Set([...n.split(" "),...o.split(" ")])).join(" ").trim()}_setOptions(e={}){let t=this.tour&&this.tour.options&&this.tour.options.defaultStepOptions;t=T({},t||{}),this.options=Object.assign({arrow:!0},t,e,{floatingUIOptions:T(t.floatingUIOptions||{},e.floatingUIOptions||{})});let{when:n}=this.options;this.options.classes=this._getClassOptions(e),this.destroy(),this.id=this.options.id||`step-${I()}`,n&&Object.keys(n).forEach(e=>{this.on(e,n[e],this)})}_setupElements(){f(this.el)||this.destroy(),this.el=this._createTooltipContent(),this.options.advanceOn&&function(e){let{event:t,selector:n}=e.options.advanceOn||{};if(!t)return console.error("advanceOn was defined, but no event name was passed.");{let o=t=>{if(e.isOpen()){let o=e.el&&t.currentTarget===e.el;(!f(n)&&t.currentTarget.matches(n)||o)&&e.tour.next()}},r=null;if(!f(n)&&!(r=document.querySelector(n)))return console.error(`No element was found for the selector supplied to advanceOn: ${n}`);r?(r.addEventListener(t,o),e.on("destroy",()=>r.removeEventListener(t,o))):(document.body.addEventListener(t,o,!0),e.on("destroy",()=>document.body.removeEventListener(t,o,!0)))}}(this),function(e){e.cleanup&&e.cleanup();let t=e._getResolvedAttachToOptions(),n=t.element,o=function(e,t){var n,o,r,i,l,s,a,c;let u={strategy:"absolute"};u.middleware=[];let d=!!t.options.arrow&&!!t.el&&t.el.querySelector(".shepherd-arrow"),h=A(e),f=null==(n=e.on)?void 0:n.includes("auto"),p=(null==e||null==(o=e.on)?void 0:o.includes("-start"))||(null==e||null==(r=e.on)?void 0:r.includes("-end"));if(!h){if(f?u.middleware.push({name:"autoPlacement",options:l={crossAxis:!0,alignment:p?null==e||null==(i=e.on)?void 0:i.split("-").pop():null},async fn(e){var t,n,o,r;let{rects:i,middlewareData:s,placement:a,platform:c,elements:u}=e,d=N(l,e),{crossAxis:h=!1,alignment:f,allowedPlacements:p=L,autoAlignment:m=!0}=d,y=g(d,Z),b=void 0!==f||p===L?((r=f||null)?[...p.filter(e=>V(e)===r),...p.filter(e=>V(e)!==r)]:p.filter(e=>F(e)===e)).filter(e=>!r||V(e)===r||!!m&&J(e)!==e):p,v=await eo(e,y),x=(null==(t=s.autoPlacement)?void 0:t.index)||0,w=b[x];if(null==w)return{};let E=G(w,i,await (null==c.isRTL?void 0:c.isRTL(u.floating)));if(a!==w)return{reset:{placement:b[0]}};let S=[v[F(w)],v[E[0]],v[E[1]]],T=[...(null==(n=s.autoPlacement)?void 0:n.overflows)||[],{placement:w,overflows:S}],k=b[x+1];if(k)return{data:{index:x+1,overflows:T},reset:{placement:k}};let $=T.map(e=>{let t=V(e.placement);return[e.placement,t&&h?e.overflows.slice(0,2).reduce((e,t)=>e+t,0):e.overflows[0],e.overflows]}).sort((e,t)=>e[1]-t[1]),_=(null==(o=$.filter(e=>e[2].slice(0,V(e[0])?2:3).every(e=>e<=0))[0])?void 0:o[0])||$[0][0];return _!==a?{data:{index:x+1,overflows:T},reset:{placement:_}}:{}}}):u.middleware.push((void 0===s&&(s={}),{name:"flip",options:s,async fn(e){var t,n,o,r,i;let{placement:l,middlewareData:a,rects:c,initialPlacement:u,platform:d,elements:h}=e,f=N(s,e),{mainAxis:p=!0,crossAxis:m=!0,fallbackPlacements:y,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:v="none",flipAlignment:x=!0}=f,w=g(f,Q);if(null!=(t=a.arrow)&&t.alignmentOffset)return{};let E=F(l),S=U(u),T=F(u)===u,k=await (null==d.isRTL?void 0:d.isRTL(h.floating)),$=y||(T||!x?[Y(u)]:function(e){let t=Y(e);return[J(e),t,J(t)]}(u)),_="none"!==v;!y&&_&&$.push(...function(e,t,n,o){let r=V(e),i=function(e,t,n){let o=["left","right"],r=["right","left"];switch(e){case"top":case"bottom":if(n)return t?r:o;return t?o:r;case"left":case"right":return t?["top","bottom"]:["bottom","top"];default:return[]}}(F(e),"start"===n,o);return r&&(i=i.map(e=>e+"-"+r),t&&(i=i.concat(i.map(J)))),i}(u,x,v,k));let O=[u,...$],P=await eo(e,w),C=[],A=(null==(n=a.flip)?void 0:n.overflows)||[];if(p&&C.push(P[E]),m){let e=G(l,c,k);C.push(P[e[0]],P[e[1]])}if(A=[...A,{placement:l,overflows:C}],!C.every(e=>e<=0)){let e=((null==(o=a.flip)?void 0:o.index)||0)+1,t=O[e];if(t)return{data:{index:e,overflows:A},reset:{placement:t}};let n=null==(r=A.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:r.placement;if(!n)switch(b){case"bestFit":{let e=null==(i=A.filter(e=>{if(_){let t=U(e.placement);return t===S||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:i[0];e&&(n=e);break}case"initialPlacement":n=u}if(l!==n)return{reset:{placement:n}}}return{}}})),u.middleware.push({name:"shift",options:c={limiter:(void 0===a&&(a={}),{options:a,fn(e){let{x:t,y:n,placement:o,rects:r,middlewareData:i}=e,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=N(a,e),u={x:t,y:n},d=U(o),h=W(d),f=u[h],p=u[d],g=N(l,e),y="number"==typeof g?{mainAxis:g,crossAxis:0}:m({mainAxis:0,crossAxis:0},g);if(s){let e="y"===h?"height":"width",t=r.reference[h]-r.floating[e]+y.mainAxis,n=r.reference[h]+r.reference[e]-y.mainAxis;f<t?f=t:f>n&&(f=n)}if(c){var b,v;let e="y"===h?"width":"height",t=["top","left"].includes(F(o)),n=r.reference[d]-r.floating[e]+(t&&(null==(b=i.offset)?void 0:b[d])||0)+(t?0:y.crossAxis),l=r.reference[d]+r.reference[e]+(t?0:(null==(v=i.offset)?void 0:v[d])||0)-(t?y.crossAxis:0);p<n?p=n:p>l&&(p=l)}return{[h]:f,[d]:p}}}),crossAxis:!0},async fn(e){let{x:t,y:n,placement:o}=e,r=N(c,e),{mainAxis:i=!0,crossAxis:l=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}}}=r,a=g(r,ee),u={x:t,y:n},d=await eo(e,a),h=U(F(o)),f=W(h),p=u[f],y=u[h];if(i){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",n=p+d[e],o=p-d[t];p=M(n,R(p,o))}if(l){let e="y"===h?"top":"left",t="y"===h?"bottom":"right",n=y+d[e],o=y-d[t];y=M(n,R(y,o))}let b=s.fn(m({},e,{[f]:p,[h]:y}));return m({},b,{data:{x:b.x-t,y:b.y-n}})}}),d){let e="object"==typeof t.options.arrow?t.options.arrow:{padding:4};u.middleware.push(eq({element:d,padding:p?e.padding:0}))}f||(u.placement=e.on)}return T(u,t.options.floatingUIOptions||{})}(t,e),r=A(t);r&&(n=document.body,e.shepherdElementComponent.getElement().classList.add("shepherd-centered")),e.cleanup=function(e,t,n,o){let r;void 0===o&&(o={});let{ancestorScroll:i=!0,ancestorResize:l=!0,elementResize:s="function"==typeof ResizeObserver,layoutShift:a="function"==typeof IntersectionObserver,animationFrame:c=!1}=o,u=eS(e),d=i||l?[...u?ex(u):[],...ex(t)]:[];d.forEach(e=>{i&&e.addEventListener("scroll",n,{passive:!0}),l&&e.addEventListener("resize",n)});let h=u&&a?function(e,t){let n,o=null,r=es(e);function i(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return function l(s,a){void 0===s&&(s=!1),void 0===a&&(a=1),i();let{left:c,top:u,width:d,height:h}=e.getBoundingClientRect();if(s||t(),!d||!h)return;let f=B(u),p=B(r.clientWidth-(c+d)),g={rootMargin:-f+"px "+-p+"px "+-B(r.clientHeight-(u+h))+"px "+-B(c)+"px",threshold:M(0,R(1,a))||1},y=!0;function b(e){let t=e[0].intersectionRatio;if(t!==a){if(!y)return l();t?l(!1,t):n=setTimeout(()=>{l(!1,1e-7)},1e3)}y=!1}try{o=new IntersectionObserver(b,m({},g,{root:r.ownerDocument}))}catch(e){o=new IntersectionObserver(b,g)}o.observe(e)}(!0),i}(u,n):null,f=-1,p=null;s&&(p=new ResizeObserver(e=>{let[o]=e;o&&o.target===u&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;null==(e=p)||e.observe(t)})),n()}),u&&!c&&p.observe(u),p.observe(t));let g=c?e_(e):null;return c&&function t(){let o=e_(e);g&&(o.x!==g.x||o.y!==g.y||o.width!==g.width||o.height!==g.height)&&n(),g=o,r=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{i&&e.removeEventListener("scroll",n),l&&e.removeEventListener("resize",n)}),null==h||h(),null==(e=p)||e.disconnect(),p=null,c&&cancelAnimationFrame(r)}}(n,e.el,()=>{if(!e.el){null==e.cleanup||e.cleanup();return}(function(e,t,n,o){eB(e,t.el,n).then(({x:e,y:n,placement:r,middlewareData:i})=>(t.el&&(o?Object.assign(t.el.style,{position:"fixed",left:"50%",top:"50%",transform:"translate(-50%, -50%)"}):Object.assign(t.el.style,{position:"absolute",left:`${e}px`,top:`${n}px`}),t.el.dataset.popperPlacement=r,function(e,t){let n=e.querySelector(".shepherd-arrow");if(u(n)&&t.arrow){let{x:e,y:o}=t.arrow;Object.assign(n.style,{left:null!=e?`${e}px`:"",top:null!=o?`${o}px`:""})}}(t.el,i)),t)).then(e=>new Promise(t=>{setTimeout(()=>t(e),300)})).then(e=>{null!=e&&e.el&&e.el.focus({preventScroll:!0})})})(n,e,o,r)}),e.target=t.element}(this)}_show(){var e;this.trigger("before-show"),this._resolveAttachToOptions(),this._resolveExtraHiglightElements(),this._setupElements(),this.tour.modal||this.tour.setupModal(),null==(e=this.tour.modal)||e.setupForStep(this),this._styleTargetElementForStep(this),this.el&&(this.el.hidden=!1),this.options.scrollTo&&setTimeout(()=>{this._scrollTo(this.options.scrollTo)}),this.el&&(this.el.hidden=!1);let t=this.shepherdElementComponent.getElement(),n=this.target||document.body,o=this._resolvedExtraHighlightElements;n.classList.add(`${this.classPrefix}shepherd-enabled`),n.classList.add(`${this.classPrefix}shepherd-target`),t.classList.add("shepherd-enabled"),null==o||o.forEach(e=>{e.classList.add(`${this.classPrefix}shepherd-enabled`),e.classList.add(`${this.classPrefix}shepherd-target`)}),this.trigger("show")}_styleTargetElementForStep(e){let t=e.target,n=e._resolvedExtraHighlightElements;if(!t)return;let o=e.options.highlightClass;o&&(t.classList.add(o),null==n||n.forEach(e=>e.classList.add(o))),t.classList.remove("shepherd-target-click-disabled"),null==n||n.forEach(e=>e.classList.remove("shepherd-target-click-disabled")),!1===e.options.canClickTarget&&(t.classList.add("shepherd-target-click-disabled"),null==n||n.forEach(e=>e.classList.add("shepherd-target-click-disabled")))}_updateStepTargetOnHide(){let e=this.target||document.body,t=this._resolvedExtraHighlightElements,n=this.options.highlightClass;n&&(e.classList.remove(n),null==t||t.forEach(e=>e.classList.remove(n))),e.classList.remove("shepherd-target-click-disabled",`${this.classPrefix}shepherd-enabled`,`${this.classPrefix}shepherd-target`),null==t||t.forEach(e=>{e.classList.remove("shepherd-target-click-disabled",`${this.classPrefix}shepherd-enabled`,`${this.classPrefix}shepherd-target`)})}}function tK(e){let t,n,o,r,i;return{c(){t=eJ("svg"),eZ(n=eJ("path"),"d",e[2]),eZ(t,"class",o=`${e[1]?"shepherd-modal-is-visible":""} shepherd-modal-overlay-container`)},m(o,l){ez(o,t,l),eW(t,n),e[11](t),r||(i=eX(t,"touchmove",e[3]),r=!0)},p(e,[r]){4&r&&eZ(n,"d",e[2]),2&r&&o!==(o=`${e[1]?"shepherd-modal-is-visible":""} shepherd-modal-overlay-container`)&&eZ(t,"class",o)},i:ej,o:ej,d(n){n&&eU(t),e[11](null),r=!1,i()}}}function tX(e,t,n){let o,r,{element:i,openingProperties:l}=t,s=!1;function a(){n(4,l=[{width:0,height:0,x:0,y:0,r:0}])}function c(){n(1,s=!1),f()}function u(e=0,t=0,o=0,r=0,i,s,c){if(s){let a=[s,...c||[]];for(let s of(n(4,l=[]),a)){if(!s||a.indexOf(s)!==a.lastIndexOf(s))continue;let{y:n,height:c}=function(e,t){let n=e.getBoundingClientRect(),o=n.y||n.top,r=n.bottom||o+n.height;if(t){let e=t.getBoundingClientRect(),n=e.y||e.top,i=e.bottom||n+e.height;o=Math.max(o,n),r=Math.min(r,i)}let i=Math.max(r-o,0);return{y:o,height:i}}(s,i),{x:u,width:d,left:h}=s.getBoundingClientRect();a.some(e=>{if(e===s)return!1;let t=e.getBoundingClientRect();return u>=t.left&&u+d<=t.right&&n>=t.top&&n+c<=t.bottom})||l.push({width:d+2*e,height:c+2*e,x:(u||h)+o-e,y:n+r-e,r:t})}}else a()}function d(){n(1,s=!0)}a();let h=e=>{e.preventDefault()};function f(){o&&(cancelAnimationFrame(o),o=void 0),window.removeEventListener("touchmove",h,{passive:!1})}return e.$$set=e=>{"element"in e&&n(0,i=e.element),"openingProperties"in e&&n(4,l=e.openingProperties)},e.$$.update=()=>{16&e.$$.dirty&&n(2,r=function(e){let t="",{innerWidth:n,innerHeight:o}=window;return e.forEach(e=>{let{width:n,height:o,x:r=0,y:i=0,r:l=0}=e,{topLeft:s=0,topRight:a=0,bottomRight:c=0,bottomLeft:u=0}="number"==typeof l?{topLeft:l,topRight:l,bottomRight:l,bottomLeft:l}:l;t+=`M${r+s},${i}\
21
+ a${s},${s},0,0,0-${s},${s}\
22
+ V${o+i-u}\
23
+ a${u},${u},0,0,0,${u},${u}\
24
+ H${n+r-c}\
25
+ a${c},${c},0,0,0,${c}-${c}\
26
+ V${i+a}\
27
+ a${a},${a},0,0,0-${a}-${a}\
28
+ Z`}),`M${n},${o}\
29
+ H0\
30
+ V0\
31
+ H${n}\
32
+ V${o}\
33
+ Z\
34
+ ${t}`.replace(/\s/g,"")}(l))},[i,s,r,e=>{e.stopPropagation()},l,()=>i,a,c,u,function(e){f(),e.tour.options.useModalOverlay?(function(e){let{modalOverlayOpeningPadding:t,modalOverlayOpeningRadius:n,modalOverlayOpeningXOffset:r=0,modalOverlayOpeningYOffset:i=0}=e.options,l=function(e){let t={top:0,left:0};if(!e)return t;let n=e.ownerDocument.defaultView;for(;n!==window.top;){var o,r,i;let e=null==(o=n)?void 0:o.frameElement;if(e){let n=e.getBoundingClientRect();t.top+=n.top+(null!=(r=n.scrollTop)?r:0),t.left+=n.left+(null!=(i=n.scrollLeft)?i:0)}n=n.parent}return t}(e.target),s=function e(t){if(!t)return null;let n=t instanceof HTMLElement&&window.getComputedStyle(t).overflowY;return"hidden"!==n&&"visible"!==n&&t.scrollHeight>=t.clientHeight?t:e(t.parentElement)}(e.target),a=()=>{o=void 0,u(t,n,r+l.left,i+l.top,s,e.target,e._resolvedExtraHighlightElements),o=requestAnimationFrame(a)};a(),window.addEventListener("touchmove",h,{passive:!1})}(e),d()):c()},d,function(e){e3[e?"unshift":"push"](()=>{n(0,i=e)})}]}class tZ extends tp{constructor(e){super(),tf(this,e,tX,tK,eV,{element:0,openingProperties:4,getElement:5,closeModalOpening:6,hide:7,positionModal:8,setupForStep:9,show:10})}get getElement(){return this.$$.ctx[5]}get closeModalOpening(){return this.$$.ctx[6]}get hide(){return this.$$.ctx[7]}get positionModal(){return this.$$.ctx[8]}get setupForStep(){return this.$$.ctx[9]}get show(){return this.$$.ctx[10]}}class tQ extends p{constructor(){super(),this.activeTour=void 0,_(this)}}class t0 extends p{constructor(e={}){return super(),this.trackedEvents=["active","cancel","complete","show"],this.classPrefix=void 0,this.currentStep=void 0,this.focusedElBeforeOpen=void 0,this.id=void 0,this.modal=void 0,this.options=void 0,this.steps=void 0,_(this),this.options=Object.assign({},{exitOnEsc:!0,keyboardNavigation:!0},e),this.classPrefix=C(this.options.classPrefix),this.steps=[],this.addSteps(this.options.steps),["active","cancel","complete","inactive","show","start"].map(e=>{(e=>{this.on(e,t=>{(t=t||{}).tour=this,t1.trigger(e,t)})})(e)}),this._setTourID(e.id),this}addStep(e,t){let n=e;return n instanceof tY?n.tour=this:n=new tY(this,n),f(t)?this.steps.push(n):this.steps.splice(t,0,n),n}addSteps(e){return Array.isArray(e)&&e.forEach(e=>{this.addStep(e)}),this}back(){let e=this.steps.indexOf(this.currentStep);this.show(e-1,!1)}async cancel(){if(this.options.confirmCancel){let e=this.options.confirmCancelMessage||"Are you sure you want to stop the tour?";(d(this.options.confirmCancel)?await this.options.confirmCancel():window.confirm(e))&&this._done("cancel")}else this._done("cancel")}complete(){this._done("complete")}getById(e){return this.steps.find(t=>t.id===e)}getCurrentStep(){return this.currentStep}hide(){let e=this.getCurrentStep();if(e)return e.hide()}isActive(){return t1.activeTour===this}next(){let e=this.steps.indexOf(this.currentStep);e===this.steps.length-1?this.complete():this.show(e+1,!0)}removeStep(e){let t=this.getCurrentStep();this.steps.some((t,n)=>{if(t.id===e)return t.isOpen()&&t.hide(),t.destroy(),this.steps.splice(n,1),!0}),t&&t.id===e&&(this.currentStep=void 0,this.steps.length?this.show(0):this.cancel())}show(e=0,t=!0){let n=h(e)?this.getById(e):this.steps[e];n&&(this._updateStateBeforeShow(),d(n.options.showOn)&&!n.options.showOn()?this._skipStep(n,t):(this.currentStep=n,this.trigger("show",{step:n,previous:this.currentStep}),n.show()))}async start(){this.trigger("start"),this.focusedElBeforeOpen=document.activeElement,this.currentStep=null,this.setupModal(),this._setupActiveTour(),this.next()}_done(e){let t=this.steps.indexOf(this.currentStep);if(Array.isArray(this.steps)&&this.steps.forEach(e=>e.destroy()),!function(e){if(e){let{steps:t}=e;t.forEach(e=>{e.options&&!1===e.options.canClickTarget&&e.options.attachTo&&(u(e.target)&&e.target.classList.remove("shepherd-target-click-disabled"),e._resolvedExtraHighlightElements&&e._resolvedExtraHighlightElements.forEach(e=>{u(e)&&e.classList.remove("shepherd-target-click-disabled")}))})}}(this),this.trigger(e,{index:t}),t1.activeTour=null,this.trigger("inactive",{tour:this}),this.modal&&this.modal.hide(),("cancel"===e||"complete"===e)&&this.modal){let e=document.querySelector(".shepherd-modal-overlay-container");e&&(e.remove(),this.modal=null)}u(this.focusedElBeforeOpen)&&this.focusedElBeforeOpen.focus()}_setupActiveTour(){this.trigger("active",{tour:this}),t1.activeTour=this}setupModal(){this.modal=new tZ({target:this.options.modalContainer||document.body,props:{styles:this.styles}})}_skipStep(e,t){let n=this.steps.indexOf(e);n===this.steps.length-1?this.complete():this.show(t?n+1:n-1,t)}_updateStateBeforeShow(){this.currentStep&&this.currentStep.hide(),this.isActive()||this._setupActiveTour()}_setTourID(e){let t=this.options.tourName||"tour",n=e||I();this.id=`${t}--${n}`}}let t1=new tQ,t2="undefined"==typeof window;t1.Step=t2?O:tY,t1.Tour=t2?P:t0;var t4=n(6556);let t6=(0,a.createContext)(null);function t3(){let e=(0,a.useContext)(t6);if(!e)throw Error("useTour must be used within a TourProvider");return e}function t5(e){let{children:t}=e,n=(0,a.useRef)(null),o=(0,c.useRouter)(),{isFirstVisit:r,markTourCompleted:i}=(0,t4.n)(),[l,u]=(0,a.useState)(!1),[d,h]=(0,a.useState)(!1),[f,p]=(0,a.useState)(!1),m=(0,a.useRef)(!1),g=()=>{n.current&&(h(!0),p(!0),n.current.start(),setTimeout(()=>{p(!1)},1e3))};(0,a.useEffect)(()=>{if(!n.current){n.current=new t1.Tour({useModalOverlay:!1,defaultStepOptions:{cancelIcon:{enabled:!0},scrollTo:{behavior:"smooth",block:"center"},arrow:!1,highlightClass:"shepherd-highlight",when:{show(){var e,t,n;let o=null===(e=t1.activeTour)||void 0===e?void 0:e.getCurrentStep(),r=null==o?void 0:o.getElement(),i=null==r?void 0:r.querySelector(".shepherd-footer"),l=document.createElement("span");if(l.className="shepherd-progress",l.innerText="".concat((null===(t=t1.activeTour)||void 0===t?void 0:t.steps.indexOf(o))+1," of ").concat(null===(n=t1.activeTour)||void 0===n?void 0:n.steps.length),null==i||i.insertBefore(l,i.firstChild),r){let e=r.offsetHeight;if(document.documentElement.style.setProperty("--shepherd-dialog-height","".concat(e+20,"px")),window.innerWidth<768){let e=null;for(let t of[".fixed.top-14.left-0.w-64","div.fixed.w-64.bg-white.border-r",".fixed.w-64.transform",'[class*="fixed"][class*="w-64"][class*="bg-white"]','div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"]'])if(e=document.querySelector(t))break;if(!e)for(let t of document.querySelectorAll("div.fixed")){let n=t.getBoundingClientRect();if(256===n.width&&0===n.left&&n.top>=50){e=t;break}}if(e&&e instanceof HTMLElement){let t=r.getBoundingClientRect().top-56;e.style.setProperty("height","".concat(t,"px"),"important"),e.style.setProperty("max-height","".concat(t,"px"),"important")}}}let s=null==o?void 0:o.getTarget();s&&s instanceof HTMLElement&&(s.style.outline="3px solid #3b82f6",s.style.outlineOffset="2px",s.style.borderRadius="8px",s.style.position="relative",s.style.zIndex="9999",s.setAttribute("data-shepherd-highlighted","true"))},hide(){let e=document.querySelector('[data-shepherd-highlighted="true"]');e&&e instanceof HTMLElement&&(e.style.outline="",e.style.outlineOffset="",e.style.borderRadius="",e.style.boxShadow="",e.style.position="",e.style.zIndex="",e.removeAttribute("data-shepherd-highlighted")),document.documentElement.style.removeProperty("--shepherd-dialog-height");let t=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');t&&t instanceof HTMLElement&&(t.style.removeProperty("height"),t.style.removeProperty("max-height"))}}}});let e=document.createElement("style");e.id="shepherd-global-custom-style",e.textContent='\n .shepherd-element {\n /* Uniform 1px border using inner box-shadow so corners stay consistent */\n border: none !important;\n border-radius: 10px !important;\n z-index: 30000 !important;\n box-shadow: 0 0 0 1px #d1d5db inset, 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n overflow: visible !important;\n background-clip: padding-box !important;\n }\n\n .shepherd-title {\n font-weight: bold;\n color: #111827;\n margin: 0;\n }\n\n .shepherd-element .shepherd-header {\n padding: 1rem 1rem 0.5rem 1rem;\n }\n\n .shepherd-element .shepherd-text {\n padding: 0.5rem 1rem 1rem 1rem;\n }\n\n /* Fix mobile menu gap when tour dialog is present */\n @media (max-width: 767px) {\n /* Very specific selector to override Tailwind\'s h-[calc(100vh-56px)] class */\n div.fixed.top-14.left-0.w-64.bg-white.border-r.shadow-lg.z-50.transform,\n .fixed.top-14.left-0.w-64.bg-white.shadow-lg.z-50,\n div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"][class*="bg-white"][class*="shadow-lg"][class*="z-50"] {\n height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n max-height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Target the mobile menu by its exact class combination from the HTML */\n .fixed.w-64.bg-white.border-r.border-gray-200.shadow-lg.z-50.transform,\n .fixed[class*="w-64"][class*="bg-white"][class*="border-r"][class*="shadow-lg"][class*="z-50"][class*="transform"] {\n height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Even more specific - target by multiple class combinations */\n .fixed.top-14.left-0[class*="w-64"],\n div.fixed[class*="top-14"][class*="left-0"][class*="w-64"] {\n height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Super aggressive approach - use high specificity to override Tailwind */\n body div.fixed.w-64:not(.shepherd-element),\n html body div.fixed.w-64:not(.shepherd-element) {\n height: calc(100vh - 56px - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Fallback selectors for other mobile menu patterns */\n nav[data-state="open"],\n .mobile-menu.open,\n [data-mobile-menu="true"] {\n height: calc(100vh - var(--shepherd-dialog-height, 200px)) !important;\n max-height: calc(100vh - var(--shepherd-dialog-height, 200px)) !important;\n }\n\n /* Ensure mobile menu content flows properly */\n .fixed.w-64 nav,\n .fixed[class*="w-64"] nav {\n height: 100% !important;\n overflow-y: auto !important;\n }\n }\n\n ',document.getElementById("shepherd-global-custom-style")||document.head.appendChild(e),n.current.on("complete",()=>{let e=document.querySelector('[data-shepherd-highlighted="true"]');e&&e instanceof HTMLElement&&(e.style.outline="",e.style.outlineOffset="",e.style.borderRadius="",e.style.boxShadow="",e.style.position="",e.style.zIndex="",e.removeAttribute("data-shepherd-highlighted"));let t=document.getElementById("shepherd-column-overlay");t&&t.remove();let n=document.getElementById("shepherd-column-anchor");n&&n.remove();let o=document.getElementById("shepherd-user-column-overlay");o&&o.remove();let r=document.getElementById("shepherd-user-column-anchor");r&&r.remove();let l=document.getElementById("shepherd-global-custom-style");l&&l.remove(),document.documentElement.style.removeProperty("--shepherd-dialog-height");let s=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');s&&s instanceof HTMLElement&&(s.style.removeProperty("height"),s.style.removeProperty("max-height")),h(!1),p(!1),i()}),n.current.on("cancel",()=>{let e=document.querySelector('[data-shepherd-highlighted="true"]');e&&e instanceof HTMLElement&&(e.style.outline="",e.style.outlineOffset="",e.style.borderRadius="",e.style.boxShadow="",e.style.position="",e.style.zIndex="",e.removeAttribute("data-shepherd-highlighted"));let t=document.getElementById("shepherd-column-overlay");t&&t.remove();let n=document.getElementById("shepherd-column-anchor");n&&n.remove();let o=document.getElementById("shepherd-user-column-overlay");o&&o.remove();let r=document.getElementById("shepherd-user-column-anchor");r&&r.remove();let l=document.getElementById("shepherd-global-custom-style");l&&l.remove(),document.documentElement.style.removeProperty("--shepherd-dialog-height");let s=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');s&&s instanceof HTMLElement&&(s.style.removeProperty("height"),s.style.removeProperty("max-height")),h(!1),p(!1),i()}),[{title:"\uD83D\uDC4B Welcome to SkyPilot!",text:"\n <p>SkyPilot is a system for managing AI workloads on any cluster and cloud infrastructure.</p>\n ",buttons:[{text:"Skip Tour",action(){this.cancel()},classes:"shepherd-button-secondary"},{text:"Start Tour",action(){this.next()}}]},{title:"Clusters",text:"\n <p>Spin up <strong>Sky Clusters</strong> on any infrastructure you have access to.</p>\n <p>Easily SSH into any node, connect an IDE, or queue development jobs.</p>\n ",attachTo:{element:'a[href="/dashboard/clusters"]',on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{let t=()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()};"/dashboard/clusters"!==o.pathname?(m.current=!0,o.push("/clusters").then(()=>{m.current=!1,setTimeout(t,200)})):t()})},when:{show(){var e,t,n;let o=null===(e=t1.activeTour)||void 0===e?void 0:e.getCurrentStep(),r=null==o?void 0:o.getElement(),i=null==r?void 0:r.querySelector(".shepherd-footer"),l=document.createElement("span");if(l.className="shepherd-progress",l.innerText="".concat((null===(t=t1.activeTour)||void 0===t?void 0:t.steps.indexOf(o))+1," of ").concat(null===(n=t1.activeTour)||void 0===n?void 0:n.steps.length),null==i||i.insertBefore(l,i.firstChild),r){let e=r.offsetHeight;if(document.documentElement.style.setProperty("--shepherd-dialog-height","".concat(e+20,"px")),window.innerWidth<768){let e=null;for(let t of[".fixed.top-14.left-0.w-64","div.fixed.w-64.bg-white.border-r",".fixed.w-64.transform",'[class*="fixed"][class*="w-64"][class*="bg-white"]','div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"]'])if(e=document.querySelector(t))break;if(!e)for(let t of document.querySelectorAll("div.fixed")){let n=t.getBoundingClientRect();if(256===n.width&&0===n.left&&n.top>=50){e=t;break}}if(e&&e instanceof HTMLElement){let t=r.getBoundingClientRect().top-56;e.style.setProperty("height","".concat(t,"px"),"important"),e.style.setProperty("max-height","".concat(t,"px"),"important")}}}let s=document.querySelector('a[href="/dashboard/clusters"]');s&&s instanceof HTMLElement&&(s.style.outline="3px solid #3b82f6",s.style.outlineOffset="2px",s.style.borderRadius="8px",s.style.position="relative",s.style.zIndex="9999",s.setAttribute("data-shepherd-highlighted","true"))},hide(){let e=document.querySelector('[data-shepherd-highlighted="true"]');e&&e instanceof HTMLElement&&(e.style.outline="",e.style.outlineOffset="",e.style.borderRadius="",e.style.boxShadow="",e.style.position="",e.style.zIndex="",e.removeAttribute("data-shepherd-highlighted")),document.documentElement.style.removeProperty("--shepherd-dialog-height");let t=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');t&&t instanceof HTMLElement&&(t.style.removeProperty("height"),t.style.removeProperty("max-height"))}},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"SkyPilot is infra-agnostic",text:"\n <p>Run compute on any hyperscaler, neocloud, or Kubernetes cluster — all within a unified system.</p>\n ",attachTo:{element:function(){let e=document.getElementById("shepherd-column-anchor");if(e)return e;let t=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"Infra"===e.textContent.trim());if(t){let e=t.closest("table"),n=Array.from(t.parentElement.children).indexOf(t);if(e){let t=e.querySelectorAll("tbody tr"),o=null;for(let e=t.length-1;e>=0;e--){let r=t[e].children[n];if(r){o=r;break}}if(o)return o}return t}return document.querySelector("table")||"body"},on:"bottom",offset:{skidding:0,distance:15}},beforeShowPromise:function(){return new Promise(e=>{let t=()=>{let t=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"Infra"===e.textContent.trim());if(t&&t instanceof HTMLElement){let o=t.closest("table");if(o){let r=t.getBoundingClientRect(),i=window.innerWidth,l=o.closest('.overflow-x-auto, .overflow-auto, [style*="overflow"]')||o.parentElement;if((r.right>i||r.left<0)&&l&&l instanceof HTMLElement){let o=l.getBoundingClientRect(),i=t.offsetLeft-o.width/2+r.width/2;l.scrollTo({left:Math.max(0,i),behavior:"smooth"}),setTimeout(()=>{n(),e()},300);return}n()}}e()},n=()=>{let e=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"Infra"===e.textContent.trim());if(e&&e instanceof HTMLElement){let t=e.closest("table");if(t){let n=Array.from(e.parentElement.children).indexOf(e),o=e.getBoundingClientRect(),r=t.querySelectorAll("tbody tr"),i=o;r.forEach(e=>{let t=e.children[n];t&&(i=t.getBoundingClientRect())});let l=i.bottom+4,s=document.createElement("div");s.id="shepherd-column-anchor",s.style.position="fixed",s.style.left="".concat(o.left+o.width/2,"px"),s.style.top="".concat(l,"px"),s.style.width="1px",s.style.height="1px",s.style.zIndex="9999",s.style.pointerEvents="none",s.style.backgroundColor="transparent",s.style.transform="translate(-50%, -50%)",document.body.appendChild(s)}}};"/dashboard/clusters"!==window.location.pathname?(m.current=!0,o.push("/clusters").then(()=>{m.current=!1,setTimeout(t,200)})):t()})},when:{show(){var e,t,n;let o=null===(e=t1.activeTour)||void 0===e?void 0:e.getCurrentStep(),r=null==o?void 0:o.getElement(),i=null==r?void 0:r.querySelector(".shepherd-footer"),l=document.createElement("span");if(l.className="shepherd-progress",l.innerText="".concat((null===(t=t1.activeTour)||void 0===t?void 0:t.steps.indexOf(o))+1," of ").concat(null===(n=t1.activeTour)||void 0===n?void 0:n.steps.length),null==i||i.insertBefore(l,i.firstChild),r){let e=r.offsetHeight;if(document.documentElement.style.setProperty("--shepherd-dialog-height","".concat(e+20,"px")),window.innerWidth<768){let e=null;for(let t of[".fixed.top-14.left-0.w-64","div.fixed.w-64.bg-white.border-r",".fixed.w-64.transform",'[class*="fixed"][class*="w-64"][class*="bg-white"]','div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"]'])if(e=document.querySelector(t))break;if(!e)for(let t of document.querySelectorAll("div.fixed")){let n=t.getBoundingClientRect();if(256===n.width&&0===n.left&&n.top>=50){e=t;break}}if(e&&e instanceof HTMLElement){let t=r.getBoundingClientRect().top-56;e.style.setProperty("height","".concat(t,"px"),"important"),e.style.setProperty("max-height","".concat(t,"px"),"important")}}}setTimeout(()=>{let e=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"Infra"===e.textContent.trim());if(e&&e instanceof HTMLElement){let t=e.closest("table");if(t){let n=Array.from(e.parentElement.children).indexOf(e),o=e.getBoundingClientRect(),r=t.querySelectorAll("tbody tr"),i=o;r.forEach(e=>{let t=e.children[n];t&&(i=t.getBoundingClientRect())});let l=document.createElement("div");l.id="shepherd-column-overlay",l.style.position="fixed",l.style.left="".concat(o.left-4,"px"),l.style.top="".concat(o.top-4,"px"),l.style.width="".concat(o.width+8,"px"),l.style.height="".concat(i.bottom-o.top+8,"px"),l.style.outline="3px solid #3b82f6",l.style.outlineOffset="2px",l.style.borderRadius="8px",l.style.zIndex="9998",l.style.pointerEvents="none",l.style.backgroundColor="transparent",document.body.appendChild(l)}}},100)},hide(){let e=document.getElementById("shepherd-column-overlay");e&&e.remove();let t=document.getElementById("shepherd-column-anchor");t&&t.remove(),document.documentElement.style.removeProperty("--shepherd-dialog-height");let n=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');n&&n instanceof HTMLElement&&(n.style.removeProperty("height"),n.style.removeProperty("max-height"));let o=document.getElementById("shepherd-global-custom-style");o&&o.remove()}},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Multi-user support",text:"\n <p>SkyPilot supports multiple users in an organization.</p>\n <p>Each user can have their own clusters and jobs, with proper access controls.</p>\n ",attachTo:{element:function(){let e=document.getElementById("shepherd-user-column-anchor");if(e)return e;let t=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"User"===e.textContent.trim());if(t){let e=t.closest("table"),n=Array.from(t.parentElement.children).indexOf(t);if(e){let t=e.querySelectorAll("tbody tr"),o=null;for(let e=t.length-1;e>=0;e--){let r=t[e].children[n];if(r){o=r;break}}if(o)return o}return t}return document.querySelector("table")||"body"},on:"bottom",offset:{skidding:0,distance:15}},beforeShowPromise:function(){return new Promise(e=>{let t=()=>{let t=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"User"===e.textContent.trim());if(t&&t instanceof HTMLElement){let o=t.closest("table");if(o){let r=t.getBoundingClientRect(),i=window.innerWidth,l=o.closest('.overflow-x-auto, .overflow-auto, [style*="overflow"]')||o.parentElement;if((r.right>i||r.left<0)&&l&&l instanceof HTMLElement){let o=l.getBoundingClientRect(),i=t.offsetLeft-o.width/2+r.width/2;l.scrollTo({left:Math.max(0,i),behavior:"smooth"}),setTimeout(()=>{n(),e()},300);return}n()}}e()},n=()=>{let e=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"User"===e.textContent.trim());if(e&&e instanceof HTMLElement){let t=e.closest("table");if(t){let n=Array.from(e.parentElement.children).indexOf(e),o=e.getBoundingClientRect(),r=t.querySelectorAll("tbody tr"),i=o;r.forEach(e=>{let t=e.children[n];t&&(i=t.getBoundingClientRect())});let l=i.bottom+4,s=document.createElement("div");s.id="shepherd-user-column-anchor",s.style.position="fixed",s.style.left="".concat(o.left+o.width/2,"px"),s.style.top="".concat(l,"px"),s.style.width="1px",s.style.height="1px",s.style.zIndex="9999",s.style.pointerEvents="none",s.style.backgroundColor="transparent",s.style.transform="translate(-50%, -50%)",document.body.appendChild(s)}}};"/dashboard/clusters"!==window.location.pathname?(m.current=!0,o.push("/clusters").then(()=>{m.current=!1,setTimeout(t,200)})):t()})},when:{show(){var e,t,n;let o=null===(e=t1.activeTour)||void 0===e?void 0:e.getCurrentStep(),r=null==o?void 0:o.getElement(),i=null==r?void 0:r.querySelector(".shepherd-footer"),l=document.createElement("span");if(l.className="shepherd-progress",l.innerText="".concat((null===(t=t1.activeTour)||void 0===t?void 0:t.steps.indexOf(o))+1," of ").concat(null===(n=t1.activeTour)||void 0===n?void 0:n.steps.length),null==i||i.insertBefore(l,i.firstChild),r){let e=r.offsetHeight;if(document.documentElement.style.setProperty("--shepherd-dialog-height","".concat(e+20,"px")),window.innerWidth<768){let e=null;for(let t of[".fixed.top-14.left-0.w-64","div.fixed.w-64.bg-white.border-r",".fixed.w-64.transform",'[class*="fixed"][class*="w-64"][class*="bg-white"]','div[class*="fixed"][class*="top-14"][class*="left-0"][class*="w-64"]'])if(e=document.querySelector(t))break;if(!e)for(let t of document.querySelectorAll("div.fixed")){let n=t.getBoundingClientRect();if(256===n.width&&0===n.left&&n.top>=50){e=t;break}}if(e&&e instanceof HTMLElement){let t=r.getBoundingClientRect().top-56;e.style.setProperty("height","".concat(t,"px"),"important"),e.style.setProperty("max-height","".concat(t,"px"),"important")}}}setTimeout(()=>{let e=Array.from(document.querySelectorAll("thead th")).find(e=>e.textContent&&"User"===e.textContent.trim());if(e&&e instanceof HTMLElement){let t=e.closest("table");if(t){let n=Array.from(e.parentElement.children).indexOf(e),o=e.getBoundingClientRect(),r=t.querySelectorAll("tbody tr"),i=o;r.forEach(e=>{let t=e.children[n];t&&(i=t.getBoundingClientRect())});let l=document.createElement("div");l.id="shepherd-user-column-overlay",l.style.position="fixed",l.style.left="".concat(o.left-4,"px"),l.style.top="".concat(o.top-4,"px"),l.style.width="".concat(o.width+8,"px"),l.style.height="".concat(i.bottom-o.top+8,"px"),l.style.outline="3px solid #3b82f6",l.style.outlineOffset="2px",l.style.borderRadius="8px",l.style.zIndex="9998",l.style.pointerEvents="none",l.style.backgroundColor="transparent",document.body.appendChild(l)}}},100)},hide(){let e=document.getElementById("shepherd-user-column-overlay");e&&e.remove();let t=document.getElementById("shepherd-user-column-anchor");t&&t.remove(),document.documentElement.style.removeProperty("--shepherd-dialog-height");let n=document.querySelector(".fixed.top-14.left-0.w-64")||document.querySelector("div.fixed.w-64.bg-white.border-r")||document.querySelector(".fixed.w-64.transform")||document.querySelector('[class*="fixed"][class*="w-64"][class*="bg-white"]');n&&n instanceof HTMLElement&&(n.style.removeProperty("height"),n.style.removeProperty("max-height"));let o=document.getElementById("shepherd-global-custom-style");o&&o.remove()}},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Spin up compute in seconds",text:'\n <p>Spin up clusters using the Python SDK or the CLI.</p>\n <div class="space-y-2">\n <div class="rounded-lg border text-card-foreground shadow-sm p-3 bg-gray-50">\n <div class="flex items-center justify-between">\n <pre class="text-sm w-full whitespace-pre-wrap">\n <code class="block">sky launch</code>\n </pre>\n <button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-8 w-8 rounded-full" onclick="copyDashboardCodeBlock(this)" title="Copy to clipboard">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy h-4 w-4">\n <rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect>\n <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path>\n </svg>\n </button>\n </div>\n </div>\n <div class="rounded-lg border text-card-foreground shadow-sm p-3 bg-gray-50">\n <div class="flex items-center justify-between">\n <pre class="text-sm w-full whitespace-pre-wrap">\n <code class="block">sky launch --gpus L4:8</code>\n </pre>\n <button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-8 w-8 rounded-full" onclick="copyDashboardCodeBlock(this)" title="Copy to clipboard">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy h-4 w-4">\n <rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect>\n <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path>\n </svg>\n </button>\n </div>\n </div>\n <div class="rounded-lg border text-card-foreground shadow-sm p-3 bg-gray-50">\n <div class="flex items-center justify-between">\n <pre class="text-sm w-full whitespace-pre-wrap">\n <code class="block">sky launch --num-nodes 10 --cpus 32+</code>\n </pre>\n <button class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-8 w-8 rounded-full" onclick="copyDashboardCodeBlock(this)" title="Copy to clipboard">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy h-4 w-4">\n <rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect>\n <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path>\n </svg>\n </button>\n </div>\n </div>\n </div>\n ',buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Jobs",text:"\n <p>Use <strong>Managed Jobs</strong> for long-running workloads.</p>\n <p>They provide automatic recovery against failures, such as recovering from preemptions or transient errors.</p>\n ",attachTo:{element:function(){return document.querySelector('a[href="/dashboard/jobs"]')||document.querySelector('a[href="/dashboard/jobs"]')||'a[href="/dashboard/jobs"]'},on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{(()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()})()})},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Bring one or many infrastructure",text:"\n <p>SkyPilot combines your Kubernetes clusters, cloud VMs, or on-premise nodes into a unified compute pool.</p>\n <p>You can monitor them in this page.</p>\n ",attachTo:{element:function(){return document.querySelector('a[href="/dashboard/infra"]')||document.querySelector('a[href="/dashboard/infra"]')||'a[href="/dashboard/infra"]'},on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{(()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()})()})},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Workspaces",text:"\n <p>For team deployments, admins can use Workspaces to manage teams or projects.</p>\n ",attachTo:{element:'a[href="/dashboard/workspaces"]',on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{(()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()})()})},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"Users",text:"\n <p>SkyPilot provides user management with RBAC and SSO support. Admins can manage users in this page.</p>\n ",attachTo:{element:'a[href="/dashboard/users"]',on:"bottom",offset:{skidding:0,distance:10}},beforeShowPromise:function(){return new Promise(e=>{(()=>{let t=window.innerWidth<768,n=document.querySelector('[data-testid="mobile-menu-button"], button[aria-label*="menu"], button[aria-label*="Menu"], .mobile-menu-button, [role="button"][aria-expanded]');if(t&&n&&!("true"===n.getAttribute("aria-expanded")||n.classList.contains("open")||document.querySelector('nav[data-state="open"], .mobile-menu.open, [data-mobile-menu="true"]'))){n instanceof HTMLElement&&n.click(),setTimeout(()=>{e()},300);return}e()})()})},buttons:[{text:"Back",action(){this.back()},classes:"shepherd-button-secondary"},{text:"Next",action(){this.next()}}]},{title:"\uD83C\uDF89 Tour complete!",text:'\n <p>We invite you to to explore the rest of the dashboard.</p>\n <p>To get started with SkyPilot, refer to <a href="https://docs.skypilot.co/en/latest/getting-started/quickstart.html">Quickstart</a>. You can restart this tour by clicking the <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="inline-block h-4 w-4 align-middle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg> icon in the bottom right corner.</p>\n <p>Have questions? Join Slack to directly chat with the SkyPilot team.</p>\n ',buttons:[{text:"Finish",action(){this.complete()},classes:"shepherd-button-secondary"},{text:"Join Slack",action(){window.open("https://slack.skypilot.co/","_blank"),this.complete()}}]}].forEach(e=>{n.current.addStep(e)})}return r&&!l&&(g(),u(!0)),()=>{n.current&&n.current.complete()}},[r]),(0,a.useEffect)(()=>{if(!d||f)return;let e=e=>{if(!m.current){if(window.confirm("The tour is currently in progress. Do you want to abort the tour and navigate away?\n\nYou can resume the tour by clicking the question mark on the bottom right."))n.current&&n.current.cancel();else throw o.events.emit("routeChangeError"),"Route change aborted by user during tour."}},t=e=>(e.preventDefault(),e.returnValue="The tour is currently in progress. Are you sure you want to leave?",e.returnValue);return o.events.on("routeChangeStart",e),window.addEventListener("beforeunload",t),()=>{o.events.off("routeChangeStart",e),window.removeEventListener("beforeunload",t)}},[d,f,o]);let y={startTour:g,completeTour:()=>{n.current&&n.current.complete(),p(!1)},tour:n.current};return(0,s.jsx)(t6.Provider,{value:y,children:t})}window.copyDashboardCodeBlock=function(e){let t=e.closest(".bg-gray-50").querySelector("pre").querySelector("code.block").textContent;navigator.clipboard.writeText(t).then(()=>{let t=e.innerHTML;e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check h-5 w-5 text-green-600"><path d="m9 12 2 2 4-4"/></svg>',setTimeout(()=>{e.innerHTML=t},2e3)})}},32586:function(e,t,n){"use strict";n.r(t);var o=n(85893),r=n(67294),i=n(20745),l=n(5152),s=n.n(l),a=n(45697),c=n.n(a);n(36501);var u=n(93225),d=n(94849),h=n(23800);let f=s()(()=>Promise.all([n.e(616),n.e(6130),n.e(7411),n.e(6989),n.e(3850),n.e(9353),n.e(2350)]).then(n.bind(n,9353)).then(e=>e.Layout),{loadableGenerated:{webpack:()=>[9353]},ssr:!1});function p(e){let{Component:t,pageProps:n}=e;return(0,r.useEffect)(()=>{let e=document.createElement("link");e.rel="icon",e.href="".concat(u.GW,"/favicon.ico"),document.head.appendChild(e)},[]),(0,o.jsx)(h.ol,{children:(0,o.jsx)(d.C,{children:(0,o.jsx)(f,{highlighted:n.highlighted,children:(0,o.jsx)(t,{...n})})})})}window.React=r,window.ReactDOM=i,p.propTypes={Component:c().elementType.isRequired,pageProps:c().object.isRequired},t.default=p},23800:function(e,t,n){"use strict";n.d(t,{d7:function(){return g},ol:function(){return p},t6:function(){return b},x1:function(){return y}});var o=n(85893),r=n(67294),i=n(93225),l=n(47145);let s=(0,r.createContext)({topNavLinks:[],routes:[]}),a={topNavLinks:[],routes:[]},c={REGISTER_TOP_NAV_LINK:"REGISTER_TOP_NAV_LINK",REGISTER_ROUTE:"REGISTER_ROUTE"};function u(e,t){switch(t.type){case c.REGISTER_TOP_NAV_LINK:return{...e,topNavLinks:d(e.topNavLinks,t.payload)};case c.REGISTER_ROUTE:return{...e,routes:d(e.routes,t.payload)};default:return e}}function d(e,t){let n=e.findIndex(e=>e.id===t.id);if(-1===n)return[...e,t];let o=[...e];return o[n]=t,o}let h=new Map;async function f(){try{let e=await l.x.get("/api/plugins");if(!e.ok)return console.warn("[SkyDashboardPlugin] Failed to fetch plugin manifest:",e.status,e.statusText),[];let t=await e.json();if(!t||!Array.isArray(t.plugins))return[];return console.log("Plugin manifest:",t.plugins),t.plugins}catch(e){return console.warn("[SkyDashboardPlugin] Error fetching plugin manifest:",e),[]}}function p(e){let{children:t}=e,[n,l]=(0,r.useReducer)(u,a);(0,r.useEffect)(()=>{let e=!1,t={registerTopNavLink(e){var t,n;let o=e&&e.id&&e.label&&e.href?{id:String(e.id),label:String(e.label),href:String(e.href),order:Number.isFinite(e.order)?e.order:0,group:e.group?String(e.group):null,target:"_blank"===e.target?"_blank":"_self",rel:null!==(t=e.rel)&&void 0!==t?t:"_blank"===e.target||/^https?:\/\//.test(String(e.href))?"noopener noreferrer":void 0,external:null!==(n=e.external)&&void 0!==n?n:/^(https?:)?\/\//.test(String(e.href))||"_blank"===e.target,badge:"string"==typeof e.badge?e.badge:null,icon:"string"==typeof e.icon?e.icon:null,description:"string"==typeof e.description?e.description:void 0}:(console.warn("[SkyDashboardPlugin] Invalid top nav link registration:",e),null);return o?(l({type:c.REGISTER_TOP_NAV_LINK,payload:o}),o.id):null},registerRoute(e){let t=function(e){if(!e||"object"!=typeof e||!e.id||!e.path||"function"!=typeof e.mount)return console.warn("[SkyDashboardPlugin] Invalid route registration:",e),null;let t=String(e.path),n=t.startsWith("/")?t:"/".concat(t);return{id:String(e.id),path:n,title:"string"==typeof e.title?e.title:void 0,description:"string"==typeof e.description?e.description:void 0,mount:e.mount,unmount:"function"==typeof e.unmount?e.unmount:void 0,context:e.context&&"object"==typeof e.context?e.context:void 0}}(e);return t?(l({type:c.REGISTER_ROUTE,payload:t}),t.id):null},getContext:()=>({basePath:i.GW,apiEndpoint:i.f4})};return window.SkyDashboardPluginAPI=t,window.dispatchEvent(new CustomEvent("skydashboard:plugins-ready",{detail:t})),(async()=>{let t=await f();e||t.map(e=>e&&"object"==typeof e&&e.js_extension_path?(console.log("Extracting JS extension path:",e.js_extension_path),e.js_extension_path):null).filter(Boolean).forEach(t=>{e||function(e){let t=function(e){if(!e||"string"!=typeof e)return null;if(/^https?:\/\//.test(e))return e;try{return new URL(e,window.location.origin).toString()}catch(t){return console.warn("[SkyDashboardPlugin] Failed to resolve plugin script path:",e,t),null}}(e);if(!t)return;if(h.has(t))return h.get(t);console.log("Loading plugin script:",t);let n=new Promise(e=>{let n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=t,n.onload=()=>e(),n.onerror=n=>{console.warn("[SkyDashboardPlugin] Failed to load plugin script:",t,n),e()},document.head.appendChild(n)});h.set(t,n)}(t)})})(),()=>{e=!0,window.SkyDashboardPluginAPI===t&&delete window.SkyDashboardPluginAPI}},[]);let d=(0,r.useMemo)(()=>n,[n]);return(0,o.jsx)(s.Provider,{value:d,children:t})}function m(){return(0,r.useContext)(s)}function g(){let{topNavLinks:e}=m();return(0,r.useMemo)(()=>{let t=[...e].sort((e,t)=>e.order-t.order);return{ungrouped:t.filter(e=>!e.group),groups:t.filter(e=>e.group).reduce((e,t)=>{let n=t.group;return e[n]||(e[n]=[]),e[n].push(t),e},{})}},[e])}function y(){let{routes:e}=m();return e}function b(e){let t=y();return(0,r.useMemo)(()=>e&&t.find(t=>t.path===e)||null,[e,t])}},36501:function(){},77663:function(e){!function(){var t={229:function(e){var t,n,o,r=e.exports={};function i(){throw Error("setTimeout has not been defined")}function l(){throw Error("clearTimeout has not been defined")}function s(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{n="function"==typeof clearTimeout?clearTimeout:l}catch(e){n=l}}();var a=[],c=!1,u=-1;function d(){c&&o&&(c=!1,o.length?a=o.concat(a):u=-1,a.length&&h())}function h(){if(!c){var e=s(d);c=!0;for(var t=a.length;t;){for(o=a,a=[];++u<t;)o&&o[u].run();u=-1,t=a.length}o=null,c=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===l||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function f(e,t){this.fun=e,this.array=t}function p(){}r.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];a.push(new f(e,t)),1!==a.length||c||s(h)},f.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={},r.on=p,r.addListener=p,r.once=p,r.off=p,r.removeListener=p,r.removeAllListeners=p,r.emit=p,r.prependListener=p,r.prependOnceListener=p,r.listeners=function(e){return[]},r.binding=function(e){throw Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw Error("process.chdir is not supported")},r.umask=function(){return 0}}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var i=n[e]={exports:{}},l=!0;try{t[e](i,i.exports,o),l=!1}finally{l&&delete n[e]}return i.exports}o.ab="//";var r=o(229);e.exports=r}()},5152:function(e,t,n){e.exports=n(19606)},11163:function(e,t,n){e.exports=n(26036)},92703:function(e,t,n){"use strict";var o=n(50414);function r(){}function i(){}i.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,i,l){if(l!==o){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return n.PropTypes=n,n}},45697:function(e,t,n){e.exports=n(92703)()},50414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}},function(e){var t=function(t){return e(e.s=t)};e.O(0,[9774,179],function(){return t(91118),t(26036)}),_N_E=e.O()}]);
@@ -0,0 +1,16 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9826,2350],{94966:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters/[cluster]/[job]",function(){return s(50190)}])},27325:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
2
+ * @license lucide-react v0.407.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */let a=(0,s(60998).Z)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},16826:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
7
+ * @license lucide-react v0.407.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */let a=(0,s(60998).Z)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]])},13626:function(e,t,s){"use strict";s.d(t,{Z:function(){return a}});/**
12
+ * @license lucide-react v0.407.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */let a=(0,s(60998).Z)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},99307:function(e,t,s){"use strict";s.d(t,{Cl:function(){return l},OE:function(){return d}});var a=s(85893);s(67294);var r=s(55739),n=s(36989),c=s(53850);let l=e=>{switch(e){case"LAUNCHING":return"bg-blue-100 text-sky-blue";case"RUNNING":case"IN_USE":case"READY":return"bg-green-50 text-green-700";case"STOPPED":return"bg-yellow-100 text-yellow-800";case"TERMINATED":case"PENDING":case"UNKNOWN":default:return"bg-gray-100 text-gray-800";case"SUCCEEDED":case"PROVISIONING":case"CONTROLLER_INIT":case"REPLICA_INIT":return"bg-blue-50 text-blue-700";case"FAILED":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":return"bg-red-50 text-red-700";case"CANCELLED":case"CANCELLING":case"NOT_READY":return"bg-yellow-50 text-yellow-700";case"RECOVERING":case"SHUTTING_DOWN":return"bg-orange-50 text-orange-700";case"SUBMITTED":return"bg-indigo-50 text-indigo-700";case"STARTING":return"bg-cyan-50 text-cyan-700";case"FAILED_SETUP":return"bg-pink-50 text-pink-700";case"PREEMPTED":case"NO_REPLICA":return"bg-purple-50 text-purple-700"}},o=e=>{switch(e){case"LAUNCHING":case"STARTING":case"PROVISIONING":case"SHUTTING_DOWN":return(0,a.jsx)(r.Z,{size:12,className:"w-3 h-3 mr-1"});case"RUNNING":case"IN_USE":default:return(0,a.jsx)(c.W2,{className:"w-3 h-3 mr-1"});case"STOPPED":case"PREEMPTED":return(0,a.jsx)(c.fp,{className:"w-3 h-3 mr-1"});case"TERMINATED":case"FAILED":case"CANCELLED":case"FAILED_INITIAL_DELAY":case"FAILED_PROBING":case"FAILED_PROVISION":case"FAILED_CLEANUP":case"CONTROLLER_FAILED":case"UNKNOWN":return(0,a.jsx)(c.Ps,{className:"w-3 h-3 mr-1"});case"SUCCEEDED":return(0,a.jsx)(c.Ye,{className:"w-3 h-3 mr-1"});case"PENDING":case"RECOVERING":case"SUBMITTED":case"CANCELLING":case"FAILED_SETUP":case"FAILED_PRECHECKS":case"FAILED_NO_RESOURCE":case"FAILED_CONTROLLER":case"READY":case"NOT_READY":case"CONTROLLER_INIT":case"REPLICA_INIT":case"NO_REPLICA":return(0,a.jsx)(c.J$,{className:"w-3 h-3 mr-1"})}},i=e=>{let t=l(e),s=o(e);return(0,a.jsxs)("span",{className:"".concat("inline-flex items-center px-2 py-1 rounded-full text-sm"," ").concat(t),children:[s,e]})},d=e=>{let{status:t}=e;return(0,a.jsx)(n.WH,{content:t,className:"text-muted-foreground text-sm",children:(0,a.jsx)("span",{children:i(t)})})}},20546:function(e,t,s){"use strict";s.d(t,{H:function(){return d}});var a=s(85893);s(67294);var r=s(41664),n=s.n(r),c=s(45697),l=s.n(c);function o(e){return!!e&&"string"==typeof e&&e.toLowerCase().startsWith("sa-")}let i=()=>(0,a.jsx)("span",{className:"px-2 py-0.5 text-xs bg-blue-100 text-blue-700 rounded font-medium ml-1",children:"SA"}),d=e=>{let{username:t,userHash:s,className:r="flex items-center gap-1",linkClassName:c="text-gray-700 hover:text-blue-600 hover:underline",showBadge:l=!0}=e,d=o(s),u=o(s)?"/users?tab=service-accounts":"/users";return(0,a.jsxs)("div",{className:r,children:[(0,a.jsx)(n(),{href:u,className:c,children:t}),l&&d&&(0,a.jsx)(i,{})]})};d.propTypes={username:l().string.isRequired,userHash:l().string,className:l().string,linkClassName:l().string,showBadge:l().bool}},37673:function(e,t,s){"use strict";s.d(t,{Ol:function(){return i},Zb:function(){return o},aY:function(){return h},ll:function(){return d}});var a=s(85893),r=s(67294),n=s(45697),c=s.n(n),l=s(32350);let o=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s),...n,children:r})});o.displayName="Card",o.propTypes={className:c().string,children:c().node};let i=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",s),...n,children:r})});i.displayName="CardHeader",i.propTypes={className:c().string,children:c().node};let d=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("h3",{ref:t,className:(0,l.cn)("text-2xl font-semibold leading-none tracking-tight",s),...n,children:r})});d.displayName="CardTitle",d.propTypes={className:c().string,children:c().node};let u=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("p",{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",s),...n,children:r})});u.displayName="CardDescription",u.propTypes={className:c().string,children:c().node};let h=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("p-6 pt-0",s),...n,children:r})});h.displayName="CardContent",h.propTypes={className:c().string,children:c().node};let m=r.forwardRef((e,t)=>{let{className:s,children:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,l.cn)("flex items-center p-6 pt-0",s),...n,children:r})});m.displayName="CardFooter",m.propTypes={className:c().string,children:c().node}},23266:function(e,t,s){"use strict";s.d(t,{GH:function(){return h},QL:function(){return f},Sl:function(){return u},getClusters:function(){return i},uR:function(){return d}});var a=s(67294),r=s(15821),n=s(47145),c=s(93225),l=s(6378);let o={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function i(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await n.x.fetch("/status",{cluster_names:e,all_users:!0,include_credentials:!1,include_handle:!1,summary_response:null==e})).map(e=>{let t="",s=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let s=Math.floor((t-3)/2),a=s+(t-3)%2;return 0===s?e.substring(0,a)+"...":e.substring(0,a)+"..."+e.substring(e.length-s)}(t,25)),{status:o[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:s?"".concat(e.cloud," (").concat(s,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,cluster_name_on_cloud:e.cluster_name_on_cloud,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){throw console.error("Error fetching clusters:",e),e}}async function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30;try{let s={days:t,dashboard_summary_response:!0};e&&(s.cluster_hashes=[e]);let a=await n.x.fetch("/cost_report",s);console.log("Raw cluster history data:",a);let r=a.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let s=e.user_name||"-";return{status:e.status?o[e.status]:"TERMINATED",cluster:e.name,user:s,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,last_event:e.last_event,to_down:!1,cluster_name_on_cloud:null,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",r),r}catch(e){throw console.error("Error fetching cluster history:",e),e}}async function u(e){let{clusterName:t,jobId:s,onNewLog:a,workspace:c}=e;try{await n.x.stream("/logs",{follow:!1,cluster_name:t,job_id:s,tail:1e4,override_skypilot_config:{active_workspace:c||"default"}},a)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,r.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function h(e){let{clusterName:t,jobIds:s=null,workspace:a}=e;try{let e=await n.x.fetch("/download_logs",{cluster_name:t,job_ids:s?s.map(String):null,override_skypilot_config:{active_workspace:a||"default"}}),l=Object.values(e||{});if(!l.length){(0,r.C)("No logs found to download.","warning");return}let o=window.location.origin,i="".concat(o).concat(c.f4,"/download"),d=await fetch("".concat(i,"?relative=items"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_paths:l})});if(!d.ok){let e=await d.text();throw Error("Download failed: ".concat(d.status," ").concat(e))}let u=await d.blob(),h=window.URL.createObjectURL(u),m=document.createElement("a"),f=new Date().toISOString().replace(/[:.]/g,"-"),g=s&&1===s.length?"job-".concat(s[0]):"jobs";m.href=h,m.download="".concat(t,"-").concat(g,"-logs-").concat(f,".zip"),document.body.appendChild(m),m.click(),m.remove(),window.URL.revokeObjectURL(h)}catch(e){console.error("Error downloading logs:",e),(0,r.C)("Error downloading logs: ".concat(e.message),"error")}}async function m(e){let{clusterName:t,workspace:s}=e;try{return(await n.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:s}})).map(e=>{var a;let r=e.end_at?e.end_at:Date.now()/1e3,n=0,c=0;return e.submitted_at&&(n=r-e.submitted_at),e.start_at&&(c=r-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:n,job_duration:c,infra:"",logs:"",workspace:s||"default",git_commit:(null===(a=e.metadata)||void 0===a?void 0:a.git_commit)||"-"}})}catch(e){throw console.error("Error fetching cluster jobs:",e),e}}function f(e){let{cluster:t,job:s=null}=e,[r,n]=(0,a.useState)(null),[c,o]=(0,a.useState)(null),[d,u]=(0,a.useState)(!0),[h,f]=(0,a.useState)(!0),g=(0,a.useCallback)(async()=>{if(t)try{u(!0);let e=await l.default.get(i,[{clusterNames:[t]}]);if(e.length>0)return n(e[0]),e[0];return console.error("No cluster data found for cluster:",t),null}catch(e){console.error("Error fetching cluster data:",e)}finally{u(!1)}return null},[t]),x=(0,a.useCallback)(async e=>{if(t)try{f(!0);let s=await l.default.get(m,[{clusterName:t,workspace:e||"default"}]);o(s)}catch(e){console.error("Error fetching cluster job data:",e)}finally{f(!1)}},[t]),N=(0,a.useCallback)(async()=>{l.default.invalidate(i,[{clusterNames:[t]}]);let e=await g();e&&(l.default.invalidate(m,[{clusterName:t,workspace:e.workspace||"default"}]),await x(e.workspace))},[g,x,t]),b=(0,a.useCallback)(async()=>{r&&(l.default.invalidate(m,[{clusterName:t,workspace:r.workspace||"default"}]),await x(r.workspace))},[x,r,t]);return(0,a.useEffect)(()=>{(async()=>{let e=await g();e&&x(e.workspace)})()},[t,s,g,x]),{clusterData:r,clusterJobData:c,loading:d,clusterDetailsLoading:d,clusterJobsLoading:h,refreshData:N,refreshClusterJobsOnly:b}}},15821:function(e,t,s){"use strict";function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e3,a=document.getElementById("toast-container");a||((a=document.createElement("div")).id="toast-container",a.className="fixed top-0 right-0 p-4 z-[9999] flex flex-col items-end space-y-2",document.body.appendChild(a));let r=document.createElement("div");switch(r.className="rounded-md border-l-4 p-4 shadow-md flex items-center justify-between max-w-md w-full mb-2 pointer-events-auto",t){case"success":r.className+=" bg-green-100 border-green-500 text-green-800";break;case"error":r.className+=" bg-red-100 border-red-500 text-red-800";break;case"warning":r.className+=" bg-yellow-100 border-yellow-500 text-yellow-800";break;default:r.className+=" bg-blue-100 border-blue-500 text-blue-800"}return r.innerHTML='\n <div class="flex-1 mr-2">\n <p class="text-sm font-medium">'.concat(e,'</p>\n </div>\n <button class="text-gray-500 hover:text-gray-700 focus:outline-none" aria-label="Close toast">\n <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n <line x1="18" y1="6" x2="6" y2="18"></line>\n <line x1="6" y1="6" x2="18" y2="18"></line>\n </svg>\n </button>\n '),a.appendChild(r),r.querySelector("button").addEventListener("click",()=>{a.removeChild(r)}),setTimeout(()=>{a.contains(r)&&a.removeChild(r)},s),r}s.d(t,{C:function(){return a}})},6378:function(e,t,s){"use strict";s.r(t),s.d(t,{DashboardCache:function(){return n},dashboardCache:function(){return c}});let a=s(51214).ej.DEFAULT_TTL;function r(e){let t=5381;for(let s=0;s<e.length;s++)t=(t<<5)+t+e.charCodeAt(s);return t>>>0}class n{setPreloader(e){this.preloader=e}async get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=s.ttl||a,n=!1!==s.refreshOnAccess,c=this._generateKey(e,t),l=e.name||"anonymous",o=this.cache.get(c),i=Date.now();if(o&&i-o.lastUpdated<r){let s=Math.round((i-o.lastUpdated)/1e3);if(this._debug("Cache HIT for ".concat(l," (age: ").concat(s,"s, TTL: ").concat(Math.round(r/1e3),"s)")),n&&(this.cache.set(c,{data:o.data,lastUpdated:i}),this._debug("Cache TTL refreshed for ".concat(l))),!this.backgroundJobs.has(c)){var d;(null===(d=this.preloader)||void 0===d?void 0:d.wasRecentlyPreloaded(e,t))?this._debug("Skipping background refresh for ".concat(l," - recently preloaded")):this._refreshInBackground(e,t,c)}return o.data}if(this.pendingRequests.has(c))return this._debug("Request deduplication: Waiting for pending request for ".concat(l)),this.pendingRequests.get(c);let u=(async()=>{try{let s=await e(...t);if(s&&s.__skipCache){if(this._debug("Skip caching for ".concat(l," due to __skipCache flag on result")),o)return o.data;return s}return this.cache.set(c,{data:s,lastUpdated:Date.now()}),s}catch(e){if(o)return console.warn("Failed to fetch fresh data for ".concat(c,"/").concat(l,", returning stale data:"),e),o.data;throw e}finally{this.pendingRequests.delete(c)}})();return this.pendingRequests.set(c,u),u}invalidate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],s=this._generateKey(e,t);this.cache.delete(s),this.backgroundJobs.delete(s),this.pendingRequests.delete(s)}invalidateFunction(e){let t=r(e.toString()),s=[];for(let e of this.cache.keys())e.startsWith("".concat(t,"_"))&&s.push(e);s.forEach(e=>{this.cache.delete(e),this.backgroundJobs.delete(e),this.pendingRequests.delete(e)})}clear(){this.cache.clear(),this.backgroundJobs.clear(),this.pendingRequests.clear()}getStats(){return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,pendingRequests:this.pendingRequests.size,keys:Array.from(this.cache.keys())}}getDetailedStats(){let e=Date.now(),t=[];for(let[s,a]of this.cache.entries()){let r=e-a.lastUpdated;t.push({key:s,age:Math.round(r/1e3),lastUpdated:new Date(a.lastUpdated).toISOString(),hasBackgroundJob:this.backgroundJobs.has(s),hasPendingRequest:this.pendingRequests.has(s)})}return{cacheSize:this.cache.size,backgroundJobs:this.backgroundJobs.size,pendingRequests:this.pendingRequests.size,entries:t.sort((e,t)=>e.age-t.age)}}setDebugMode(e){this.debugMode=e}_debug(e){for(var t=arguments.length,s=Array(t>1?t-1:0),a=1;a<t;a++)s[a-1]=arguments[a];this.debugMode&&console.log("[DashboardCache] ".concat(e),...s)}_refreshInBackground(e,t,s){this.backgroundJobs.set(s,!0),e(...t).then(e=>{e&&e.__skipCache||this.cache.set(s,{data:e,lastUpdated:Date.now()})}).catch(e=>{console.warn("Background refresh failed for ".concat(s,":"),e)}).finally(()=>{this.backgroundJobs.delete(s)})}_generateKey(e,t){let s=r(e.toString()),a=t.length>0?JSON.stringify(t):"";return"".concat(s,"_").concat(a)}constructor(){this.cache=new Map,this.backgroundJobs=new Map,this.pendingRequests=new Map,this.debugMode=!1,this.preloader=null}}let c=new n;t.default=c},32350:function(e,t,s){"use strict";s.d(t,{cn:function(){return n}});var a=s(90512),r=s(98388);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,r.m6)((0,a.W)(t))}},50190:function(e,t,s){"use strict";s.r(t),s.d(t,{JobDetailPage:function(){return j}});var a=s(85893),r=s(67294);s(9353);var n=s(37673),c=s(41664),l=s.n(c),o=s(11163),i=s(23266),d=s(36989),u=s(13626),h=s(16826),m=s(55739),f=s(99307),g=s(23001),x=s(9008),N=s.n(x),b=s(20546),p=s(70282),_=s(27325);function y(e){let{cluster:t,job:s,jobData:r,onRefresh:n,isRefreshing:c,loading:o}=e,i=(0,g.X)();return(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,a.jsxs)("div",{className:"text-base flex items-center",children:[(0,a.jsx)(l(),{href:"/clusters",className:"text-sky-blue hover:underline",children:"Sky Clusters"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)(l(),{href:"/clusters/".concat(t),className:"text-sky-blue hover:underline",children:t}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsxs)(l(),{href:"/clusters/".concat(t,"/").concat(s),className:"text-sky-blue hover:underline",children:[s,r.job&&"-"!=r.job?" (".concat(r.job,")"):""]})]}),(0,a.jsxs)("div",{className:"flex items-center",children:[(o||c)&&(0,a.jsxs)("div",{className:"flex items-center mr-2",children:[(0,a.jsx)(m.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"text-sm ml-2 text-gray-500",children:"Loading..."})]}),(0,a.jsx)(d.WH,{content:"Refresh",className:"text-muted-foreground",children:(0,a.jsxs)("button",{onClick:n,disabled:o||c,className:"text-sm text-sky-blue hover:text-sky-blue-bright font-medium mx-2 flex items-center",children:[(0,a.jsx)(u.Z,{className:"w-4 h-4 mr-1.5"}),!i&&(0,a.jsx)("span",{children:"Refresh"})]})})]})]})}function j(){let e=(0,o.useRouter)(),{cluster:t,job:s}=e.query,{clusterData:c,clusterJobData:g,loading:x,refreshData:j}=(0,i.QL)({cluster:t}),[w,v]=(0,r.useState)(!1),[E,k]=(0,r.useState)(!0),[I,C]=(0,r.useState)(!1),[R,D]=(0,r.useState)(""),[L,T]=(0,r.useState)(!1),[S,A]=(0,r.useState)(!1),O=(0,r.useMemo)(()=>["INIT","PENDING","SETTING_UP"],[]),P=(0,r.useMemo)(()=>{if(!g||!s)return!0;let e=g.find(e=>e.id==s);return e&&O.includes(e.status)},[g,s,O]);r.useEffect(()=>{!x&&E&&k(!1)},[x,E]),(0,r.useEffect)(()=>{let e=!0;return t&&s&&!P?(C(!0),(0,i.Sl)({clusterName:t,jobId:s,onNewLog:t=>{e&&D(e=>{let s=t.split("\n").filter(e=>e.trim()),a=e;for(let e of s){let t=(0,d.Zn)(e);if(/\d+%\s*\|/.test(t)){let e=t.match(/^\(([^)]+)\)/);if(e&&a){let s=a.split("\n"),r=!1;for(let n=s.length-1;n>=0;n--){let c=s[n];if(/\d+%\s*\|/.test(c)){let l=c.match(/^\(([^)]+)\)/);if(l&&l[1]===e[1]){s[n]=t,a=s.join("\n"),r=!0;break}}}r||(a+=(a?"\n":"")+t)}else a+=(a?"\n":"")+t}else a+=(a?"\n":"")+t}return a})},workspace:null==c?void 0:c.workspace}).then(()=>{e&&C(!1)}).catch(t=>{e&&(console.error("Error streaming logs:",t),C(!1))})):C(!1),()=>{e=!1}},[t,s,L,P,c]);let U=async()=>{v(!0),T(e=>!e),D("");try{j&&await j()}catch(e){console.error("Error refreshing data:",e)}finally{v(!1)}};if(!e.isReady)return(0,a.jsx)("div",{children:"Loading..."});let F={id:s};if(c&&g){let e=g.find(e=>e.id==s);e&&(F={...e,infra:c.infra,cluster:c.cluster,user:c.user,user_hash:c.user_hash})}let M=t&&s?"Job: ".concat(s," @ ").concat(t," | SkyPilot Dashboard"):"Job Details | SkyPilot Dashboard";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(N(),{children:(0,a.jsx)("title",{children:M})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y,{cluster:t,job:s,jobData:F,onRefresh:U,isRefreshing:w,loading:x}),x&&E?(0,a.jsxs)("div",{className:"flex items-center justify-center h-64",children:[(0,a.jsx)(m.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]}):(0,a.jsxs)("div",{className:"space-y-8",children:[(0,a.jsx)("div",{id:"details",children:(0,a.jsxs)(n.Zb,{children:[(0,a.jsx)("div",{className:"flex items-center justify-between px-4 pt-4",children:(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Details"})}),(0,a.jsx)("div",{className:"p-4",children:(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job ID"}),(0,a.jsx)("div",{className:"text-base mt-1",children:F.id})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Job Name"}),(0,a.jsx)("div",{className:"text-base mt-1",children:F.job})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Status"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(f.OE,{status:F.status})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"User"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(b.H,{username:F.user,userHash:F.user_hash})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Submitted"}),(0,a.jsx)("div",{className:"text-base mt-1",children:F.submitted_at?(0,d.xn)(F.submitted_at):"N/A"})]}),F.resources&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Requested Resources"}),(0,a.jsx)("div",{className:"text-base mt-1",children:F.resources||"N/A"})]}),F.cluster&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cluster"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(l(),{href:"/clusters/".concat(F.cluster),className:"text-sky-blue hover:underline",children:F.cluster})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Git Commit"}),(0,a.jsx)("div",{className:"text-base mt-1 flex items-center",children:F.git_commit&&"-"!==F.git_commit?(0,a.jsxs)("span",{className:"flex items-center mr-2",children:[F.git_commit,(0,a.jsx)(d.WH,{content:S?"Copied!":"Copy commit",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:async()=>{await navigator.clipboard.writeText(F.git_commit),A(!0),setTimeout(()=>A(!1),2e3)},className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:S?(0,a.jsx)(p.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(_.Z,{className:"w-4 h-4"})})})]}):(0,a.jsx)("span",{className:"text-gray-400",children:"-"})})]})]})})]})}),(0,a.jsx)("div",{id:"logs",className:"mt-6",children:(0,a.jsxs)(n.Zb,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-4 pt-4",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Logs"}),(0,a.jsx)("span",{className:"ml-2 text-xs text-gray-500",children:"(Logs are not streaming; click refresh to fetch the latest logs.)"})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,a.jsx)(d.WH,{content:"Download full logs",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:()=>(0,i.GH)({clusterName:t,jobIds:s?[s]:null,workspace:null==c?void 0:c.workspace}),className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:(0,a.jsx)(h.Z,{className:"w-4 h-4"})})}),(0,a.jsx)(d.WH,{content:"Refresh logs",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:()=>{T(e=>!e),D("")},disabled:I,className:"text-sky-blue hover:text-sky-blue-bright flex items-center",children:(0,a.jsx)(u.Z,{className:"w-4 h-4 ".concat(I?"animate-spin":"")})})})]})]}),(0,a.jsx)("div",{className:"p-4",children:P?(0,a.jsx)("div",{className:"bg-[#f7f7f7] flex items-center justify-center py-4 text-gray-500",children:(0,a.jsx)("span",{children:"Waiting for the job to start; refresh in a few moments."})}):I?(0,a.jsxs)("div",{className:"flex items-center justify-center py-4",children:[(0,a.jsx)(m.Z,{size:20,className:"mr-2"}),(0,a.jsx)("span",{children:"Loading..."})]}):(0,a.jsx)("div",{className:"max-h-96 overflow-y-auto",children:(0,a.jsx)(d.$B,{logs:R})})})]})})]})]})]})}t.default=j},9008:function(e,t,s){e.exports=s(37219)}},function(e){e.O(0,[616,5739,6130,7411,6989,3850,9353,2888,9774,179],function(){return e(e.s=94966)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[722],{58706:function(e,t,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters/[cluster]",function(){return s(56996)}])},1125:function(e,t,s){"use strict";s.d(t,{C:function(){return c}});var a=s(85893),r=s(67294),l=s(34209),n=s(84283);let i=e=>{if(!e||"string"!=typeof e)return e;let t=e.split("\n"),s=[];for(let e=0;e<t.length;e++){let a=t[e];if(""===a.trim()){let r=!1,l=0;for(let s=e-1;s>=0;s--){let e=t[s],a=e.trim();if(a&&e.match(/:\s*[|>]\s*$/)){r=!0;for(let e=s+1;e<t.length;e++){let s=t[e];if(s.trim()){l=s.search(/\S/);break}}break}if(a&&0===e.search(/\S/))break}if(r)for(let r=e+1;r<t.length;r++){let e=t[r];if(e.trim()){e.search(/\S/)>=l?s.push(" #YAML_BLANK_LINE_MARKER#"):s.push(a);break}}else s.push(a)}else s.push(a)}return s.join("\n")};function c(e){let{children:t,className:s=""}=e,c=(0,r.useRef)(null),o=i(t);(0,r.useEffect)(()=>{if(c.current){let e=c.current;setTimeout(()=>{let t;let s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null);for(;t=s.nextNode();)t.textContent&&t.textContent.includes("#YAML_BLANK_LINE_MARKER#")&&(t.textContent=t.textContent.replace(/#YAML_BLANK_LINE_MARKER#/g,""))},0)}},[o]);let d={...n.mQ,'code[class*="language-"]':{...n.mQ['code[class*="language-"]'],whiteSpace:"pre !important"},'pre[class*="language-"]':{...n.mQ['pre[class*="language-"]'],whiteSpace:"pre !important"}};return(0,a.jsx)("div",{ref:c,className:s,children:(0,a.jsx)(l.Z,{language:"yaml",style:d,customStyle:{margin:0,padding:0,background:"transparent",fontSize:"0.875rem",fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace'},wrapLines:!0,wrapLongLines:!0,showLineNumbers:!1,useInlineStyles:!0,children:o})})}},84303:function(e,t,s){"use strict";s.d(t,{_q:function(){return l},pJ:function(){return c}});var a=s(1272);let r={lineWidth:-1,quotingType:"'",forceQuotes:!1,noRefs:!0,sortKeys:!1,condenseFlow:!1,indent:2},l=e=>{if(!e)return"No YAML available";try{let t=a.ZP.load(e),s=a.ZP.dump(t,r).split("\n"),l=[],n=-1;for(let e=0;e<s.length;e++){let t=s[e],a=t.search(/\S/);0===a&&n>=0&&e>0&&l.push(""),l.push(t),n=a}return l.join("\n").trim()}catch(t){return console.error("YAML formatting error:",t),e}},n=e=>"string"==typeof e?e.substring(0,50)+"...":e&&e.name?"name: ".concat(e.name):e&&e.resources?"Task configuration":"YAML document",i=(e,t)=>{try{let s=a.ZP.load(e),l=a.ZP.dump(s,r).split("\n"),i=[],c=-1;for(let e=0;e<l.length;e++){let t=l[e],s=t.search(/\S/);0===s&&c>=0&&e>0&&i.push(""),i.push(t),c=s}return{index:t,content:i.join("\n").trim(),preview:n(s)}}catch(s){return console.error("YAML formatting error for document ".concat(t,":"),s),{index:t,content:e,preview:"Invalid YAML"}}},c=e=>{if(!e)return[];try{let t=[],s=e.split(/^---$/m);for(let e=0;e<s.length;e++){let a=s[e].trim();a&&""!==a&&t.push(a)}return(t.length>1?t.slice(1):t).map((e,t)=>i(e,t))}catch(t){return console.error("YAML formatting error:",t),[{index:0,content:e,preview:"Invalid YAML"}]}}},56996:function(e,t,s){"use strict";s.r(t);var a=s(85893),r=s(67294),l=s(55739),n=s(47615),i=s(11163);s(9353);var c=s(41664),o=s.n(c),d=s(39037),u=s(99307);s(37673);var m=s(23266),x=s(6378),h=s(13626),f=s(70282),g=s(27325),v=s(45895),j=s(6639);s(1272);var b=s(36989),p=s(17853),N=s(92128),y=s(23001),_=s(9008),w=s.n(_),S=s(84303),C=s(20546),k=s(1125);let M=(e,t)=>{let s="",a="";return e>=0&&(s=e+"m",a=" "),t&&(s+="".concat(a,"(down)")),""===s&&(s="-"),s};function L(e){var t,s,l,i;let{clusterData:c,clusterJobData:d,clusterJobsLoading:m,refreshClusterJobsOnly:x,isVSCodeModalOpen:h,setIsVSCodeModalOpen:p,timeRange:N,handleTimeRangePreset:y,buildGrafanaMetricsUrl:_,matchedClusterName:w,isLoadingClusterMatch:L,isGrafanaAvailable:A,isHistoricalCluster:E=!1}=e,[R,T]=(0,r.useState)(!1),[O,P]=(0,r.useState)(!1),[I,Z]=(0,r.useState)(!1),U=async()=>{try{let e=c.task_yaml||c.last_creation_yaml,t=(0,S._q)(e);await navigator.clipboard.writeText(t),P(!0),setTimeout(()=>P(!1),2e3)}catch(e){console.error("Failed to copy YAML to clipboard:",e)}},Y=async()=>{try{let e=c.command||c.last_creation_command;await navigator.clipboard.writeText(e),Z(!0),setTimeout(()=>Z(!1),2e3)}catch(e){console.error("Failed to copy command to clipboard:",e)}},D=(null==c?void 0:c.last_creation_command)||(null==c?void 0:c.last_creation_yaml)||(null==c?void 0:c.command)||(null==c?void 0:c.task_yaml);return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"mb-6",children:(0,a.jsxs)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm",children:[(0,a.jsx)("div",{className:"flex items-center justify-between px-4 pt-4",children:(0,a.jsx)("h3",{className:"text-lg font-semibold",children:E?"Historical Cluster Details":"Details"})}),(0,a.jsx)("div",{className:"p-4",children:(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Status"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(u.OE,{status:c.status})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cluster"}),(0,a.jsx)("div",{className:"text-base mt-1",children:c.cluster_name_on_cloud?(0,a.jsx)(b.Md,{content:"Name on ".concat(c.cloud||(null===(s=c.infra)||void 0===s?void 0:null===(t=s.split("(")[0])||void 0===t?void 0:t.trim())||"cloud",": ").concat(c.cluster_name_on_cloud),className:"text-sm text-muted-foreground",children:(0,a.jsx)("span",{className:"border-b border-dotted border-gray-400 cursor-help",children:c.cluster||c.name})}):c.cluster||c.name})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"User"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(C.H,{username:c.user,userHash:c.user_hash})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:E?"Cloud":"Infra"}),(0,a.jsx)("div",{className:"text-base mt-1",children:E?c.cloud||"N/A":c.infra?(0,a.jsx)(b.Md,{content:c.full_infra||c.infra,className:"text-sm text-muted-foreground",children:(0,a.jsxs)("span",{children:[(0,a.jsx)(o(),{href:"/infra",className:"text-blue-600 hover:underline",children:c.cloud||c.infra.split("(")[0].trim()}),c.infra.includes("(")&&(0,a.jsx)("span",{children:" "+c.infra.substring(c.infra.indexOf("("))})]})}):"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Resources"}),(0,a.jsx)("div",{className:"text-base mt-1",children:c.resources_str_full||c.resources_str||"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Started"}),(0,a.jsx)("div",{className:"text-base mt-1",children:c.time?(0,b.xn)(new Date(c.time)):"N/A"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Last Event"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(0,a.jsx)(b.Md,{content:c.last_event||"-",className:"text-sm text-muted-foreground",children:(0,a.jsx)("span",{children:c.last_event||"-"})})})]}),E?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Duration"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(e=>{if(!e||0===e)return"-";let t=e=Math.floor(e),s="",a=0;for(let e of[{value:31536e3,label:"y"},{value:2592e3,label:"mo"},{value:86400,label:"d"},{value:3600,label:"h"},{value:60,label:"m"},{value:1,label:"s"}])if(t>=e.value&&a<2){let r=Math.floor(t/e.value);s+="".concat(r).concat(e.label," "),t%=e.value,a++}return s.trim()||"0s"})(c.duration)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Cost"}),(0,a.jsx)("div",{className:"text-base mt-1",children:(e=>{if(null==e||0===e)return"-";let t=Number(e);return isNaN(t)?"-":"$".concat(t.toFixed(2))})(c.total_cost)})]})]}):(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Autostop"}),(0,a.jsx)("div",{className:"text-base mt-1",children:M(c.autostop,c.to_down)})]}),D&&(0,a.jsxs)("div",{className:"col-span-2",children:[(c.command||c.last_creation_command)&&(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)("div",{className:"text-gray-600 font-medium text-base",children:"Entrypoint"}),c.command&&(0,a.jsx)(b.WH,{content:I?"Copied!":"Copy command",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:Y,className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:I?(0,a.jsx)(f.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(g.Z,{className:"w-4 h-4"})})})]}),(0,a.jsxs)("div",{className:"space-y-4 mt-3",children:[(c.command||c.last_creation_command)&&(0,a.jsx)("div",{children:(0,a.jsx)("div",{className:"bg-gray-50 border border-gray-200 rounded-md p-3",children:(0,a.jsx)("code",{className:"text-sm text-gray-800 font-mono break-all",children:c.command||c.last_creation_command})})}),(c.task_yaml||c.last_creation_yaml)&&"{}"!==c.task_yaml&&"{}"!==c.last_creation_yaml&&!(null===(l=c.cluster||c.name)||void 0===l?void 0:l.startsWith("sky-jobs-controller-"))&&!(null===(i=c.cluster||c.name)||void 0===i?void 0:i.startsWith("sky-serve-controller-"))&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center mb-2",children:[(0,a.jsxs)("button",{onClick:()=>{T(!R)},className:"flex items-center text-left focus:outline-none text-gray-700 hover:text-gray-900 transition-colors duration-200",children:[R?(0,a.jsx)(v.Z,{className:"w-4 h-4 mr-1"}):(0,a.jsx)(j.Z,{className:"w-4 h-4 mr-1"}),(0,a.jsx)("span",{className:"text-base",children:"Show SkyPilot YAML"})]}),(0,a.jsx)(b.WH,{content:O?"Copied!":"Copy YAML",className:"text-muted-foreground",children:(0,a.jsx)("button",{onClick:U,className:"flex items-center text-gray-500 hover:text-gray-700 transition-colors duration-200 p-1 ml-2",children:O?(0,a.jsx)(f.Z,{className:"w-4 h-4 text-green-600"}):(0,a.jsx)(g.Z,{className:"w-4 h-4"})})})]}),R&&(0,a.jsx)("div",{className:"bg-gray-50 border border-gray-200 rounded-md p-3 max-h-96 overflow-y-auto",children:(0,a.jsx)(k.C,{className:"whitespace-pre-wrap",children:(0,S._q)(c.task_yaml||c.last_creation_yaml)})})]})]})]})]})})]})}),c&&c.full_infra&&c.full_infra.includes("Kubernetes")&&!c.full_infra.includes("SSH")&&!c.full_infra.includes("ssh")&&A&&(0,a.jsx)("div",{className:"mb-6",children:(0,a.jsx)("div",{className:"rounded-lg border bg-card text-card-foreground shadow-sm",children:(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,a.jsx)("h3",{className:"text-lg font-semibold",children:"GPU Metrics"})}),(0,a.jsxs)("div",{className:"mb-4 p-4 bg-gray-50 rounded-md border border-gray-200",children:[(0,a.jsx)("div",{className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center",children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium text-gray-700 whitespace-nowrap",children:"Time Range:"}),(0,a.jsx)("div",{className:"flex gap-1",children:[{label:"15m",value:"15m"},{label:"1h",value:"1h"},{label:"6h",value:"6h"},{label:"24h",value:"24h"},{label:"7d",value:"7d"}].map(e=>(0,a.jsx)("button",{onClick:()=>y(e.value),className:"px-2 py-1 text-xs font-medium rounded border transition-colors ".concat(N.from==="now-".concat(e.value)&&"now"===N.to?"bg-sky-blue text-white border-sky-blue":"bg-white text-gray-600 border-gray-300 hover:bg-gray-50"),children:e.label},e.value))})]})}),(0,a.jsxs)("div",{className:"mt-2 text-xs text-gray-500",children:["Showing: ",null==c?void 0:c.cluster," • Time: ",N.from," to"," ",N.to,L&&(0,a.jsx)("span",{children:" • Finding cluster data..."})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:_("1"),width:"100%",height:"400",frameBorder:"0",title:"GPU Utilization",className:"rounded"},"gpu-util-".concat(null==c?void 0:c.cluster,"-").concat(N.from,"-").concat(N.to))})}),(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:_("2"),width:"100%",height:"400",frameBorder:"0",title:"GPU Memory Utilization",className:"rounded"},"gpu-memory-".concat(null==c?void 0:c.cluster,"-").concat(N.from,"-").concat(N.to))})}),(0,a.jsx)("div",{className:"bg-white rounded-md border border-gray-200 shadow-sm",children:(0,a.jsx)("div",{className:"p-2",children:(0,a.jsx)("iframe",{src:_("4"),width:"100%",height:"400",frameBorder:"0",title:"GPU Power Usage",className:"rounded"},"gpu-power-".concat(null==c?void 0:c.cluster,"-").concat(N.from,"-").concat(N.to))})})]})]})})}),!E&&(0,a.jsx)("div",{className:"mb-8",children:(0,a.jsx)(n.ClusterJobs,{clusterName:c.cluster,clusterJobData:d,loading:m,refreshClusterJobsOnly:x,workspace:c.workspace})})]})}t.default=function(){let e=(0,i.useRouter)(),{cluster:t}=e.query,[s,n]=(0,r.useState)(!1),[c,u]=(0,r.useState)(!0),[f,g]=(0,r.useState)(!1),[v,j]=(0,r.useState)(!1),[_,S]=(0,r.useState)(null),[C,k]=(0,r.useState)(!1),[M,A]=(0,r.useState)(!1),E=(0,y.X)(),[R,T]=(0,r.useState)({from:"now-1h",to:"now"}),{clusterData:O,clusterJobData:P,loading:I,clusterDetailsLoading:Z,clusterJobsLoading:U,refreshData:Y,refreshClusterJobsOnly:D}=(0,m.QL)({cluster:t}),[F,G]=(0,r.useState)(null),[H,J]=(0,r.useState)(!1),[W,K]=(0,r.useState)(!1);(0,r.useEffect)(()=>{(async()=>{K(await (0,p.TO)())})()},[]);let z=(0,r.useCallback)(async()=>{if(W&&(null==O?void 0:O.cluster)){J(!0);try{let e=(0,p.ki)(),t=await fetch("".concat(e).concat("/api/datasources/proxy/uid/prometheus/api/v1/label/label_skypilot_cluster_name/values"),{method:"GET",credentials:"include",headers:{Accept:"application/json"}});if(t.ok){let e=await t.json();if(e.data&&e.data.length>0){let t=e.data.find(e=>e.startsWith(O.cluster_name_on_cloud));t&&G(t)}}}catch(e){console.error("Error fetching matching cluster:",e)}finally{J(!1)}}},[null==O?void 0:O.cluster,W]);(0,r.useEffect)(()=>{W&&(null==O?void 0:O.cluster)&&z()},[null==O?void 0:O.cluster,z,W]);let B=e=>{let t=(0,p.ki)(),s=F||(null==O?void 0:O.cluster_name_on_cloud);return"".concat(t,"/d-solo/skypilot-dcgm-gpu/skypilot-dcgm-gpu-metrics?orgId=1&from=").concat(encodeURIComponent(R.from),"&to=").concat(encodeURIComponent(R.to),"&timezone=browser&var-cluster=").concat(encodeURIComponent(s),"&var-node=$__all&var-gpu=$__all&theme=light&panelId=").concat(e,"&__feature.dashboardSceneSolo")};r.useEffect(()=>{!Z&&c&&u(!1)},[Z,c]),r.useEffect(()=>{let e=async()=>{if(t&&!Z&&!O){A(!0);try{let e=(await x.default.get(m.uR,[t])).find(e=>e.cluster_hash===t||e.cluster===t);e&&(S(e),k(!0))}catch(e){console.error("Error fetching cluster history:",e)}finally{A(!1)}}};Z||O||e()},[t,Z,O]);let q=async()=>{n(!0),await Y(),n(!1)},Q=e=>{T({from:"now-".concat(e),to:"now"})};if(!e.isReady)return(0,a.jsx)("div",{children:"Loading..."});let V=t?"Cluster: ".concat(t," | SkyPilot Dashboard"):"Cluster Details | SkyPilot Dashboard";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(w(),{children:(0,a.jsx)("title",{children:V})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4 h-5",children:[(0,a.jsxs)("div",{className:"text-base flex items-center",children:[(0,a.jsx)(o(),{href:"/clusters",className:"text-sky-blue hover:underline",children:"Sky Clusters"}),(0,a.jsx)("span",{className:"mx-2 text-gray-500",children:"›"}),(0,a.jsx)(o(),{href:"/clusters/".concat(t),className:"text-sky-blue hover:underline",children:t})]}),(0,a.jsx)("div",{className:"text-sm flex items-center",children:(0,a.jsxs)("div",{className:"text-sm flex items-center",children:[(Z||s)&&(0,a.jsxs)("div",{className:"flex items-center mr-4",children:[(0,a.jsx)(l.Z,{size:15,className:"mt-0"}),(0,a.jsx)("span",{className:"ml-2 text-gray-500",children:"Loading..."})]}),O&&(0,a.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,a.jsx)(b.WH,{content:"Refresh",className:"text-sm text-muted-foreground",children:(0,a.jsxs)("button",{onClick:q,disabled:Z||s,className:"text-sky-blue hover:text-sky-blue-bright font-medium inline-flex items-center",children:[(0,a.jsx)(h.Z,{className:"w-4 h-4 mr-1.5"}),!E&&(0,a.jsx)("span",{children:"Refresh"})]})}),(0,a.jsx)(d.Status2Actions,{withLabel:!0,cluster:O.cluster,status:O.status,onOpenSSHModal:()=>{g(!0)},onOpenVSCodeModal:()=>{j(!0)}})]})]})})]}),Z&&c||M?(0,a.jsxs)("div",{className:"flex justify-center items-center py-12",children:[(0,a.jsx)(l.Z,{size:24,className:"mr-2"}),(0,a.jsx)("span",{className:"text-gray-500",children:"Loading cluster details..."})]}):O?(0,a.jsx)(L,{clusterData:O,clusterJobData:P,clusterJobsLoading:U,refreshClusterJobsOnly:D,isVSCodeModalOpen:v,setIsVSCodeModalOpen:j,timeRange:R,handleTimeRangePreset:Q,buildGrafanaMetricsUrl:B,matchedClusterName:F,isLoadingClusterMatch:H,isGrafanaAvailable:W,isHistoricalCluster:!1}):C&&_?(0,a.jsx)(L,{clusterData:_,clusterJobData:[],clusterJobsLoading:!1,refreshClusterJobsOnly:()=>{},isVSCodeModalOpen:!1,setIsVSCodeModalOpen:()=>{},timeRange:R,handleTimeRangePreset:Q,buildGrafanaMetricsUrl:B,matchedClusterName:null,isLoadingClusterMatch:!1,isGrafanaAvailable:!1,isHistoricalCluster:!0}):(0,a.jsx)("div",{className:"flex justify-center items-center py-12",children:(0,a.jsx)("span",{className:"text-gray-500",children:"Cluster not found in active clusters or history."})}),(0,a.jsx)(N.Oh,{isOpen:f,onClose:()=>g(!1),cluster:t}),(0,a.jsx)(N._R,{isOpen:v,onClose:()=>j(!1),cluster:t})]})]})}},17853:function(e,t,s){"use strict";s.d(t,{TO:function(){return l},ki:function(){return n}});let a=null,r=null,l=async()=>null!==a?a:r||(r=(async()=>{try{let e="".concat(window.location.origin,"/grafana"),t=await fetch("".concat(e,"/api/health"),{method:"GET",credentials:"include",headers:{Accept:"application/json"},signal:AbortSignal.timeout(5e3)});return 200==t.status}catch(e){return console.debug("Grafana availability check failed:",e),a=!1,!1}finally{r=null}})()),n=()=>"".concat(window.location.origin,"/grafana")}},function(e){e.O(0,[616,5739,6130,7411,1272,7359,6212,6989,3850,8969,6990,9353,2260,3800,7615,6856,1871,2888,9774,179],function(){return e(e.s=58706)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7810],{45833:function(e,n,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/clusters",function(){return t(23450)}])},23450:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return l}});var r=t(85893);t(67294);var s=t(9008),u=t.n(s),i=t(5152);let c=t.n(i)()(()=>Promise.all([t.e(616),t.e(5739),t.e(6130),t.e(7411),t.e(1272),t.e(6989),t.e(3850),t.e(8969),t.e(6990),t.e(9353),t.e(2260),t.e(3800),t.e(6856),t.e(1871),t.e(2369)]).then(t.bind(t,39037)).then(e=>e.Clusters),{loadableGenerated:{webpack:()=>[39037]},ssr:!1});function l(){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(u(),{children:(0,r.jsx)("title",{children:"Clusters | SkyPilot Dashboard"})}),(0,r.jsx)(c,{})]})}},9008:function(e,n,t){e.exports=t(37219)}},function(e){e.O(0,[2888,9774,179],function(){return e(e.s=45833)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1490],{94483:function(n,e,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/config",function(){return t(99649)}])},99649:function(n,e,t){"use strict";t.r(e),t.d(e,{default:function(){return c}});var r=t(85893);t(67294);var i=t(9008),o=t.n(i),u=t(5152);let s=t.n(u)()(()=>Promise.all([t.e(616),t.e(6130),t.e(5739),t.e(1272),t.e(6989),t.e(6990),t.e(9025)]).then(t.bind(t,54042)).then(n=>n.Config),{loadableGenerated:{webpack:()=>[54042]},ssr:!1});function c(){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o(),{children:(0,r.jsx)("title",{children:"SkyPilot API Server | SkyPilot Dashboard"})}),(0,r.jsx)(s,{})]})}},9008:function(n,e,t){n.exports=t(37219)}},function(n){n.O(0,[2888,9774,179],function(){return n(n.s=94483)}),_N_E=n.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1490],{94483:function(n,e,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/config",function(){return t(99649)}])},99649:function(n,e,t){"use strict";t.r(e),t.d(e,{default:function(){return c}});var r=t(85893);t(67294);var i=t(9008),o=t.n(i),u=t(5152);let s=t.n(u)()(()=>Promise.all([t.e(616),t.e(5739),t.e(6130),t.e(1272),t.e(6989),t.e(6990),t.e(9025)]).then(t.bind(t,54042)).then(n=>n.Config),{loadableGenerated:{webpack:()=>[54042]},ssr:!1});function c(){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o(),{children:(0,r.jsx)("title",{children:"SkyPilot API Server | SkyPilot Dashboard"})}),(0,r.jsx)(s,{})]})}},9008:function(n,e,t){n.exports=t(37219)}},function(n){n.O(0,[2888,9774,179],function(){return n(n.s=94483)}),_N_E=n.O()}]);