@kedem/okdb 1.0.0 → 1.0.3

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 (188) hide show
  1. package/README.md +1 -1
  2. package/bin/okdb.js +1 -1
  3. package/keys/public.pem +3 -0
  4. package/okdb.js +1 -1
  5. package/package.json +2 -2
  6. package/public/admin-app.js +1 -1
  7. package/public/components/admin-route-host.ok.js +1 -1
  8. package/public/components/env-picker.ok.js +1 -1
  9. package/public/components/field-path-input.ok.js +1 -1
  10. package/public/components/geo-map.ok.js +1 -1
  11. package/public/components/ok-cron-input.ok.js +1 -1
  12. package/public/components/ok-dropzone.ok.js +1 -1
  13. package/public/components/ok-js-input.ok.js +1 -1
  14. package/public/components/ok-json-input.ok.js +1 -1
  15. package/public/components/ok-text-monaco-input.ok.js +1 -1
  16. package/public/components/theme-toggle.ok.js +1 -1
  17. package/public/login-app.js +1 -1
  18. package/public/modules/ok.js +1 -1
  19. package/public/sections/api/parts/api-endpoint.ok.js +1 -1
  20. package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
  21. package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
  22. package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
  23. package/public/sections/auth/parts/token-detail.ok.js +1 -1
  24. package/public/sections/auth/parts/token-list.ok.js +1 -1
  25. package/public/sections/db/modals/add-item-modal.ok.js +1 -1
  26. package/public/sections/db/modals/create-env-modal.ok.js +1 -1
  27. package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
  28. package/public/sections/db/modals/create-index-modal.ok.js +1 -1
  29. package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
  30. package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
  31. package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
  32. package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
  33. package/public/sections/db/parts/db-overview.ok.js +1 -1
  34. package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
  35. package/public/sections/db/parts/edit-row.ok.js +1 -1
  36. package/public/sections/db/parts/tm-timeline.ok.js +1 -1
  37. package/public/sections/db/parts/type-changelog.ok.js +1 -1
  38. package/public/sections/db/parts/type-list.ok.js +1 -1
  39. package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
  40. package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
  41. package/public/sections/db/parts/type-viewer.ok.js +1 -1
  42. package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
  43. package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
  44. package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
  45. package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
  46. package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
  47. package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
  48. package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
  49. package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
  50. package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
  51. package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
  52. package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
  53. package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
  54. package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
  55. package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
  56. package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
  57. package/public/sections/engines/engine-panel-shared-style.js +1 -1
  58. package/public/sections/engines/engine-ui-utils.js +1 -1
  59. package/public/sections/engines/modals/engine-modal.ok.js +1 -1
  60. package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
  61. package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
  62. package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
  63. package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
  64. package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
  65. package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
  66. package/public/sections/files/parts/files-blob-status.ok.js +1 -1
  67. package/public/sections/files/parts/files-collection-list.ok.js +1 -1
  68. package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
  69. package/public/sections/files/parts/files-file-list.ok.js +1 -1
  70. package/public/sections/files/parts/files-overview.ok.js +1 -1
  71. package/public/sections/files/parts/files-path-browser.ok.js +1 -1
  72. package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
  73. package/public/sections/functions/modals/function-modal.ok.js +1 -1
  74. package/public/sections/functions/parts/function-detail.ok.js +1 -1
  75. package/public/sections/functions/parts/function-logs.ok.js +1 -1
  76. package/public/sections/functions/parts/function-runner.ok.js +1 -1
  77. package/public/sections/functions/parts/functions-list.ok.js +1 -1
  78. package/public/sections/license/parts/license-panel.ok.js +1 -1
  79. package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
  80. package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
  81. package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
  82. package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
  83. package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
  84. package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
  85. package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
  86. package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
  87. package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
  88. package/public/sections/queue/parts/queue-types.ok.js +1 -1
  89. package/public/sections/queue/parts/queue-workers.ok.js +1 -1
  90. package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
  91. package/public/sections/sync/parts/sync-retention.ok.js +1 -1
  92. package/public/sections/sync/parts/sync-topology.ok.js +1 -1
  93. package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
  94. package/public/sections/system/parts/system-api-panel.ok.js +1 -1
  95. package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
  96. package/public/sections/system/parts/system-log-history.ok.js +1 -1
  97. package/public/sections/system/parts/system-log.ok.js +1 -1
  98. package/public/sections/system/parts/system-status.ok.js +1 -1
  99. package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
  100. package/public/sections/views/modals/create-view-modal.ok.js +1 -1
  101. package/public/sections/views/parts/view-detail.ok.js +1 -1
  102. package/public/sections/views/parts/views-list.ok.js +1 -1
  103. package/public/sections/views/parts/views-overview.ok.js +1 -1
  104. package/public/setup-app.js +1 -1
  105. package/public/stores/auth-store.js +1 -1
  106. package/public/stores/events-store.js +1 -1
  107. package/public/stores/functions-store.js +1 -1
  108. package/public/stores/okdb-store.js +1 -1
  109. package/public/stores/theme-store.js +1 -1
  110. package/public/util/permissions.js +1 -1
  111. package/public/util/sift-schema.js +1 -1
  112. package/public/vendor/okjs/ok.esm.min.js +1 -2
  113. package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -1
  114. package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -1
  115. package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -1
  116. package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -1
  117. package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -1
  118. package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -1
  119. package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -1
  120. package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -1
  121. package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -1
  122. package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -1
  123. package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -1
  124. package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -1
  125. package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -1
  126. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -1
  127. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -1
  128. package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -1
  129. package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -1
  130. package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -1
  131. package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -1
  132. package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -1
  133. package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -1
  134. package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -1
  135. package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -1
  136. package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -1
  137. package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -1
  138. package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -1
  139. package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -1
  140. package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -1
  141. package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -1
  142. package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -1
  143. package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -1
  144. package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -1
  145. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -1
  146. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -1
  147. package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -1
  148. package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -1
  149. package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -1
  150. package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -1
  151. package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -1
  152. package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -1
  153. package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -1
  154. package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -1
  155. package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -1
  156. package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -1
  157. package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -1
  158. package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -1
  159. package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -1
  160. package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -1
  161. package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -1
  162. package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -1
  163. package/public/vendor/okjs/toolkit/manifest.js +1 -1
  164. package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -1
  165. package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -1
  166. package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -1
  167. package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -1
  168. package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -1
  169. package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -1
  170. package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -1
  171. package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -1
  172. package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -1
  173. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -1
  174. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -1
  175. package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -1
  176. package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -1
  177. package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -1
  178. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -1
  179. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -1
  180. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -1
  181. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -1
  182. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -1
  183. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -1
  184. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -1
  185. package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -1
  186. package/public/view-models/type-query-vm.js +1 -1
  187. package/public/images/logo.png +0 -0
  188. package/public/images/logo.svg +0 -333
@@ -1 +1 @@
1
- const _0x31845a=_0x2c45;(function(_0x594d19,_0x28d6c3){const _0x4f4e4b=_0x2c45,_0x2d77cb=_0x594d19();while(!![]){try{const _0x1b8914=parseInt(_0x4f4e4b(0xf3))/0x1+parseInt(_0x4f4e4b(0x182))/0x2*(-parseInt(_0x4f4e4b(0x16a))/0x3)+-parseInt(_0x4f4e4b(0x17b))/0x4+parseInt(_0x4f4e4b(0x105))/0x5*(parseInt(_0x4f4e4b(0x154))/0x6)+parseInt(_0x4f4e4b(0x166))/0x7+parseInt(_0x4f4e4b(0x145))/0x8*(parseInt(_0x4f4e4b(0x11a))/0x9)+-parseInt(_0x4f4e4b(0x178))/0xa*(parseInt(_0x4f4e4b(0x116))/0xb);if(_0x1b8914===_0x28d6c3)break;else _0x2d77cb['push'](_0x2d77cb['shift']());}catch(_0x29a7e5){_0x2d77cb['push'](_0x2d77cb['shift']());}}}(_0x4114,0x93656));function _0x2c45(_0x489205,_0x411038){_0x489205=_0x489205-0xf3;const _0x41148f=_0x4114();let _0x2c4504=_0x41148f[_0x489205];return _0x2c4504;}function _0x4114(){const _0x37d992=['pipelines','30gLWcvd','/env/','var(--okdb-sky)','1840812gsWunI','envName','item:update','$watch','all','isArray','resolve','2nJpvTL','pageSize','has','recentChanges','degraded','meta','898545KRgVSI','success','_reloadTypes','now','loadViolations','Failed\x20to\x20load\x20pipelines','index:registered','engine:installed','\x20·\x20','engines','var(--okdb-warning)','label','pipelineLabel','_unsubs','apiBase','recentError','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:20px;\x20max-width:860px;\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:18px;\x22>Database\x20Overview</div>\x0a\x20\x20\x20\x20<if\x20:=\x22recentBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>updating…</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadRecent()\x22\x20:disabled=\x22recentBusy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20↻\x20Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Stat\x20cards\x20row\x20-->\x0a\x20\x20<div\x20class=\x22ov-stat-row\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>DB\x20Size</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--accent);\x22>{{\x20approxSize\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Clock</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22font-family:monospace;\x20font-size:18px;\x22>{{\x20fmt(info?.clock)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>User\x20Types</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-purple);\x22>{{\x20types.length\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Total\x20Records</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20fmt(totalRecords)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Empty\x20state\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Standard\x20empty\x20hint\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20margin-bottom:12px;\x22>🗄️</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:15px;\x20margin-bottom:5px;\x22>No\x20types\x20registered\x20yet</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20opacity:.6;\x20line-height:1.7;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20<b>Register\x20Type\x20+</b>\x20in\x20the\x20sidebar\x20to\x20create\x20your\x20first\x20collection.<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Types\x20are\x20strongly-typed\x20document\x20collections\x20stored\x20in\x20LMDB.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Demo\x20data\x20card\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card\x22\x20@click=\x22openDemoModal()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__aurora\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22position:relative;\x20z-index:1;\x20display:flex;\x20flex-direction:column;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__sparkle\x22>✦</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__title\x22>Generate\x20Demo\x20Environment</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__desc\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Instantly\x20populate\x20a\x20new\x20environment\x20with\x20realistic\x20data,\x20indexes,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20and\x20full-text\x20search\x20—\x20ready\x20to\x20explore\x20in\x20seconds.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent);\x22>🛒\x20E-Commerce</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-accent);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x22>📊\x20Analytics</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-purple);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-purple)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x22>📝\x20Content\x20Hub</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x207%,\x20transparent);\x22>👥\x20Team\x20Directory</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-orange);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x207%,\x20transparent);\x22>🗺️\x20City\x20Explorer</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__cta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Choose\x20a\x20preset</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:6px;\x20font-size:14px;\x22>→</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Types\x20table\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Types</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20types.length\x20}}\x20user&nbsp;·&nbsp;{{\x20systemTypes.length\x20}}\x20system\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20class=\x22ov-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th>Name</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Records</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Pages</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Indexes</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th></th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22types\x22\x20let:item=\x22t\x22\x20class=\x22ov-row\x22\x20@click=\x22select(t)\x22\x20title=\x22Open\x20in\x20type\x20viewer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x22>{{\x20t.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20color:var(--accent);\x20font-weight:600;\x22>{{\x20fmt(t.count)\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.5;\x20font-size:12px;\x22>{{\x20fmt(typePages(t.type))\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:1px\x207px;\x20border-radius:999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x2033%,\x20transparent);\x20color:var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:11px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>{{\x20typeIndexCount(t.type)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.3;\x22>—</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.3;\x20font-size:11px;\x20padding-right:16px;\x22>→</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Violations\x20summary\x20-->\x0a\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x20||\x20violationsBusy\x20||\x20violationsError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Schema\x20Violations</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20font-weight:600;\x22>{{\x20totalViolations\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>across\x20all\x20types\x20in\x20{{\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadViolations()\x22\x20:disabled=\x22violationsBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsBusy\x20&&\x20violations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.45;\x22>Loading…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px\x2016px;\x20color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20violationsError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!violationsBusy\x20&&\x20!violationsError\x20&&\x20violationsByType.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.4;\x22>No\x20violations.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsByType.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22violationsByType\x22\x20let:item=\x22grp\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20type\x20group\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-group\x22\x20@click=\x22toggleViolationGroup(grp.type)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-viol-arrow\x22\x20:style=\x22expandedViolationType\x20===\x20grp.type\x20?\x20\x27transform:rotate(90deg)\x27\x20:\x20\x27\x27\x22>›</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x20flex:1;\x22>{{\x20grp.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20margin-right:8px;\x22>{{\x20grp.count\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click:stop=\x22navigateToType(grp.type)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:5px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:transparent;\x20color:var(--okdb-sky);\x20cursor:pointer;\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20Schema\x20tab\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Schema\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20expanded\x20violations\x20for\x20this\x20type\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedViolationType\x20===\x20grp.type\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22grp.items\x22\x20let:item=\x22v\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:11px;\x20color:var(--okdb-json-key);\x20flex:1;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20v.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.45;\x20white-space:nowrap;\x20margin-left:8px;\x22>{{\x20(v.errors\x20??\x20[]).length\x20||\x20(v.errorCount\x20??\x200)\x20}}\x20error(s)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Time\x20Machine\x20card\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:13px;\x22>⏱\x20Time\x20Machine</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!tmStatus\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>loading…</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22tmStatus.enabled\x20?\x20disableTM()\x20:\x20enableTM()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27font-size:11px;\x20padding:2px\x2010px;\x20color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20border-color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent)\x27)\x20+\x20\x27;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20tmStatus.enabled\x20?\x20\x27Disable\x27\x20:\x20\x27Enable\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>{{\x20tmScanMsg\x20||\x20\x27…\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20flex-direction:column;\x20gap:3px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>tracking\x20since\x20clock\x20{{\x20tmStatus.startClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20!==\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>last\x20processed:\x20{{\x20tmStatus.lastProcessedClock\x20}}\x20·\x20env\x20at:\x20{{\x20tmStatus.envClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20===\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>processed\x20through\x20clock\x20{{\x20tmStatus.lastProcessedClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20tmStatus.headCount\x20}}\x20heads</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>disabled</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22ov-card\x22\x20style=\x22overflow:visible;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Pipelines</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>overview\x20highlights\x20for\x20the\x20current\x20environment</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:16px;\x20display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-headline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x20min-width:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x20color:var(--okdb-app-fg);\x22>{{\x20pipelineSummaryText\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.error\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:var(--okdb-danger);border-color:var(--okdb-danger-deep-border);background:#450a0a33;\x27\x22>{{\x20pipelineHealthCounts.error\x20}}\x20error</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.degraded\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#fcd34d;border-color:#854d0e;background:#451a0333;\x27\x22>{{\x20pipelineHealthCounts.degraded\x20}}\x20degraded</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.online\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#86efac;border-color:#166534;background:#052e1633;\x27\x22>{{\x20pipelineHealthCounts.online\x20}}\x20online</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:640px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20The\x20overview\x20should\x20only\x20surface\x20high-signal\x20pipeline\x20highlights.\x20Open\x20the\x20dedicated\x20workspace\x20when\x20you\x20want\x20the\x20full\x20grouped\x20pipeline\x20list\x20and\x20member\x20details.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadPipelines()\x22\x20:disabled=\x22pipelinesBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openPipelinesWorkspace()\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x22>Open\x20pipelines\x20workspace\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-error\x22>{{\x20pipelinesError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x22>Loading\x20pipeline\x20highlights…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:24px;\x20opacity:.3;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.78;\x22>No\x20pipelines\x20in\x20{{\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20will\x20appear\x20here\x20once\x20created\x20or\x20synced.\x20This\x20frontpage\x20intentionally\x20stays\x20compact\x20and\x20only\x20shows\x20a\x20small\x20highlight\x20list.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHighlights.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22pipelineHighlights\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22ov-pipeline-highlight\x22\x20@click=\x22openPipelinesWorkspace(pipeline)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:9px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineLabel(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:11px;color:\x27\x20+\x20healthColor(pipeline.health)\x20+\x20\x27;opacity:.95;white-space:nowrap;\x27\x22>{{\x20pipeline.health\x20||\x20\x27unknown\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:12px;\x20flex-wrap:wrap;\x20margin-top:6px;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Members:</span>\x20<span\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20fmt(pipeline.engines?.length\x20||\x200)\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipeline.status\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Status:</span>\x20<span\x20:style=\x22\x27color:\x27\x20+\x20statusColor(pipeline.status)\x22>{{\x20pipeline.status\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineRoleSummary(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelines.length\x20>\x20pipelineHighlights.length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Showing\x20{{\x20pipelineHighlights.length\x20}}\x20of\x20{{\x20pipelines.length\x20}}\x20pipelines.\x20Open\x20the\x20dedicated\x20workspace\x20for\x20the\x20full\x20inventory.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Recent\x20activity\x20-->\x0a\x20\x20<if\x20:=\x22recentChanges.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Recent\x20Activity</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-left:auto;\x22>last\x20{{\x20recentChanges.length\x20}}\x20changes</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22recentChanges\x22\x20let:item=\x22ch\x22\x20class=\x22ov-row\x20ov-row--sm\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20width:60px;\x20font-family:monospace;\x20opacity:.4;\x20padding-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.clock\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22width:100px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:10px;\x20padding:2px\x206px;\x20border-radius:3px;\x20border:1px\x20solid;\x20color:\x27+actionColor(ch.action)+\x27;\x20border-color:\x27+actionColor(ch.action)+\x2755;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionLabel(ch.action)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.7;\x20max-width:110px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.type\x20||\x20\x27—\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.45;\x20max-width:160px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.key\x20||\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20opacity:.35;\x20white-space:nowrap;\x20font-size:11px;\x20padding-right:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20relTime(ch.timestamp)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','indexes','5RNwBvX','info','var(--okdb-danger)','engine:stopped','add','No\x20members','okdb','expandedViolationType','loadRecent','push','system:poke','types','data','error','sync:apply','catch','select','3736865uuYZaN','stores','\x22\x20is\x20ready!','just\x20now','18qBQkNE','entries','$vars','\x20engine','stopped','toast','tmStatus','idle','selectEnv','toLowerCase','env','modal','var(--okdb-purple)','var(--okdb-accent)','default','length','$ok','Failed\x20to\x20load\x20violations','replace','/violations','_reloadTimer','localeCompare','toLocaleDateString','violations','$dispatch','pipeline:start','building','set','type','loadTMStatus','type:registered','system:clock_change','s\x20ago','filter','tmScanMsg','violationsBusy','loadPipelines','lastProcessedClock','slice','count','lastPageNumber','result','/time-machine/enable','1271568GVJgpp','online','API','sort','shared','pipelinesError','<span\x20style=\x22background:linear-gradient(135deg,var(--okdb-accent),var(--okdb-purple)\x2050%,var(--okdb-success));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;font-size:15px;\x22>✦\x20Demo\x20Environment</span>','name','json','pipeline:delete','toFixed','$router','join','recentBusy','keys','389478QAbNSn','pipelineEngineCount','type:drop','scanning…','engine:uninstalled','round','POST','tmBusy','reduce','running','startsWith','violationsError','pipeline:stop','/changelog?limit=10','_scheduleReload','Unnamed\x20pipeline','includes','pipelineSeverity','7171003nrDkLu','selectedEnv','✦\x20Demo\x20environment\x20\x22','reloadEnvs','668091rWvxaO','open','message','var(--okdb-app-fg-muted)','var(--okdb-success)','health','/time-machine/status','\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(4,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2016px\x2018px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.06em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-value\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2022px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2013px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-collapse:\x20collapse;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20th\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x207px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.05em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row:hover\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#ffffff07;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20tbody\x20tr:last-child\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-headline\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-pill\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2024px\x2020px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(auto-fit,\x20minmax(240px,\x201fr));\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2011px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20tbody\x20.ov-row--sm:last-child\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group:hover\x20{\x20background:\x20#ffffff07;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-arrow\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20inline-block;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x2016px\x206px\x2038px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row:last-child\x20{\x20border-bottom:\x20none;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2030px\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Demo\x20data\x20card\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20border-color\x20.25s,\x20box-shadow\x20.25s,\x20transform\x20.2s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2053%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent),\x200\x208px\x2040px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x209%,\x20transparent),\x200\x200\x2080px\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20transform:\x20translateY(-2px);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a\x20\x20\x20\x20\x20\x20\x20\x20inset:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2020%\x2050%,\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2080%\x2030%,\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2050%\x2090%,\x20color-mix(in\x20srgb,\x20var(--okdb-success)\x204%,\x20transparent),\x20transparent\x2055%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20pointer-events:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-aurora\x208s\x20ease-in-out\x20infinite\x20alternate;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__sparkle\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2026px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-accent),\x20var(--okdb-purple)\x2040%,\x20var(--okdb-success));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-hue\x206s\x20linear\x20infinite;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2017px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-app-fg-strong),\x20var(--okdb-accent));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__desc\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20380px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.65;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__badges\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-badge\x20{\x20transform:\x20scale(1.05);\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__cta\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-accent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.8;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20opacity\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-card__cta\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-hue\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20filter:\x20hue-rotate(0deg);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20filter:\x20hue-rotate(360deg);\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20opacity:\x20.7;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20opacity:\x201.3;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','engine:error','pipelinesBusy','pages','m\x20ago','reloadOverviewData'];_0x4114=function(){return _0x37d992;};return _0x4114();}import _0x151063 from'../../../stores/events-store.js';import _0x2f4db6 from'../modals/demo-env-modal.ok.js';export default{'tag':'db-overview','dependencies':[_0x2f4db6],'attr':{'stats':{}},'context':_0x5213ef=>({'recentChanges':[],'recentBusy':!0x1,'recentError':null,'pipelines':[],'pipelinesBusy':!0x1,'pipelinesError':null,'violations':[],'violationsBusy':!0x1,'violationsError':null,'expandedViolationType':null,'tmStatus':null,'tmBusy':!0x1,'tmScanMsg':'',get 'info'(){const _0x3241e7=_0x2c45;return _0x5213ef[_0x3241e7(0x12a)]['stores']['okdb']['info'];},get 'types'(){const _0x21f769=_0x2c45;return(_0x5213ef[_0x21f769(0x12a)][_0x21f769(0x117)]['okdb'][_0x21f769(0x110)]||[])['filter'](_0x51dfa7=>!_0x51dfa7['type'][_0x21f769(0x15e)]('~'))[_0x21f769(0x148)]((_0x3b1646,_0x53b227)=>_0x3b1646[_0x21f769(0x136)][_0x21f769(0x12f)](_0x53b227[_0x21f769(0x136)]));},get 'systemTypes'(){const _0x1b420a=_0x2c45;return(_0x5213ef['$ok']['stores'][_0x1b420a(0x10b)][_0x1b420a(0x110)]||[])[_0x1b420a(0x13b)](_0x5d1064=>_0x5d1064[_0x1b420a(0x136)][_0x1b420a(0x15e)]('~'));},get 'envName'(){const _0x456201=_0x2c45;return _0x5213ef[_0x456201(0x12a)][_0x456201(0x117)][_0x456201(0x10b)]['selectedEnv']||_0x456201(0x128);},get 'totalRecords'(){const _0x46d8af=_0x2c45;return(_0x5213ef[_0x46d8af(0x12a)][_0x46d8af(0x117)][_0x46d8af(0x10b)][_0x46d8af(0x110)]||[])[_0x46d8af(0x13b)](_0x10bce9=>!_0x10bce9[_0x46d8af(0x136)][_0x46d8af(0x15e)]('~'))[_0x46d8af(0x15c)]((_0x10036b,_0x133cf4)=>_0x10036b+(_0x133cf4[_0x46d8af(0x141)]||0x0),0x0);},get 'approxSize'(){const _0x5866d7=_0x2c45,_0x3c5173=this['info']?.[_0x5866d7(0x142)],_0x11687a=this[_0x5866d7(0x106)]?.[_0x5866d7(0x183)];if(!_0x3c5173||!_0x11687a)return'--';let _0x37a9fa=_0x3c5173*_0x11687a;const _0x19ef45=['B','KB','MB','GB','TB'];let _0x438e3b=0x0;for(;_0x37a9fa>=0x400&&_0x438e3b<_0x19ef45[_0x5866d7(0x129)]-0x1;)_0x37a9fa/=0x400,_0x438e3b++;return _0x37a9fa[_0x5866d7(0x14f)](0x2)+'\x20'+_0x19ef45[_0x438e3b];},'typeIndexCount'(_0xdba4c2){const _0x32d333=_0x2c45,_0x23624d=this[_0x32d333(0x106)]?.[_0x32d333(0x110)]?.[_0xdba4c2]?.[_0x32d333(0x104)];return _0x23624d?Object[_0x32d333(0x153)](_0x23624d)[_0x32d333(0x129)]:0x0;},'typePages'(_0x588d0b){const _0x1a3731=_0x2c45;return this[_0x1a3731(0x106)]?.[_0x1a3731(0x110)]?.[_0x588d0b]?.[_0x1a3731(0x111)]?.[_0x1a3731(0x174)]??null;},'select'(_0x6523e8){const _0xa89ba4=_0x2c45;_0x5213ef[_0xa89ba4(0x132)]('select',_0x6523e8);},async 'loadRecent'(){const _0x48f964=_0x2c45;this[_0x48f964(0x152)]=!0x0,this[_0x48f964(0x102)]=null;try{const _0x1fadf6=await fetch(_0x5213ef[_0x48f964(0x12a)][_0x48f964(0x117)][_0x48f964(0x10b)][_0x48f964(0x101)]+_0x48f964(0x161));if(_0x1fadf6['ok']){const _0xe65a37=await _0x1fadf6['json']();this[_0x48f964(0x185)]=_0xe65a37[_0x48f964(0x111)]??[];}}catch(_0x5e3484){this[_0x48f964(0x102)]=_0x5e3484?.['message']||'Failed\x20to\x20load\x20changes';}finally{this[_0x48f964(0x152)]=!0x1;}},'actionColor':_0x158558=>({'put':'var(--okdb-success)','remove':_0x31845a(0x107),'type_register':_0x31845a(0x127),'type_drop':_0x31845a(0x107),'index_register':_0x31845a(0x126),'index_drop':'var(--okdb-warning)'}[_0x158558]||'var(--okdb-app-fg-muted)'),'actionLabel':_0x2a6b4c=>(_0x2a6b4c||'')[_0x31845a(0x12c)](/_/g,'\x20'),'relTime'(_0x5307f9){const _0xfc4a33=_0x31845a;if(!_0x5307f9)return'—';const _0x504d82=Date[_0xfc4a33(0xf6)]()-_0x5307f9;return _0x504d82<0x1388?_0xfc4a33(0x119):_0x504d82<0xea60?Math[_0xfc4a33(0x159)](_0x504d82/0x3e8)+_0xfc4a33(0x13a):_0x504d82<0x36ee80?Math['round'](_0x504d82/0xea60)+_0xfc4a33(0x175):_0x504d82<0x5265c00?Math[_0xfc4a33(0x159)](_0x504d82/0x36ee80)+'h\x20ago':new Date(_0x5307f9)[_0xfc4a33(0x130)]();},'fmt':_0x4d40ad=>null==_0x4d40ad?'--':Number(_0x4d40ad)['toLocaleString'](),'healthColor':_0x44ccb8=>_0x31845a(0x146)===_0x44ccb8?_0x31845a(0x16e):_0x31845a(0x186)===_0x44ccb8?_0x31845a(0xfd):_0x31845a(0x112)===_0x44ccb8?'var(--okdb-danger)':'stopped'===_0x44ccb8?'var(--okdb-app-fg-muted)':_0x31845a(0x17a),'statusColor':_0x32b830=>_0x31845a(0x15d)===_0x32b830||_0x31845a(0x146)===_0x32b830?'var(--okdb-success)':_0x31845a(0x134)===_0x32b830||_0x31845a(0x186)===_0x32b830?_0x31845a(0xfd):_0x31845a(0x112)===_0x32b830?_0x31845a(0x107):_0x31845a(0x11e)===_0x32b830||'idle'===_0x32b830?_0x31845a(0x16d):'var(--okdb-sky)','pipelineKey'(_0x2c6afa){const _0x529687=_0x31845a;return(_0x2c6afa?.[_0x529687(0x124)]||this[_0x529687(0x17c)])+'::'+(_0x2c6afa?.[_0x529687(0x14c)]||'');},'pipelineLabel':_0x3af25b=>_0x3af25b?.[_0x31845a(0x187)]?.[_0x31845a(0xfe)]||_0x3af25b?.[_0x31845a(0x14c)]||_0x31845a(0x163),'pipelineRoleSummary'(_0x302beb){const _0x33920c=_0x31845a,_0x2b54eb=Array[_0x33920c(0x180)](_0x302beb?.[_0x33920c(0xfc)])?_0x302beb['engines']:[];if(0x0===_0x2b54eb[_0x33920c(0x129)])return _0x33920c(0x10a);const _0x21a656=[];for(const _0x2d3d55 of _0x2b54eb){const _0xee590b=_0x2d3d55?.['role']||_0x2d3d55?.[_0x33920c(0x136)];if(_0xee590b&&!_0x21a656[_0x33920c(0x164)](_0xee590b)&&(_0x21a656['push'](_0xee590b),_0x21a656[_0x33920c(0x129)]>=0x3))break;}return _0x21a656[_0x33920c(0x151)]('\x20·\x20');},'pipelineSeverity'(_0x1ef7d7){const _0x2a964b=_0x31845a,_0x469691=String(_0x1ef7d7?.['health']||'')[_0x2a964b(0x123)](),_0x1833ce=String(_0x1ef7d7?.['status']||'')[_0x2a964b(0x123)]();return _0x2a964b(0x112)===_0x469691||'error'===_0x1833ce?0x0:_0x2a964b(0x186)===_0x469691||_0x2a964b(0x186)===_0x1833ce||_0x2a964b(0x134)===_0x1833ce?0x1:_0x2a964b(0x11e)===_0x469691||_0x2a964b(0x11e)===_0x1833ce||_0x2a964b(0x121)===_0x1833ce?0x2:'online'===_0x469691||_0x2a964b(0x15d)===_0x1833ce||_0x2a964b(0x146)===_0x1833ce?0x3:0x4;},get 'pipelineEngineCount'(){const _0x3b444c=_0x31845a,_0x285cac=new Set();for(const _0x253db4 of this['pipelines'])for(const _0x55f084 of _0x253db4?.[_0x3b444c(0xfc)]||[]){const _0x5a483c=_0x55f084?.['key']||(_0x55f084?.['type']&&_0x55f084?.[_0x3b444c(0x14c)]?_0x55f084[_0x3b444c(0x136)]+'@'+_0x55f084[_0x3b444c(0x14c)]:_0x55f084?.[_0x3b444c(0x14c)])||null;_0x5a483c&&_0x285cac[_0x3b444c(0x109)]((_0x253db4?.['env']||this['envName'])+'::'+_0x5a483c);}return _0x285cac['size'];},get 'pipelineHealthCounts'(){const _0xb294b6=_0x31845a,_0x387be9={'online':0x0,'degraded':0x0,'error':0x0,'stopped':0x0};for(const _0x4e4f7d of this['pipelines']){const _0x806f11=String(_0x4e4f7d?.[_0xb294b6(0x16f)]||'')[_0xb294b6(0x123)]();null!=_0x387be9[_0x806f11]&&(_0x387be9[_0x806f11]+=0x1);}return _0x387be9;},get 'pipelineSummaryText'(){const _0x2c5eb8=_0x31845a,_0x80f1dc=this[_0x2c5eb8(0x177)][_0x2c5eb8(0x129)],_0x15e287=this[_0x2c5eb8(0x155)];return _0x80f1dc+'\x20pipeline'+(0x1===_0x80f1dc?'':'s')+_0x2c5eb8(0xfb)+_0x15e287+_0x2c5eb8(0x11d)+(0x1===_0x15e287?'':'s');},get 'pipelineHighlights'(){const _0x245dc1=_0x31845a;return[...this[_0x245dc1(0x177)]][_0x245dc1(0x148)]((_0x55d8bd,_0x57f129)=>{const _0xaef0ad=_0x245dc1,_0x564e88=this[_0xaef0ad(0x165)](_0x55d8bd)-this[_0xaef0ad(0x165)](_0x57f129);return 0x0!==_0x564e88?_0x564e88:this['pipelineLabel'](_0x55d8bd)[_0xaef0ad(0x12f)](this[_0xaef0ad(0xff)](_0x57f129));})[_0x245dc1(0x140)](0x0,0x4);},async 'loadPipelines'(){const _0x396b9e=_0x31845a;this[_0x396b9e(0x173)]=!0x0,this[_0x396b9e(0x14a)]=null;try{const _0x5ad625=await fetch(_0x5213ef[_0x396b9e(0x12a)][_0x396b9e(0x117)][_0x396b9e(0x10b)][_0x396b9e(0x101)]+'/pipelines'),_0x11875a=await _0x5ad625[_0x396b9e(0x14d)]()[_0x396b9e(0x114)](()=>({}));if(!_0x5ad625['ok'])throw new Error(_0x11875a?.[_0x396b9e(0x112)]?.['message']||'Failed\x20to\x20load\x20pipelines');this[_0x396b9e(0x177)]=_0x11875a?.['data']??_0x11875a?.[_0x396b9e(0x143)]??[];}catch(_0x1c899f){this[_0x396b9e(0x14a)]=_0x1c899f?.[_0x396b9e(0x16c)]||_0x396b9e(0xf8),this[_0x396b9e(0x177)]=[];}finally{this['pipelinesBusy']=!0x1;}},'openPipelinesWorkspace'(_0x3f6b46=null){const _0x3fc33a=_0x31845a,_0x1591a0=_0x5213ef[_0x3fc33a(0x11c)]?.[_0x3fc33a(0x150)];if(!_0x1591a0?.[_0x3fc33a(0x181)]||!_0x1591a0?.[_0x3fc33a(0x10e)])return;const _0xd86368={'env':this[_0x3fc33a(0x17c)],'mode':_0x3fc33a(0x177)};_0x3f6b46?.['name']&&(_0xd86368['pipeline']=_0x3f6b46[_0x3fc33a(0x14c)]),_0x1591a0[_0x3fc33a(0x10e)](_0x1591a0['resolve']('/engines',_0xd86368));},async 'openDemoModal'(){const _0x41eeef=_0x31845a;await _0x5213ef[_0x41eeef(0x12a)][_0x41eeef(0x149)][_0x41eeef(0x125)][_0x41eeef(0x16b)]({'owner':_0x5213ef,'title':_0x41eeef(0x14b),'canDrag':!0x0,'content':'<demo-env-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x5bba6e=>({'modal':_0x5bba6e,'onDone':async _0x930258=>{const _0x37da50=_0x41eeef;_0x5213ef[_0x37da50(0x12a)]['stores'][_0x37da50(0x10b)][_0x37da50(0x122)](_0x930258),await _0x5213ef[_0x37da50(0x12a)]['stores'][_0x37da50(0x10b)][_0x37da50(0x169)](),_0x5213ef[_0x37da50(0x12a)][_0x37da50(0x149)]?.[_0x37da50(0x11f)]?.[_0x37da50(0xf4)]?.(_0x37da50(0x168)+_0x930258+_0x37da50(0x118));}})});},'_unsubs':[],'_reloadTimer':null,'_scheduleReload'(){const _0x3651eb=_0x31845a;clearTimeout(this[_0x3651eb(0x12e)]),this[_0x3651eb(0x12e)]=setTimeout(()=>this[_0x3651eb(0x10d)](),0x258);},async '_reloadTypes'(){const _0x3875d4=_0x31845a;await Promise[_0x3875d4(0x17f)]([_0x5213ef[_0x3875d4(0x12a)][_0x3875d4(0x117)][_0x3875d4(0x10b)]['reloadTypes'](),_0x5213ef[_0x3875d4(0x12a)][_0x3875d4(0x117)][_0x3875d4(0x10b)]['reloadInfo']()]);},async 'loadViolations'(){const _0x10544b=_0x31845a;this[_0x10544b(0x13d)]=!0x0,this[_0x10544b(0x15f)]=null;try{const _0x5dffc9=await fetch(_0x5213ef[_0x10544b(0x12a)][_0x10544b(0x117)][_0x10544b(0x10b)][_0x10544b(0x101)]+_0x10544b(0x12d));if(0x194===_0x5dffc9['status'])return void(this[_0x10544b(0x131)]=[]);if(!_0x5dffc9['ok']){const _0x403104=await _0x5dffc9[_0x10544b(0x14d)]()[_0x10544b(0x114)](()=>({}));throw new Error(_0x403104?.[_0x10544b(0x112)]?.[_0x10544b(0x16c)]||_0x10544b(0x12b));}const _0xaab79c=await _0x5dffc9[_0x10544b(0x14d)]();this[_0x10544b(0x131)]=_0xaab79c?.[_0x10544b(0x111)]?.['violations']??_0xaab79c?.[_0x10544b(0x143)]?.[_0x10544b(0x131)]??[];}catch(_0x16f094){this[_0x10544b(0x15f)]=_0x16f094?.[_0x10544b(0x16c)]||_0x10544b(0x12b),this[_0x10544b(0x131)]=[];}finally{this[_0x10544b(0x13d)]=!0x1;}},get 'violationsByType'(){const _0x48b24a=_0x31845a,_0x455b66=new Map();for(const _0xf8b87f of this[_0x48b24a(0x131)]){const _0x407c89=_0xf8b87f[_0x48b24a(0x136)]||'?';_0x455b66[_0x48b24a(0x184)](_0x407c89)||_0x455b66[_0x48b24a(0x135)](_0x407c89,[]),_0x455b66['get'](_0x407c89)[_0x48b24a(0x10e)](_0xf8b87f);}return[..._0x455b66[_0x48b24a(0x11b)]()]['map'](([_0x4a8dcf,_0x5f147a])=>({'type':_0x4a8dcf,'count':_0x5f147a[_0x48b24a(0x129)],'items':_0x5f147a}))[_0x48b24a(0x148)]((_0x35d589,_0x4d89a0)=>_0x4d89a0[_0x48b24a(0x141)]-_0x35d589['count']);},get 'totalViolations'(){const _0x2dd2af=_0x31845a;return this[_0x2dd2af(0x131)]['length'];},'toggleViolationGroup'(_0x1ab10f){const _0x34479a=_0x31845a;this['expandedViolationType']=this[_0x34479a(0x10c)]===_0x1ab10f?null:_0x1ab10f;},'navigateToType'(_0x28f303){const _0x452b8d=_0x31845a;_0x5213ef[_0x452b8d(0x132)](_0x452b8d(0x115),{'type':_0x28f303});},async 'reloadOverviewData'(){const _0x5a95f9=_0x31845a;await Promise['all']([this[_0x5a95f9(0x10d)](),this['loadPipelines'](),this[_0x5a95f9(0xf7)]()]);},async 'loadTMStatus'(){const _0x56b897=_0x31845a;try{const _0x3ba225=_0x5213ef[_0x56b897(0x12a)][_0x56b897(0x117)][_0x56b897(0x10b)][_0x56b897(0x167)]||_0x56b897(0x128),_0x3fa8c3=await fetch(__ENV__[_0x56b897(0x147)]+_0x56b897(0x179)+encodeURIComponent(_0x3ba225)+_0x56b897(0x170));if(!_0x3fa8c3['ok'])return void(this[_0x56b897(0x120)]={'enabled':!0x1});const _0x589b4e=await _0x3fa8c3['json']();this['tmStatus']=_0x589b4e[_0x56b897(0x143)]??_0x589b4e['data']??{'enabled':!0x1};}catch{this[_0x56b897(0x120)]={'enabled':!0x1};}},async 'enableTM'(){const _0xa1fe26=_0x31845a;if(!this[_0xa1fe26(0x15b)]){this[_0xa1fe26(0x15b)]=!0x0,this[_0xa1fe26(0x13c)]=_0xa1fe26(0x157);try{const _0x25396a=_0x5213ef['$ok'][_0xa1fe26(0x117)][_0xa1fe26(0x10b)]['selectedEnv']||_0xa1fe26(0x128);await fetch(__ENV__['API']+'/env/'+encodeURIComponent(_0x25396a)+_0xa1fe26(0x144),{'method':_0xa1fe26(0x15a)});const _0x5d5294=Date['now']()+0x2710;for(;Date['now']()<_0x5d5294&&(await new Promise(_0x94cc05=>setTimeout(_0x94cc05,0x3e8)),await this[_0xa1fe26(0x137)](),!(this[_0xa1fe26(0x120)]?.[_0xa1fe26(0x13f)]>0x0)););}catch{}this[_0xa1fe26(0x15b)]=!0x1,this[_0xa1fe26(0x13c)]='';}},async 'disableTM'(){const _0x3e66e7=_0x31845a;if(!this[_0x3e66e7(0x15b)]){this['tmBusy']=!0x0;try{const _0x21b26e=_0x5213ef[_0x3e66e7(0x12a)][_0x3e66e7(0x117)][_0x3e66e7(0x10b)]['selectedEnv']||_0x3e66e7(0x128);await fetch(__ENV__[_0x3e66e7(0x147)]+_0x3e66e7(0x179)+encodeURIComponent(_0x21b26e)+_0x3e66e7(0x144),{'method':'DELETE'}),await this[_0x3e66e7(0x137)]();}catch{}this[_0x3e66e7(0x15b)]=!0x1;}}}),'init'(_0x3015c1){const _0xd023a6=_0x31845a;this['loadTMStatus'](),_0x3015c1[_0xd023a6(0x17e)](()=>_0x3015c1[_0xd023a6(0x12a)]['stores'][_0xd023a6(0x10b)][_0xd023a6(0x167)],()=>{const _0x4906f4=_0xd023a6;this['reloadOverviewData'](),this[_0x4906f4(0x137)]();});},'mount'(){const _0x21af7f=_0x31845a;this[_0x21af7f(0x176)]();const _0x21922e=()=>this[_0x21af7f(0x13e)]();this[_0x21af7f(0x100)]=[_0x151063['on'](_0x21af7f(0x138),()=>this[_0x21af7f(0xf5)]()),_0x151063['on'](_0x21af7f(0x156),()=>this[_0x21af7f(0xf5)]()),_0x151063['on'](_0x21af7f(0xf9),()=>this[_0x21af7f(0xf5)]()),_0x151063['on']('index:drop',()=>this[_0x21af7f(0xf5)]()),_0x151063['on']('engine:started',_0x21922e),_0x151063['on'](_0x21af7f(0x108),_0x21922e),_0x151063['on'](_0x21af7f(0x172),_0x21922e),_0x151063['on'](_0x21af7f(0xfa),_0x21922e),_0x151063['on'](_0x21af7f(0x158),_0x21922e),_0x151063['on'](_0x21af7f(0x133),_0x21922e),_0x151063['on'](_0x21af7f(0x160),_0x21922e),_0x151063['on'](_0x21af7f(0x14e),_0x21922e),_0x151063['on']('item:create',()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x17d),()=>this[_0x21af7f(0x162)]()),_0x151063['on']('item:remove',()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x113),()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x139),()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x10f),()=>this[_0x21af7f(0x162)]())];},'unmount'(){const _0x24df3d=_0x31845a;clearTimeout(this['_reloadTimer']);for(const _0x23a28a of this[_0x24df3d(0x100)])_0x23a28a();this[_0x24df3d(0x100)]=[];},'template':_0x31845a(0x103),'style':_0x31845a(0x171)};
1
+ const _0x4f20f9=_0x2677;(function(_0x4a5d77,_0x464bc5){const _0x5b7585=_0x2677,_0x52f800=_0x4a5d77();while(!![]){try{const _0x40603b=parseInt(_0x5b7585(0x214))/0x1+parseInt(_0x5b7585(0x216))/0x2*(-parseInt(_0x5b7585(0x1f5))/0x3)+parseInt(_0x5b7585(0x1a7))/0x4*(-parseInt(_0x5b7585(0x1f7))/0x5)+-parseInt(_0x5b7585(0x205))/0x6*(parseInt(_0x5b7585(0x225))/0x7)+-parseInt(_0x5b7585(0x20a))/0x8*(parseInt(_0x5b7585(0x1d9))/0x9)+-parseInt(_0x5b7585(0x1ea))/0xa*(-parseInt(_0x5b7585(0x1dd))/0xb)+-parseInt(_0x5b7585(0x1ab))/0xc*(-parseInt(_0x5b7585(0x200))/0xd);if(_0x40603b===_0x464bc5)break;else _0x52f800['push'](_0x52f800['shift']());}catch(_0x43ba89){_0x52f800['push'](_0x52f800['shift']());}}}(_0x3beb,0x9ec63));function _0x2677(_0x4eba6c,_0x15112b){_0x4eba6c=_0x4eba6c-0x19a;const _0x3beb3d=_0x3beb();let _0x267709=_0x3beb3d[_0x4eba6c];return _0x267709;}function _0x3beb(){const _0x1bdaf3=['length','var(--okdb-accent)','\x20·\x20','7491AybrIC','item:update','filter','shared','$watch','reduce','item:remove','recentBusy','error','add','type','Failed\x20to\x20load\x20violations','toLocaleDateString','15830KRHQtt','loadViolations','h\x20ago','Failed\x20to\x20load\x20changes','var(--okdb-warning)','loadPipelines','slice','tmBusy','success','\x22\x20is\x20ready!','name','54gFCJwy','pipeline:stop','1288720SfEndh','startsWith','$router','var(--okdb-purple)','var(--okdb-danger)','open','now','role','reloadTypes','26ktvByc','No\x20members','\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(4,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2016px\x2018px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.06em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-value\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2022px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2013px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-collapse:\x20collapse;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20th\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x207px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.05em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row:hover\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#ffffff07;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20tbody\x20tr:last-child\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-headline\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-pill\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2024px\x2020px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(auto-fit,\x20minmax(240px,\x201fr));\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2011px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20tbody\x20.ov-row--sm:last-child\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group:hover\x20{\x20background:\x20#ffffff07;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-arrow\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20inline-block;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x2016px\x206px\x2038px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row:last-child\x20{\x20border-bottom:\x20none;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2030px\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Demo\x20data\x20card\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20border-color\x20.25s,\x20box-shadow\x20.25s,\x20transform\x20.2s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2053%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent),\x200\x208px\x2040px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x209%,\x20transparent),\x200\x200\x2080px\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20transform:\x20translateY(-2px);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a\x20\x20\x20\x20\x20\x20\x20\x20inset:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2020%\x2050%,\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2080%\x2030%,\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2050%\x2090%,\x20color-mix(in\x20srgb,\x20var(--okdb-success)\x204%,\x20transparent),\x20transparent\x2055%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20pointer-events:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-aurora\x208s\x20ease-in-out\x20infinite\x20alternate;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__sparkle\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2026px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-accent),\x20var(--okdb-purple)\x2040%,\x20var(--okdb-success));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-hue\x206s\x20linear\x20infinite;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2017px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-app-fg-strong),\x20var(--okdb-accent));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__desc\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20380px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.65;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__badges\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-badge\x20{\x20transform:\x20scale(1.05);\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__cta\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-accent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.8;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20opacity\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-card__cta\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-hue\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20filter:\x20hue-rotate(0deg);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20filter:\x20hue-rotate(360deg);\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20opacity:\x20.7;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20opacity:\x201.3;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','pipelinesError','types','390qrjYcn','all','toLowerCase','/changelog?limit=10','sync:apply','4123816nleyQq','index:registered','size','DELETE','reloadInfo','count','Failed\x20to\x20load\x20pipelines','violations','running','result','1062538MwtjYy','violationsError','110282oqvutG','/time-machine/enable','push','message','_reloadTypes','indexes','API','entries','/env/','recentChanges','item:create','var(--okdb-app-fg-muted)','loadTMStatus','pipelineLabel','engine:installed','91532tnBfVw','info','lastProcessedClock','_unsubs','engine:stopped','$ok','/engines','envName','online','scanning…','s\x20ago','engine:error','health','toFixed','has','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:20px;\x20max-width:860px;\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:18px;\x22>Database\x20Overview</div>\x0a\x20\x20\x20\x20<if\x20:=\x22recentBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>updating…</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadRecent()\x22\x20:disabled=\x22recentBusy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20↻\x20Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Stat\x20cards\x20row\x20-->\x0a\x20\x20<div\x20class=\x22ov-stat-row\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>DB\x20Size</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--accent);\x22>{{\x20approxSize\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Clock</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22font-family:monospace;\x20font-size:18px;\x22>{{\x20fmt(info?.clock)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>User\x20Types</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-purple);\x22>{{\x20types.length\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Total\x20Records</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20fmt(totalRecords)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Empty\x20state\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Standard\x20empty\x20hint\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20margin-bottom:12px;\x22>🗄️</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:15px;\x20margin-bottom:5px;\x22>No\x20types\x20registered\x20yet</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20opacity:.6;\x20line-height:1.7;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20<b>Register\x20Type\x20+</b>\x20in\x20the\x20sidebar\x20to\x20create\x20your\x20first\x20collection.<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Types\x20are\x20strongly-typed\x20document\x20collections\x20stored\x20in\x20LMDB.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Demo\x20data\x20card\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card\x22\x20@click=\x22openDemoModal()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__aurora\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22position:relative;\x20z-index:1;\x20display:flex;\x20flex-direction:column;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__sparkle\x22>✦</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__title\x22>Generate\x20Demo\x20Environment</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__desc\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Instantly\x20populate\x20a\x20new\x20environment\x20with\x20realistic\x20data,\x20indexes,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20and\x20full-text\x20search\x20—\x20ready\x20to\x20explore\x20in\x20seconds.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent);\x22>🛒\x20E-Commerce</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-accent);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x22>📊\x20Analytics</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-purple);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-purple)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x22>📝\x20Content\x20Hub</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x207%,\x20transparent);\x22>👥\x20Team\x20Directory</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-orange);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x207%,\x20transparent);\x22>🗺️\x20City\x20Explorer</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__cta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Choose\x20a\x20preset</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:6px;\x20font-size:14px;\x22>→</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Types\x20table\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Types</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20types.length\x20}}\x20user&nbsp;·&nbsp;{{\x20systemTypes.length\x20}}\x20system\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20class=\x22ov-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th>Name</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Records</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Pages</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Indexes</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th></th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22types\x22\x20let:item=\x22t\x22\x20class=\x22ov-row\x22\x20@click=\x22select(t)\x22\x20title=\x22Open\x20in\x20type\x20viewer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x22>{{\x20t.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20color:var(--accent);\x20font-weight:600;\x22>{{\x20fmt(t.count)\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.5;\x20font-size:12px;\x22>{{\x20fmt(typePages(t.type))\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:1px\x207px;\x20border-radius:999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x2033%,\x20transparent);\x20color:var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:11px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>{{\x20typeIndexCount(t.type)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.3;\x22>—</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.3;\x20font-size:11px;\x20padding-right:16px;\x22>→</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Violations\x20summary\x20-->\x0a\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x20||\x20violationsBusy\x20||\x20violationsError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Schema\x20Violations</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20font-weight:600;\x22>{{\x20totalViolations\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>across\x20all\x20types\x20in\x20{{\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadViolations()\x22\x20:disabled=\x22violationsBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsBusy\x20&&\x20violations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.45;\x22>Loading…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px\x2016px;\x20color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20violationsError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!violationsBusy\x20&&\x20!violationsError\x20&&\x20violationsByType.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.4;\x22>No\x20violations.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsByType.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22violationsByType\x22\x20let:item=\x22grp\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20type\x20group\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-group\x22\x20@click=\x22toggleViolationGroup(grp.type)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-viol-arrow\x22\x20:style=\x22expandedViolationType\x20===\x20grp.type\x20?\x20\x27transform:rotate(90deg)\x27\x20:\x20\x27\x27\x22>›</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x20flex:1;\x22>{{\x20grp.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20margin-right:8px;\x22>{{\x20grp.count\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click:stop=\x22navigateToType(grp.type)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:5px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:transparent;\x20color:var(--okdb-sky);\x20cursor:pointer;\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20Schema\x20tab\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Schema\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20expanded\x20violations\x20for\x20this\x20type\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedViolationType\x20===\x20grp.type\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22grp.items\x22\x20let:item=\x22v\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:11px;\x20color:var(--okdb-json-key);\x20flex:1;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20v.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.45;\x20white-space:nowrap;\x20margin-left:8px;\x22>{{\x20(v.errors\x20??\x20[]).length\x20||\x20(v.errorCount\x20??\x200)\x20}}\x20error(s)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Time\x20Machine\x20card\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:13px;\x22>⏱\x20Time\x20Machine</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!tmStatus\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>loading…</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22tmStatus.enabled\x20?\x20disableTM()\x20:\x20enableTM()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27font-size:11px;\x20padding:2px\x2010px;\x20color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20border-color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent)\x27)\x20+\x20\x27;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20tmStatus.enabled\x20?\x20\x27Disable\x27\x20:\x20\x27Enable\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>{{\x20tmScanMsg\x20||\x20\x27…\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20flex-direction:column;\x20gap:3px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>tracking\x20since\x20clock\x20{{\x20tmStatus.startClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20!==\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>last\x20processed:\x20{{\x20tmStatus.lastProcessedClock\x20}}\x20·\x20env\x20at:\x20{{\x20tmStatus.envClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20===\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>processed\x20through\x20clock\x20{{\x20tmStatus.lastProcessedClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20tmStatus.headCount\x20}}\x20heads</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>disabled</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22ov-card\x22\x20style=\x22overflow:visible;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Pipelines</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>overview\x20highlights\x20for\x20the\x20current\x20environment</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:16px;\x20display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-headline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x20min-width:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x20color:var(--okdb-app-fg);\x22>{{\x20pipelineSummaryText\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.error\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:var(--okdb-danger);border-color:var(--okdb-danger-deep-border);background:#450a0a33;\x27\x22>{{\x20pipelineHealthCounts.error\x20}}\x20error</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.degraded\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#fcd34d;border-color:#854d0e;background:#451a0333;\x27\x22>{{\x20pipelineHealthCounts.degraded\x20}}\x20degraded</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.online\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#86efac;border-color:#166534;background:#052e1633;\x27\x22>{{\x20pipelineHealthCounts.online\x20}}\x20online</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:640px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20The\x20overview\x20should\x20only\x20surface\x20high-signal\x20pipeline\x20highlights.\x20Open\x20the\x20dedicated\x20workspace\x20when\x20you\x20want\x20the\x20full\x20grouped\x20pipeline\x20list\x20and\x20member\x20details.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadPipelines()\x22\x20:disabled=\x22pipelinesBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openPipelinesWorkspace()\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x22>Open\x20pipelines\x20workspace\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-error\x22>{{\x20pipelinesError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x22>Loading\x20pipeline\x20highlights…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:24px;\x20opacity:.3;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.78;\x22>No\x20pipelines\x20in\x20{{\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20will\x20appear\x20here\x20once\x20created\x20or\x20synced.\x20This\x20frontpage\x20intentionally\x20stays\x20compact\x20and\x20only\x20shows\x20a\x20small\x20highlight\x20list.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHighlights.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22pipelineHighlights\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22ov-pipeline-highlight\x22\x20@click=\x22openPipelinesWorkspace(pipeline)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:9px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineLabel(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:11px;color:\x27\x20+\x20healthColor(pipeline.health)\x20+\x20\x27;opacity:.95;white-space:nowrap;\x27\x22>{{\x20pipeline.health\x20||\x20\x27unknown\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:12px;\x20flex-wrap:wrap;\x20margin-top:6px;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Members:</span>\x20<span\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20fmt(pipeline.engines?.length\x20||\x200)\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipeline.status\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Status:</span>\x20<span\x20:style=\x22\x27color:\x27\x20+\x20statusColor(pipeline.status)\x22>{{\x20pipeline.status\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineRoleSummary(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelines.length\x20>\x20pipelineHighlights.length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Showing\x20{{\x20pipelineHighlights.length\x20}}\x20of\x20{{\x20pipelines.length\x20}}\x20pipelines.\x20Open\x20the\x20dedicated\x20workspace\x20for\x20the\x20full\x20inventory.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Recent\x20activity\x20-->\x0a\x20\x20<if\x20:=\x22recentChanges.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Recent\x20Activity</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-left:auto;\x22>last\x20{{\x20recentChanges.length\x20}}\x20changes</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22recentChanges\x22\x20let:item=\x22ch\x22\x20class=\x22ov-row\x20ov-row--sm\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20width:60px;\x20font-family:monospace;\x20opacity:.4;\x20padding-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.clock\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22width:100px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:10px;\x20padding:2px\x206px;\x20border-radius:3px;\x20border:1px\x20solid;\x20color:\x27+actionColor(ch.action)+\x27;\x20border-color:\x27+actionColor(ch.action)+\x2755;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionLabel(ch.action)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.7;\x20max-width:110px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.type\x20||\x20\x27—\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.45;\x20max-width:160px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.key\x20||\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20opacity:.35;\x20white-space:nowrap;\x20font-size:11px;\x20padding-right:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20relTime(ch.timestamp)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','reloadOverviewData','localeCompare','env','status','apiBase','Unnamed\x20pipeline','<demo-env-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','resolve','json','engine:uninstalled','20ktfunI','✦\x20Demo\x20environment\x20\x22','catch','pipelines','16031580CKGkWx','pipeline:delete','var(--okdb-sky)','selectEnv','map','pipelineEngineCount','tmStatus','lastPageNumber','default','recentError','selectedEnv','violationsBusy','keys','\x20engine','engines','degraded','$vars','stores','select','sort','okdb','round','$dispatch','pipeline:start','building','toLocaleString','just\x20now','expandedViolationType','_reloadTimer','label','data','type:drop','index:drop','meta','tmScanMsg','system:poke','idle','_scheduleReload','m\x20ago','var(--okdb-success)','pipelinesBusy','stopped','pipeline','set','modal','pipelineSeverity','18yXcRlv'];_0x3beb=function(){return _0x1bdaf3;};return _0x3beb();}import _0x39dd26 from'../../../stores/events-store.js';import _0x2dea8d from'../modals/demo-env-modal.ok.js';export default{'tag':'db-overview','dependencies':[_0x2dea8d],'attr':{'stats':{}},'context':_0x13454c=>({'recentChanges':[],'recentBusy':!0x1,'recentError':null,'pipelines':[],'pipelinesBusy':!0x1,'pipelinesError':null,'violations':[],'violationsBusy':!0x1,'violationsError':null,'expandedViolationType':null,'tmStatus':null,'tmBusy':!0x1,'tmScanMsg':'',get 'info'(){const _0x977f40=_0x2677;return _0x13454c[_0x977f40(0x22a)][_0x977f40(0x1bc)][_0x977f40(0x1bf)][_0x977f40(0x226)];},get 'types'(){const _0x16d6bd=_0x2677;return(_0x13454c[_0x16d6bd(0x22a)][_0x16d6bd(0x1bc)][_0x16d6bd(0x1bf)]['types']||[])[_0x16d6bd(0x1df)](_0x5736b6=>!_0x5736b6['type']['startsWith']('~'))['sort']((_0x5b8c30,_0xd6558f)=>_0x5b8c30['type'][_0x16d6bd(0x19e)](_0xd6558f[_0x16d6bd(0x1e7)]));},get 'systemTypes'(){const _0x594046=_0x2677;return(_0x13454c[_0x594046(0x22a)]['stores']['okdb'][_0x594046(0x204)]||[])['filter'](_0x5b96e7=>_0x5b96e7[_0x594046(0x1e7)][_0x594046(0x1f8)]('~'));},get 'envName'(){const _0x48ce1f=_0x2677;return _0x13454c[_0x48ce1f(0x22a)][_0x48ce1f(0x1bc)][_0x48ce1f(0x1bf)]['selectedEnv']||'default';},get 'totalRecords'(){const _0x555e59=_0x2677;return(_0x13454c[_0x555e59(0x22a)]['stores'][_0x555e59(0x1bf)][_0x555e59(0x204)]||[])['filter'](_0x3af6ed=>!_0x3af6ed[_0x555e59(0x1e7)][_0x555e59(0x1f8)]('~'))[_0x555e59(0x1e2)]((_0x13d539,_0x26ca42)=>_0x13d539+(_0x26ca42[_0x555e59(0x20f)]||0x0),0x0);},get 'approxSize'(){const _0x19054a=_0x2677,_0x388bd5=this[_0x19054a(0x226)]?.[_0x19054a(0x1b2)],_0x37e135=this['info']?.['pageSize'];if(!_0x388bd5||!_0x37e135)return'--';let _0x47aea8=_0x388bd5*_0x37e135;const _0x5e2536=['B','KB','MB','GB','TB'];let _0x3cee29=0x0;for(;_0x47aea8>=0x400&&_0x3cee29<_0x5e2536[_0x19054a(0x1da)]-0x1;)_0x47aea8/=0x400,_0x3cee29++;return _0x47aea8[_0x19054a(0x19a)](0x2)+'\x20'+_0x5e2536[_0x3cee29];},'typeIndexCount'(_0x132edf){const _0x3afe45=_0x2677,_0x1da3cf=this[_0x3afe45(0x226)]?.[_0x3afe45(0x204)]?.[_0x132edf]?.[_0x3afe45(0x21b)];return _0x1da3cf?Object[_0x3afe45(0x1b7)](_0x1da3cf)[_0x3afe45(0x1da)]:0x0;},'typePages'(_0x58b78e){const _0x2cd919=_0x2677;return this[_0x2cd919(0x226)]?.['types']?.[_0x58b78e]?.[_0x2cd919(0x1c9)]?.['pages']??null;},'select'(_0x53e861){const _0x229741=_0x2677;_0x13454c[_0x229741(0x1c1)](_0x229741(0x1bd),_0x53e861);},async 'loadRecent'(){const _0x20273a=_0x2677;this[_0x20273a(0x1e4)]=!0x0,this[_0x20273a(0x1b4)]=null;try{const _0x40c598=await fetch(_0x13454c[_0x20273a(0x22a)][_0x20273a(0x1bc)]['okdb'][_0x20273a(0x1a1)]+_0x20273a(0x208));if(_0x40c598['ok']){const _0x1ff880=await _0x40c598[_0x20273a(0x1a5)]();this[_0x20273a(0x21f)]=_0x1ff880[_0x20273a(0x1c9)]??[];}}catch(_0x56a620){this[_0x20273a(0x1b4)]=_0x56a620?.[_0x20273a(0x219)]||_0x20273a(0x1ed);}finally{this[_0x20273a(0x1e4)]=!0x1;}},'actionColor':_0x11b9a2=>({'put':'var(--okdb-success)','remove':'var(--okdb-danger)','type_register':_0x4f20f9(0x1db),'type_drop':'var(--okdb-danger)','index_register':_0x4f20f9(0x1fa),'index_drop':_0x4f20f9(0x1ee)}[_0x11b9a2]||_0x4f20f9(0x221)),'actionLabel':_0x126d9d=>(_0x126d9d||'')['replace'](/_/g,'\x20'),'relTime'(_0x466dfc){const _0x52490a=_0x4f20f9;if(!_0x466dfc)return'—';const _0x5a31b8=Date[_0x52490a(0x1fd)]()-_0x466dfc;return _0x5a31b8<0x1388?_0x52490a(0x1c5):_0x5a31b8<0xea60?Math[_0x52490a(0x1c0)](_0x5a31b8/0x3e8)+_0x52490a(0x22f):_0x5a31b8<0x36ee80?Math[_0x52490a(0x1c0)](_0x5a31b8/0xea60)+_0x52490a(0x1d1):_0x5a31b8<0x5265c00?Math['round'](_0x5a31b8/0x36ee80)+_0x52490a(0x1ec):new Date(_0x466dfc)[_0x52490a(0x1e9)]();},'fmt':_0x493360=>null==_0x493360?'--':Number(_0x493360)[_0x4f20f9(0x1c4)](),'healthColor':_0x3fa3c2=>'online'===_0x3fa3c2?'var(--okdb-success)':_0x4f20f9(0x1ba)===_0x3fa3c2?_0x4f20f9(0x1ee):_0x4f20f9(0x1e5)===_0x3fa3c2?_0x4f20f9(0x1fb):_0x4f20f9(0x1d4)===_0x3fa3c2?_0x4f20f9(0x221):_0x4f20f9(0x1ad),'statusColor':_0x5a5ffc=>_0x4f20f9(0x212)===_0x5a5ffc||'online'===_0x5a5ffc?_0x4f20f9(0x1d2):'building'===_0x5a5ffc||'degraded'===_0x5a5ffc?_0x4f20f9(0x1ee):_0x4f20f9(0x1e5)===_0x5a5ffc?_0x4f20f9(0x1fb):_0x4f20f9(0x1d4)===_0x5a5ffc||_0x4f20f9(0x1cf)===_0x5a5ffc?'var(--okdb-app-fg-muted)':_0x4f20f9(0x1ad),'pipelineKey'(_0x415fc6){const _0x1596ae=_0x4f20f9;return(_0x415fc6?.[_0x1596ae(0x19f)]||this[_0x1596ae(0x22c)])+'::'+(_0x415fc6?.['name']||'');},'pipelineLabel':_0x165b8f=>_0x165b8f?.[_0x4f20f9(0x1cc)]?.[_0x4f20f9(0x1c8)]||_0x165b8f?.[_0x4f20f9(0x1f4)]||_0x4f20f9(0x1a2),'pipelineRoleSummary'(_0x210cbc){const _0x15a5b3=_0x4f20f9,_0x3e6876=Array['isArray'](_0x210cbc?.[_0x15a5b3(0x1b9)])?_0x210cbc[_0x15a5b3(0x1b9)]:[];if(0x0===_0x3e6876[_0x15a5b3(0x1da)])return _0x15a5b3(0x201);const _0x3ba742=[];for(const _0x370de4 of _0x3e6876){const _0x356947=_0x370de4?.[_0x15a5b3(0x1fe)]||_0x370de4?.[_0x15a5b3(0x1e7)];if(_0x356947&&!_0x3ba742['includes'](_0x356947)&&(_0x3ba742[_0x15a5b3(0x218)](_0x356947),_0x3ba742[_0x15a5b3(0x1da)]>=0x3))break;}return _0x3ba742['join'](_0x15a5b3(0x1dc));},'pipelineSeverity'(_0x47ccdf){const _0x29f56f=_0x4f20f9,_0x223ba2=String(_0x47ccdf?.[_0x29f56f(0x231)]||'')[_0x29f56f(0x207)](),_0x4774a4=String(_0x47ccdf?.[_0x29f56f(0x1a0)]||'')[_0x29f56f(0x207)]();return _0x29f56f(0x1e5)===_0x223ba2||_0x29f56f(0x1e5)===_0x4774a4?0x0:_0x29f56f(0x1ba)===_0x223ba2||_0x29f56f(0x1ba)===_0x4774a4||_0x29f56f(0x1c3)===_0x4774a4?0x1:_0x29f56f(0x1d4)===_0x223ba2||'stopped'===_0x4774a4||_0x29f56f(0x1cf)===_0x4774a4?0x2:'online'===_0x223ba2||_0x29f56f(0x212)===_0x4774a4||_0x29f56f(0x22d)===_0x4774a4?0x3:0x4;},get 'pipelineEngineCount'(){const _0x13b6b3=_0x4f20f9,_0xb293aa=new Set();for(const _0x6cadf5 of this[_0x13b6b3(0x1aa)])for(const _0xcc5791 of _0x6cadf5?.[_0x13b6b3(0x1b9)]||[]){const _0x56d5f7=_0xcc5791?.['key']||(_0xcc5791?.[_0x13b6b3(0x1e7)]&&_0xcc5791?.[_0x13b6b3(0x1f4)]?_0xcc5791[_0x13b6b3(0x1e7)]+'@'+_0xcc5791[_0x13b6b3(0x1f4)]:_0xcc5791?.[_0x13b6b3(0x1f4)])||null;_0x56d5f7&&_0xb293aa[_0x13b6b3(0x1e6)]((_0x6cadf5?.[_0x13b6b3(0x19f)]||this[_0x13b6b3(0x22c)])+'::'+_0x56d5f7);}return _0xb293aa[_0x13b6b3(0x20c)];},get 'pipelineHealthCounts'(){const _0x29f498=_0x4f20f9,_0x1f9719={'online':0x0,'degraded':0x0,'error':0x0,'stopped':0x0};for(const _0x5ac2fb of this[_0x29f498(0x1aa)]){const _0x36648a=String(_0x5ac2fb?.[_0x29f498(0x231)]||'')[_0x29f498(0x207)]();null!=_0x1f9719[_0x36648a]&&(_0x1f9719[_0x36648a]+=0x1);}return _0x1f9719;},get 'pipelineSummaryText'(){const _0x53a6fd=_0x4f20f9,_0x20869d=this[_0x53a6fd(0x1aa)][_0x53a6fd(0x1da)],_0x41fb88=this[_0x53a6fd(0x1b0)];return _0x20869d+'\x20pipeline'+(0x1===_0x20869d?'':'s')+'\x20·\x20'+_0x41fb88+_0x53a6fd(0x1b8)+(0x1===_0x41fb88?'':'s');},get 'pipelineHighlights'(){const _0x3b7fa3=_0x4f20f9;return[...this['pipelines']][_0x3b7fa3(0x1be)]((_0x1b74a8,_0x584cc2)=>{const _0xd51208=_0x3b7fa3,_0x32d21e=this[_0xd51208(0x1d8)](_0x1b74a8)-this[_0xd51208(0x1d8)](_0x584cc2);return 0x0!==_0x32d21e?_0x32d21e:this[_0xd51208(0x223)](_0x1b74a8)[_0xd51208(0x19e)](this['pipelineLabel'](_0x584cc2));})[_0x3b7fa3(0x1f0)](0x0,0x4);},async 'loadPipelines'(){const _0x6a770e=_0x4f20f9;this[_0x6a770e(0x1d3)]=!0x0,this[_0x6a770e(0x203)]=null;try{const _0xd69947=await fetch(_0x13454c[_0x6a770e(0x22a)][_0x6a770e(0x1bc)][_0x6a770e(0x1bf)][_0x6a770e(0x1a1)]+'/pipelines'),_0x4742a2=await _0xd69947[_0x6a770e(0x1a5)]()[_0x6a770e(0x1a9)](()=>({}));if(!_0xd69947['ok'])throw new Error(_0x4742a2?.[_0x6a770e(0x1e5)]?.[_0x6a770e(0x219)]||_0x6a770e(0x210));this[_0x6a770e(0x1aa)]=_0x4742a2?.[_0x6a770e(0x1c9)]??_0x4742a2?.[_0x6a770e(0x213)]??[];}catch(_0xbd12bf){this[_0x6a770e(0x203)]=_0xbd12bf?.[_0x6a770e(0x219)]||'Failed\x20to\x20load\x20pipelines',this['pipelines']=[];}finally{this['pipelinesBusy']=!0x1;}},'openPipelinesWorkspace'(_0x52a2af=null){const _0x4fc534=_0x4f20f9,_0x109c75=_0x13454c[_0x4fc534(0x1bb)]?.[_0x4fc534(0x1f9)];if(!_0x109c75?.[_0x4fc534(0x1a4)]||!_0x109c75?.[_0x4fc534(0x218)])return;const _0x50ba27={'env':this['envName'],'mode':_0x4fc534(0x1aa)};_0x52a2af?.[_0x4fc534(0x1f4)]&&(_0x50ba27[_0x4fc534(0x1d5)]=_0x52a2af['name']),_0x109c75['push'](_0x109c75[_0x4fc534(0x1a4)](_0x4fc534(0x22b),_0x50ba27));},async 'openDemoModal'(){const _0x4ad28c=_0x4f20f9;await _0x13454c[_0x4ad28c(0x22a)][_0x4ad28c(0x1e0)][_0x4ad28c(0x1d7)][_0x4ad28c(0x1fc)]({'owner':_0x13454c,'title':'<span\x20style=\x22background:linear-gradient(135deg,var(--okdb-accent),var(--okdb-purple)\x2050%,var(--okdb-success));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;font-size:15px;\x22>✦\x20Demo\x20Environment</span>','canDrag':!0x0,'content':_0x4ad28c(0x1a3),'context':_0x2e9916=>({'modal':_0x2e9916,'onDone':async _0x17a6d0=>{const _0x4d5e1e=_0x4ad28c;_0x13454c[_0x4d5e1e(0x22a)]['stores'][_0x4d5e1e(0x1bf)][_0x4d5e1e(0x1ae)](_0x17a6d0),await _0x13454c[_0x4d5e1e(0x22a)]['stores'][_0x4d5e1e(0x1bf)]['reloadEnvs'](),_0x13454c[_0x4d5e1e(0x22a)][_0x4d5e1e(0x1e0)]?.['toast']?.[_0x4d5e1e(0x1f2)]?.(_0x4d5e1e(0x1a8)+_0x17a6d0+_0x4d5e1e(0x1f3));}})});},'_unsubs':[],'_reloadTimer':null,'_scheduleReload'(){const _0x52931d=_0x4f20f9;clearTimeout(this['_reloadTimer']),this[_0x52931d(0x1c7)]=setTimeout(()=>this['loadRecent'](),0x258);},async '_reloadTypes'(){const _0x480bad=_0x4f20f9;await Promise[_0x480bad(0x206)]([_0x13454c[_0x480bad(0x22a)][_0x480bad(0x1bc)][_0x480bad(0x1bf)][_0x480bad(0x1ff)](),_0x13454c['$ok']['stores']['okdb'][_0x480bad(0x20e)]()]);},async 'loadViolations'(){const _0x40b8ed=_0x4f20f9;this['violationsBusy']=!0x0,this[_0x40b8ed(0x215)]=null;try{const _0x11dbb8=await fetch(_0x13454c['$ok'][_0x40b8ed(0x1bc)][_0x40b8ed(0x1bf)][_0x40b8ed(0x1a1)]+'/violations');if(0x194===_0x11dbb8[_0x40b8ed(0x1a0)])return void(this[_0x40b8ed(0x211)]=[]);if(!_0x11dbb8['ok']){const _0x2a2e9c=await _0x11dbb8[_0x40b8ed(0x1a5)]()['catch'](()=>({}));throw new Error(_0x2a2e9c?.[_0x40b8ed(0x1e5)]?.['message']||_0x40b8ed(0x1e8));}const _0x3bd965=await _0x11dbb8[_0x40b8ed(0x1a5)]();this[_0x40b8ed(0x211)]=_0x3bd965?.[_0x40b8ed(0x1c9)]?.[_0x40b8ed(0x211)]??_0x3bd965?.[_0x40b8ed(0x213)]?.['violations']??[];}catch(_0x5e9b3a){this[_0x40b8ed(0x215)]=_0x5e9b3a?.[_0x40b8ed(0x219)]||'Failed\x20to\x20load\x20violations',this[_0x40b8ed(0x211)]=[];}finally{this[_0x40b8ed(0x1b6)]=!0x1;}},get 'violationsByType'(){const _0x2e0395=_0x4f20f9,_0x2c1420=new Map();for(const _0x912595 of this[_0x2e0395(0x211)]){const _0x5a8009=_0x912595[_0x2e0395(0x1e7)]||'?';_0x2c1420[_0x2e0395(0x19b)](_0x5a8009)||_0x2c1420[_0x2e0395(0x1d6)](_0x5a8009,[]),_0x2c1420['get'](_0x5a8009)[_0x2e0395(0x218)](_0x912595);}return[..._0x2c1420[_0x2e0395(0x21d)]()][_0x2e0395(0x1af)](([_0x12baf3,_0xcc3a9a])=>({'type':_0x12baf3,'count':_0xcc3a9a['length'],'items':_0xcc3a9a}))[_0x2e0395(0x1be)]((_0x55734b,_0x19dbe3)=>_0x19dbe3[_0x2e0395(0x20f)]-_0x55734b[_0x2e0395(0x20f)]);},get 'totalViolations'(){const _0x3c7e1c=_0x4f20f9;return this[_0x3c7e1c(0x211)][_0x3c7e1c(0x1da)];},'toggleViolationGroup'(_0x43f506){const _0x559e18=_0x4f20f9;this[_0x559e18(0x1c6)]=this[_0x559e18(0x1c6)]===_0x43f506?null:_0x43f506;},'navigateToType'(_0x112dfb){const _0x392663=_0x4f20f9;_0x13454c[_0x392663(0x1c1)]('select',{'type':_0x112dfb});},async 'reloadOverviewData'(){const _0x4f8298=_0x4f20f9;await Promise[_0x4f8298(0x206)]([this['loadRecent'](),this[_0x4f8298(0x1ef)](),this[_0x4f8298(0x1eb)]()]);},async 'loadTMStatus'(){const _0x502585=_0x4f20f9;try{const _0x297ff6=_0x13454c[_0x502585(0x22a)][_0x502585(0x1bc)]['okdb']['selectedEnv']||_0x502585(0x1b3),_0x365848=await fetch(__ENV__['API']+_0x502585(0x21e)+encodeURIComponent(_0x297ff6)+'/time-machine/status');if(!_0x365848['ok'])return void(this['tmStatus']={'enabled':!0x1});const _0x3d84b7=await _0x365848[_0x502585(0x1a5)]();this[_0x502585(0x1b1)]=_0x3d84b7[_0x502585(0x213)]??_0x3d84b7[_0x502585(0x1c9)]??{'enabled':!0x1};}catch{this[_0x502585(0x1b1)]={'enabled':!0x1};}},async 'enableTM'(){const _0x1806aa=_0x4f20f9;if(!this['tmBusy']){this[_0x1806aa(0x1f1)]=!0x0,this[_0x1806aa(0x1cd)]=_0x1806aa(0x22e);try{const _0x29e972=_0x13454c[_0x1806aa(0x22a)][_0x1806aa(0x1bc)][_0x1806aa(0x1bf)][_0x1806aa(0x1b5)]||_0x1806aa(0x1b3);await fetch(__ENV__[_0x1806aa(0x21c)]+_0x1806aa(0x21e)+encodeURIComponent(_0x29e972)+_0x1806aa(0x217),{'method':'POST'});const _0x44f84f=Date[_0x1806aa(0x1fd)]()+0x2710;for(;Date[_0x1806aa(0x1fd)]()<_0x44f84f&&(await new Promise(_0x3e4ac5=>setTimeout(_0x3e4ac5,0x3e8)),await this[_0x1806aa(0x222)](),!(this['tmStatus']?.[_0x1806aa(0x227)]>0x0)););}catch{}this[_0x1806aa(0x1f1)]=!0x1,this[_0x1806aa(0x1cd)]='';}},async 'disableTM'(){const _0x1ff2ca=_0x4f20f9;if(!this[_0x1ff2ca(0x1f1)]){this[_0x1ff2ca(0x1f1)]=!0x0;try{const _0x285947=_0x13454c['$ok']['stores'][_0x1ff2ca(0x1bf)][_0x1ff2ca(0x1b5)]||_0x1ff2ca(0x1b3);await fetch(__ENV__['API']+_0x1ff2ca(0x21e)+encodeURIComponent(_0x285947)+'/time-machine/enable',{'method':_0x1ff2ca(0x20d)}),await this['loadTMStatus']();}catch{}this[_0x1ff2ca(0x1f1)]=!0x1;}}}),'init'(_0x5c9437){const _0x43ef4d=_0x4f20f9;this[_0x43ef4d(0x222)](),_0x5c9437[_0x43ef4d(0x1e1)](()=>_0x5c9437[_0x43ef4d(0x22a)][_0x43ef4d(0x1bc)][_0x43ef4d(0x1bf)][_0x43ef4d(0x1b5)],()=>{const _0x27ee3f=_0x43ef4d;this[_0x27ee3f(0x19d)](),this[_0x27ee3f(0x222)]();});},'mount'(){const _0x25cd67=_0x4f20f9;this[_0x25cd67(0x19d)]();const _0x56bc56=()=>this[_0x25cd67(0x1ef)]();this[_0x25cd67(0x228)]=[_0x39dd26['on']('type:registered',()=>this[_0x25cd67(0x21a)]()),_0x39dd26['on'](_0x25cd67(0x1ca),()=>this[_0x25cd67(0x21a)]()),_0x39dd26['on'](_0x25cd67(0x20b),()=>this['_reloadTypes']()),_0x39dd26['on'](_0x25cd67(0x1cb),()=>this[_0x25cd67(0x21a)]()),_0x39dd26['on']('engine:started',_0x56bc56),_0x39dd26['on'](_0x25cd67(0x229),_0x56bc56),_0x39dd26['on'](_0x25cd67(0x230),_0x56bc56),_0x39dd26['on'](_0x25cd67(0x224),_0x56bc56),_0x39dd26['on'](_0x25cd67(0x1a6),_0x56bc56),_0x39dd26['on'](_0x25cd67(0x1c2),_0x56bc56),_0x39dd26['on'](_0x25cd67(0x1f6),_0x56bc56),_0x39dd26['on'](_0x25cd67(0x1ac),_0x56bc56),_0x39dd26['on'](_0x25cd67(0x220),()=>this['_scheduleReload']()),_0x39dd26['on'](_0x25cd67(0x1de),()=>this[_0x25cd67(0x1d0)]()),_0x39dd26['on'](_0x25cd67(0x1e3),()=>this[_0x25cd67(0x1d0)]()),_0x39dd26['on'](_0x25cd67(0x209),()=>this[_0x25cd67(0x1d0)]()),_0x39dd26['on']('system:clock_change',()=>this['_scheduleReload']()),_0x39dd26['on'](_0x25cd67(0x1ce),()=>this['_scheduleReload']())];},'unmount'(){const _0x2c5aec=_0x4f20f9;clearTimeout(this[_0x2c5aec(0x1c7)]);for(const _0xf7bbc of this[_0x2c5aec(0x228)])_0xf7bbc();this['_unsubs']=[];},'template':_0x4f20f9(0x19c),'style':_0x4f20f9(0x202)};
@@ -1 +1 @@
1
- const _0x37603a=_0x2c91;(function(_0x2d8c63,_0x511e7c){const _0x4fc79b=_0x2c91,_0x4aa967=_0x2d8c63();while(!![]){try{const _0x1fc6dc=-parseInt(_0x4fc79b(0x19f))/0x1+-parseInt(_0x4fc79b(0x156))/0x2+parseInt(_0x4fc79b(0x199))/0x3*(parseInt(_0x4fc79b(0x163))/0x4)+parseInt(_0x4fc79b(0x168))/0x5+parseInt(_0x4fc79b(0x19b))/0x6*(-parseInt(_0x4fc79b(0x1af))/0x7)+-parseInt(_0x4fc79b(0x167))/0x8*(parseInt(_0x4fc79b(0x155))/0x9)+parseInt(_0x4fc79b(0x134))/0xa*(parseInt(_0x4fc79b(0x135))/0xb);if(_0x1fc6dc===_0x511e7c)break;else _0x4aa967['push'](_0x4aa967['shift']());}catch(_0x13541a){_0x4aa967['push'](_0x4aa967['shift']());}}}(_0x3b1c,0x73c2a));function _0x2c91(_0x211f13,_0x3cfb50){_0x211f13=_0x211f13-0x128;const _0x3b1c14=_0x3b1c();let _0x2c912c=_0x3b1c14[_0x211f13];return _0x2c912c;}import _0x211bb2 from'../../../stores/events-store.js';import _0x42845c from'../../engines/modals/engine-modal.ok.js';function _0x3b1c(){const _0x538464=['$ok','health','select','envname','toLowerCase','49TGEkyz','state','result','$router','type','number','progress','runtime','okdb','flatMap','pipelineKey','showall','phase','load','3210UqbDzh','3641Stitfw','Start\x20failed','relatedType','search','selectedEnv','relatedEnv','role','_request','engine:stopped','storeEnv','Delete\x20failed','toast','selectedPipeline','map','isNaN','</b>\x22?<br><br>','_unsubs','status','var(--okdb-danger)','trim','isAllEnvs','<br><br>Env-owned\x20members\x20will\x20be\x20removed;\x20shared\x20members\x20will\x20be\x20preserved.','engine:error','Edit\x20Engine\x20·\x20','Stopped\x20pipeline\x20\x22','applyExternalSelection','catch','source_env','Started\x20pipeline\x20\x22','env','message','selectedKey','27657nsxgDo','1842324DhznKv','db-pipelines-panel','stringify','exists','error','selectEnv','var(--okdb-warning)','engines','config','confirm','pipelines','No\x20members','var(--okdb-sky)','263400teLjvl','sort','var(--okdb-app-fg-muted)','degraded','488GdbCBx','4324385ZLXcgy','data','\x20·\x20','string','label','localeCompare','json','DELETE','job_type','has','Deleted\x20pipeline\x20\x22','handler:','/pipelines/','busy','/start','toLocaleString','/pipelines','stores','\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-wrap\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-sub\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20560px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(240px,\x20300px)\x20minmax(0,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-card,\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row--active\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x20inset\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#10202a;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-members\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-danger-deep-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#450a0a33;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@media\x20(max-width:\x20860px)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','\x0a<div\x20class=\x22pipelines-wrap\x22>\x0a\x20\x20<div\x20class=\x22pipelines-head\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-title\x22>{{\x20isAllEnvs\x20?\x20\x27Pipelines\x20·\x20all\x20environments\x27\x20:\x20\x27Pipelines\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-sub\x22>{{\x20isAllEnvs\x20?\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20across\x20opened\x20environments.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20:\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20for\x20the\x20selected\x20environment.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27)\x22>{{\x20pipelines.length\x20}}\x20pipeline{{\x20pipelines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-error\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20opacity:.25;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.75;\x22>No\x20pipelines\x20{{\x20isAllEnvs\x20?\x20\x27in\x20opened\x20environments\x27\x20:\x20\x27in\x20\x27\x20+\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20appear\x20here\x20once\x20created\x20or\x20synced\x20into\x20the\x20environment.\x0a\x20\x20\x20\x20\x20\x20\x20\x20This\x20view\x20preserves\x20member\x20order,\x20shows\x20aggregate\x20health,\x20and\x20exposes\x20lifecycle\x20controls.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22pipelines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-layout\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Filter\x20pipelines…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22search\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22filteredPipelines\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22selectPipeline(pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22selectedPipeline\x20&&\x20pipelineKey(selectedPipeline)\x20===\x20pipelineKey(pipeline)\x20?\x20\x27pipeline-row\x20pipeline-row--active\x27\x20:\x20\x27pipeline-row\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipeline.meta?.label\x20||\x20pipeline.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x20margin-top:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22isAllEnvs\x20||\x20pipeline.env\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27,\x20true)\x22>{{\x20pipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(pipeline.health))\x22>{{\x20pipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20pipeline.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20pipeline.engines.length\x20}}\x20members</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-top:7px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20summaryText(pipeline)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22filteredPipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:8px;\x22>No\x20pipelines\x20match\x20the\x20current\x20filter.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-detail-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedPipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:700;\x20min-width:0;\x22>{{\x20selectedPipeline.name\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(selectedPipeline.health))\x22>{{\x20selectedPipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20selectedPipeline.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedPipeline.meta?.label\x20&&\x20selectedPipeline.meta.label\x20!==\x20selectedPipeline.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.6;\x22>{{\x20selectedPipeline.meta.label\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:620px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20is\x20the\x20global\x20grouped\x20view\x20for\x20the\x20pipeline.\x20Use\x20the\x20related\x20type\x20shortcuts\x20below\x20only\x20when\x20you\x20need\x20the\x20local\x20DB\x20drill-in.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>env:\x20{{\x20selectedPipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20selectedPipeline.engines.length\x20}}\x20ordered\x20member{{\x20selectedPipeline.engines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedRelatedTypes\x22\x20let:item=\x22rel\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openType({\x20config:\x20{\x20source_type:\x20rel.type,\x20source_env:\x20rel.env\x20}\x20})\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20type\x20\x27\x20+\x20rel.type\x20+\x20\x27\x20in\x20env\x20\x27\x20+\x20rel.env\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20rel.env\x20!==\x20envName\x20?\x20rel.env\x20+\x20\x27:\x27\x20:\x20\x27\x27\x20}}{{\x20rel.type\x20}}\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22startSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>▶\x20Start</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22stopSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2033%,\x20transparent);\x22>⏹\x20Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22deleteSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>🗑\x20Delete</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-members\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedPipeline.engines\x22\x20let:item=\x22member\x22\x20let:index=\x22index\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x20min-width:18px;\x22>{{\x20index\x20+\x201\x20}}.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-accent)\x27,\x20true)\x22>{{\x20member.role\x20||\x20member.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:12px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20member.type\x20}}@{{\x20member.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(stateColor(member.state))\x22>{{\x20member.state\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.status\x20&&\x20member.status\x20!==\x20member.state\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20member.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22memberFacts(member)\x22\x20let:item=\x22fact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20fact\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.lag\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-warning)\x27,\x20true)\x22>lag:\x20{{\x20formatNumber(member.lag)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22progressLabel(member)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>progress:\x20{{\x20progressLabel(member)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.cursorKey\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>cursor:\x20{{\x20member.cursorKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.exists\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEngineModal(member)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20engine\x20editor\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Edit\x20engine</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22relatedType(member)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openType(member)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20type\x20\x27\x20+\x20relatedType(member)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Open\x20type\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-error\x22>{{\x20member.error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22busy\x20&&\x20pipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:4px\x200;\x22>Loading\x20pipelines…</div>\x0a\x20\x20</if>\x0a</div>','shared','55;color:','find','Stop\x20failed','missing','owned','source_type','memberOwnerEnv','engine:installed','filter','<br>','transparent','success','selectedpipeline','engine:uninstalled','online','object','actionBusy','type:','<engine-modal\x20:modal=\x22modal\x22\x20:engine=\x22engine\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','length','push','add','name','API','meta','envName','modal','var(--okdb-success)','39IhSDqu','handler','71034qMblRY','includes','filteredPipelines','$watch','161536COdBuV','info','/stop',';white-space:nowrap;',';background:','/env/','POST','$attr','store:','join','resolve'];_0x3b1c=function(){return _0x538464;};return _0x3b1c();}export default{'tag':_0x37603a(0x157),'dependencies':[_0x42845c],'attr':{'showall':{},'envname':{},'selectedpipeline':{}},'context':_0x41dfe8=>({'busy':!0x1,'error':null,'search':'','pipelines':[],'selectedKey':null,'actionBusy':!0x1,'_unsubs':[],get 'isAllEnvs'(){const _0x539f76=_0x37603a;return!0x0===_0x41dfe8['$attr'][_0x539f76(0x131)]||'true'===_0x41dfe8['$attr'][_0x539f76(0x131)];},get 'envName'(){const _0x5ad2eb=_0x37603a;return _0x41dfe8[_0x5ad2eb(0x1a6)][_0x5ad2eb(0x1ad)]||_0x41dfe8[_0x5ad2eb(0x1aa)]['stores'][_0x5ad2eb(0x12e)][_0x5ad2eb(0x139)]||'default';},get 'externalSelectedPipeline'(){const _0x38370f=_0x37603a;return String(_0x41dfe8[_0x38370f(0x1a6)][_0x38370f(0x189)]||'');},'pipelineKey'(_0x2fe036){const _0x4bb083=_0x37603a;return(_0x2fe036?.[_0x4bb083(0x152)]||this[_0x4bb083(0x196)])+'::'+(_0x2fe036?.[_0x4bb083(0x193)]||'');},get 'filteredPipelines'(){const _0xa98eab=_0x37603a,_0x512a27=this[_0xa98eab(0x138)][_0xa98eab(0x148)]()[_0xa98eab(0x1ae)](),_0x4ba8c2=[...this[_0xa98eab(0x160)]][_0xa98eab(0x164)]((_0x225f73,_0x36fc0d)=>{const _0x2becc4=_0xa98eab,_0x2cc6cb=String(_0x225f73['env']||'')[_0x2becc4(0x16d)](String(_0x36fc0d[_0x2becc4(0x152)]||''));return 0x0!==_0x2cc6cb?_0x2cc6cb:_0x225f73[_0x2becc4(0x193)]['localeCompare'](_0x36fc0d[_0x2becc4(0x193)]);});return _0x512a27?_0x4ba8c2['filter'](_0x598ed8=>[_0x598ed8[_0xa98eab(0x152)],_0x598ed8[_0xa98eab(0x193)],_0x598ed8[_0xa98eab(0x195)]?.[_0xa98eab(0x16c)],_0x598ed8[_0xa98eab(0x146)],_0x598ed8[_0xa98eab(0x1ab)],...(_0x598ed8[_0xa98eab(0x15d)]||[])[_0xa98eab(0x12f)](_0xce6ce9=>[_0xce6ce9[_0xa98eab(0x13b)],_0xce6ce9[_0xa98eab(0x12a)],_0xce6ce9['name'],_0xce6ce9[_0xa98eab(0x1b0)],_0xce6ce9[_0xa98eab(0x15e)]?.[_0xa98eab(0x182)],_0xce6ce9[_0xa98eab(0x15e)]?.[_0xa98eab(0x170)]])][_0xa98eab(0x185)](Boolean)[_0xa98eab(0x1a8)]('\x20')['toLowerCase']()[_0xa98eab(0x19c)](_0x512a27)):_0x4ba8c2;},get 'selectedPipeline'(){const _0x493de7=_0x37603a;return 0x0===this[_0x493de7(0x19d)][_0x493de7(0x190)]?null:this[_0x493de7(0x19d)][_0x493de7(0x17e)](_0x4825d6=>this[_0x493de7(0x130)](_0x4825d6)===this[_0x493de7(0x154)])??this['filteredPipelines'][0x0];},'applyExternalSelection'(){const _0xa33d1c=_0x37603a,_0x4820e5=this['externalSelectedPipeline'][_0xa33d1c(0x148)]();if(!_0x4820e5||0x0===this[_0xa33d1c(0x160)]['length'])return;const _0x542c9c=this[_0xa33d1c(0x160)][_0xa33d1c(0x17e)](_0x340f74=>this[_0xa33d1c(0x130)](_0x340f74)===_0x4820e5)??this[_0xa33d1c(0x160)][_0xa33d1c(0x17e)](_0x2702e0=>_0x2702e0?.['name']===_0x4820e5)??null;if(_0x542c9c){const _0x3da25e=this[_0xa33d1c(0x130)](_0x542c9c);this[_0xa33d1c(0x154)]!==_0x3da25e&&(this[_0xa33d1c(0x154)]=_0x3da25e);}},get 'selectedRelatedTypes'(){const _0x1be8d2=_0x37603a,_0x2893be=this[_0x1be8d2(0x141)];if(!_0x2893be)return[];const _0x2484cc=new Set(),_0x21c68f=[];for(const _0x30bfdf of _0x2893be[_0x1be8d2(0x15d)]||[]){const _0x41e3df=this[_0x1be8d2(0x137)](_0x30bfdf);_0x41e3df&&!_0x2484cc[_0x1be8d2(0x171)](_0x41e3df)&&(_0x2484cc[_0x1be8d2(0x192)](_0x41e3df),_0x21c68f[_0x1be8d2(0x191)]({'type':_0x41e3df,'env':this[_0x1be8d2(0x13a)](_0x30bfdf)}));}return _0x21c68f;},async 'load'(){const _0x200f03=_0x37603a;this[_0x200f03(0x175)]=!0x0,this[_0x200f03(0x15a)]=null;try{const _0x2a3778=this[_0x200f03(0x149)]?__ENV__[_0x200f03(0x194)]+'/pipelines':__ENV__['API']+_0x200f03(0x1a4)+encodeURIComponent(this[_0x200f03(0x196)])+_0x200f03(0x178),_0x40582e=await fetch(_0x2a3778),_0x5cfe8f=await _0x40582e[_0x200f03(0x16e)]()[_0x200f03(0x14f)](()=>({}));if(!_0x40582e['ok'])throw new Error(_0x5cfe8f?.[_0x200f03(0x15a)]?.[_0x200f03(0x153)]||'Failed\x20to\x20load\x20pipelines');this[_0x200f03(0x160)]=_0x5cfe8f[_0x200f03(0x169)]??_0x5cfe8f['result']??[],this['applyExternalSelection'](),this[_0x200f03(0x160)]['some'](_0x51a900=>this['pipelineKey'](_0x51a900)===this[_0x200f03(0x154)])||(this[_0x200f03(0x154)]=this[_0x200f03(0x160)][0x0]?this['pipelineKey'](this[_0x200f03(0x160)][0x0]):null);}catch(_0x4a98d8){this[_0x200f03(0x15a)]=_0x4a98d8?.[_0x200f03(0x153)]||String(_0x4a98d8),this['pipelines']=[],this['selectedKey']=null;}finally{this[_0x200f03(0x175)]=!0x1;}},'selectPipeline'(_0x31e7fc){const _0x2a0943=_0x37603a;this['selectedKey']=this[_0x2a0943(0x130)](_0x31e7fc),_0x41dfe8['$dispatch'](_0x2a0943(0x1ac),_0x31e7fc);},'healthColor':_0x74a08a=>_0x37603a(0x18b)===_0x74a08a?_0x37603a(0x198):'degraded'===_0x74a08a?_0x37603a(0x15c):'error'===_0x74a08a?_0x37603a(0x147):_0x37603a(0x165),'stateColor':_0x6e3492=>_0x37603a(0x18b)===_0x6e3492?_0x37603a(0x198):_0x37603a(0x166)===_0x6e3492?_0x37603a(0x15c):'error'===_0x6e3492||_0x37603a(0x180)===_0x6e3492?_0x37603a(0x147):'stopped'===_0x6e3492?_0x37603a(0x165):_0x37603a(0x162),'chipStyle':(_0x5ed53b,_0x2e33fd=!0x1)=>'font-size:10px;padding:2px\x207px;border-radius:999px;border:1px\x20solid\x20'+_0x5ed53b+_0x37603a(0x17d)+_0x5ed53b+_0x37603a(0x1a3)+(_0x2e33fd?_0x37603a(0x187):_0x5ed53b+'12')+_0x37603a(0x1a2),'summaryText'(_0x34e23e){const _0x4040b2=_0x37603a,_0x427f7c=_0x34e23e[_0x4040b2(0x15d)]||[];return 0x0===_0x427f7c[_0x4040b2(0x190)]?'No\x20members':_0x427f7c[_0x4040b2(0x142)](_0x2244ec=>_0x2244ec[_0x4040b2(0x13b)]||_0x2244ec[_0x4040b2(0x12a)])[_0x4040b2(0x1a8)](_0x4040b2(0x16a));},'formatNumber':_0x404593=>null==_0x404593||Number[_0x37603a(0x143)](Number(_0x404593))?null:Number(_0x404593)[_0x37603a(0x177)](),'progressLabel'(_0x3f185c){const _0x57f62c=_0x37603a,_0x46095b=_0x3f185c[_0x57f62c(0x12c)]??_0x3f185c[_0x57f62c(0x12d)]?.[_0x57f62c(0x12c)]??null;if(null==_0x46095b)return null;if('string'==typeof _0x46095b||_0x57f62c(0x12b)==typeof _0x46095b)return String(_0x46095b);if(_0x57f62c(0x18c)==typeof _0x46095b&&_0x57f62c(0x16b)==typeof _0x46095b[_0x57f62c(0x132)])return _0x46095b['phase'];try{return JSON[_0x57f62c(0x158)](_0x46095b);}catch{return _0x57f62c(0x12c);}},'relatedType':_0x3665a0=>_0x3665a0?.[_0x37603a(0x15e)]?.['source_type']??_0x3665a0?.[_0x37603a(0x12d)]?.['source_type']??null,'relatedEnv'(_0x5d27b9){const _0x4ba50e=_0x37603a;return _0x5d27b9?.[_0x4ba50e(0x15e)]?.[_0x4ba50e(0x150)]??_0x5d27b9?.['runtime']?.[_0x4ba50e(0x150)]??this[_0x4ba50e(0x196)];},'memberOwnerEnv'(_0x3f1376){const _0x342972=_0x37603a;return _0x3f1376?.[_0x342972(0x13e)]??_0x3f1376?.[_0x342972(0x152)]??this[_0x342972(0x13a)](_0x3f1376)??this['selectedPipeline']?.[_0x342972(0x152)]??this[_0x342972(0x196)];},'memberFacts'(_0x14c3e5){const _0x162617=_0x37603a,_0x38c221=[];return _0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x170)]&&_0x38c221[_0x162617(0x191)]('job:'+_0x14c3e5[_0x162617(0x15e)][_0x162617(0x170)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x19a)]?.[_0x162617(0x193)]&&_0x38c221['push'](_0x162617(0x173)+_0x14c3e5[_0x162617(0x15e)][_0x162617(0x19a)][_0x162617(0x193)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x182)]&&_0x38c221[_0x162617(0x191)](_0x162617(0x18e)+_0x14c3e5['config'][_0x162617(0x182)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x150)]&&_0x14c3e5[_0x162617(0x15e)][_0x162617(0x150)]!==this[_0x162617(0x196)]&&_0x38c221['push']('source\x20env:'+_0x14c3e5['config'][_0x162617(0x150)]),_0x14c3e5?.[_0x162617(0x13e)]&&_0x38c221['push'](_0x162617(0x1a7)+_0x14c3e5[_0x162617(0x13e)]),_0x14c3e5?.[_0x162617(0x181)]?_0x38c221['push'](_0x162617(0x181)):_0x14c3e5?.[_0x162617(0x159)]&&_0x38c221[_0x162617(0x191)](_0x162617(0x17c)),_0x38c221;},async '_request'(_0x1c66cc,_0x1474f5={}){const _0x22bd63=_0x37603a,_0x2d4393=await fetch(_0x1c66cc,_0x1474f5),_0x411ad9=await _0x2d4393['json']()[_0x22bd63(0x14f)](()=>({}));if(!_0x2d4393['ok'])throw new Error(_0x411ad9?.['error']?.[_0x22bd63(0x153)]||'Request\x20failed\x20('+_0x2d4393['status']+')');return _0x411ad9['data']??_0x411ad9[_0x22bd63(0x128)]??null;},async 'startSelected'(){const _0x108073=_0x37603a;if(this[_0x108073(0x141)]&&!this[_0x108073(0x18d)]){this[_0x108073(0x18d)]=!0x0;try{const _0x1691ec=this[_0x108073(0x141)][_0x108073(0x152)]||this[_0x108073(0x196)];await this[_0x108073(0x13c)](__ENV__[_0x108073(0x194)]+_0x108073(0x1a4)+encodeURIComponent(_0x1691ec)+_0x108073(0x174)+encodeURIComponent(this[_0x108073(0x141)][_0x108073(0x193)])+_0x108073(0x176),{'method':_0x108073(0x1a5)}),_0x41dfe8[_0x108073(0x1aa)]['shared']?.[_0x108073(0x140)]?.['success']?.(_0x108073(0x151)+this[_0x108073(0x141)][_0x108073(0x193)]+'\x22'),await this[_0x108073(0x133)]();}catch(_0x4db4e6){_0x41dfe8['$ok']['shared']?.[_0x108073(0x140)]?.[_0x108073(0x15a)]?.(_0x4db4e6?.[_0x108073(0x153)]||_0x108073(0x136));}finally{this['actionBusy']=!0x1;}}},async 'stopSelected'(){const _0x265a81=_0x37603a;if(this[_0x265a81(0x141)]&&!this['actionBusy']&&await _0x41dfe8[_0x265a81(0x1aa)][_0x265a81(0x17c)][_0x265a81(0x197)][_0x265a81(0x15f)]('Stop\x20pipeline\x20\x22<b>'+this['selectedPipeline'][_0x265a81(0x193)]+'</b>\x22?')){this['actionBusy']=!0x0;try{const _0x275ee2=this[_0x265a81(0x141)]['env']||this[_0x265a81(0x196)];await this[_0x265a81(0x13c)](__ENV__['API']+'/env/'+encodeURIComponent(_0x275ee2)+_0x265a81(0x174)+encodeURIComponent(this[_0x265a81(0x141)][_0x265a81(0x193)])+_0x265a81(0x1a1),{'method':_0x265a81(0x1a5)}),_0x41dfe8[_0x265a81(0x1aa)][_0x265a81(0x17c)]?.[_0x265a81(0x140)]?.[_0x265a81(0x1a0)]?.(_0x265a81(0x14d)+this[_0x265a81(0x141)][_0x265a81(0x193)]+'\x22'),await this['load']();}catch(_0x332b39){_0x41dfe8['$ok'][_0x265a81(0x17c)]?.[_0x265a81(0x140)]?.['error']?.(_0x332b39?.['message']||_0x265a81(0x17f));}finally{this[_0x265a81(0x18d)]=!0x1;}}},async 'deleteSelected'(){const _0xc10a95=_0x37603a;if(!this['selectedPipeline']||this[_0xc10a95(0x18d)])return;const _0x2464cb=this[_0xc10a95(0x141)],_0x1cb5e2=(_0x2464cb['engines']||[])['map'](_0x45964f=>'•\x20'+(_0x45964f[_0xc10a95(0x13b)]||_0x45964f[_0xc10a95(0x12a)])+':\x20'+_0x45964f[_0xc10a95(0x12a)]+'@'+_0x45964f[_0xc10a95(0x193)])['join'](_0xc10a95(0x186));if(await _0x41dfe8[_0xc10a95(0x1aa)]['shared']['modal']['confirm']('Delete\x20pipeline\x20\x22<b>'+_0x2464cb[_0xc10a95(0x193)]+_0xc10a95(0x144)+(_0x1cb5e2||_0xc10a95(0x161))+_0xc10a95(0x14a))){this[_0xc10a95(0x18d)]=!0x0;try{const _0x126e1b=_0x2464cb[_0xc10a95(0x152)]||this['envName'];await this[_0xc10a95(0x13c)](__ENV__[_0xc10a95(0x194)]+'/env/'+encodeURIComponent(_0x126e1b)+_0xc10a95(0x174)+encodeURIComponent(_0x2464cb[_0xc10a95(0x193)]),{'method':_0xc10a95(0x16f)}),_0x41dfe8[_0xc10a95(0x1aa)]['shared']?.[_0xc10a95(0x140)]?.[_0xc10a95(0x188)]?.(_0xc10a95(0x172)+_0x2464cb['name']+'\x22'),this['selectedKey']=null,await this['load']();}catch(_0x148882){_0x41dfe8[_0xc10a95(0x1aa)]['shared']?.[_0xc10a95(0x140)]?.['error']?.(_0x148882?.[_0xc10a95(0x153)]||_0xc10a95(0x13f));}finally{this[_0xc10a95(0x18d)]=!0x1;}}},'openType'(_0x106cf7){const _0x4ef1bb=_0x37603a,_0x2884ec=this[_0x4ef1bb(0x137)](_0x106cf7);if(!_0x2884ec)return;const _0x14de0f=this[_0x4ef1bb(0x13a)](_0x106cf7);_0x14de0f&&_0x14de0f!==_0x41dfe8[_0x4ef1bb(0x1aa)][_0x4ef1bb(0x179)]['okdb'][_0x4ef1bb(0x139)]&&_0x41dfe8[_0x4ef1bb(0x1aa)][_0x4ef1bb(0x179)][_0x4ef1bb(0x12e)][_0x4ef1bb(0x15b)](_0x14de0f);const _0x3bb4d0=_0x41dfe8['$vars'][_0x4ef1bb(0x129)];_0x3bb4d0?.[_0x4ef1bb(0x191)](_0x3bb4d0[_0x4ef1bb(0x1a9)]('/db',{'env':_0x14de0f,'type':_0x2884ec,'tab':_0x4ef1bb(0x160)}));},async 'openEngineModal'(_0xca055a){const _0x24380e=_0x37603a;if(!_0xca055a?.[_0x24380e(0x159)])return;const _0x58866e=this,_0x4e0ad5=this[_0x24380e(0x183)](_0xca055a);await _0x41dfe8[_0x24380e(0x1aa)][_0x24380e(0x17c)]['modal']['open']({'owner':_0x41dfe8,'title':_0x24380e(0x14c)+_0xca055a[_0x24380e(0x193)],'canDrag':!0x0,'content':_0x24380e(0x18f),'context':_0x2f0caf=>({'modal':_0x2f0caf,'engine':_0xca055a,'envName':_0x4e0ad5,'onDone':async()=>{const _0x11734c=_0x24380e;await _0x58866e[_0x11734c(0x133)]();}})});}}),async 'init'(_0x4f8211){const _0x441ac7=_0x37603a;_0x4f8211['$watch'](()=>_0x4f8211['$attr'][_0x441ac7(0x189)],()=>this[_0x441ac7(0x14e)]()),_0x4f8211[_0x441ac7(0x19e)](()=>_0x4f8211[_0x441ac7(0x1aa)]['stores'][_0x441ac7(0x12e)]['selectedEnv'],()=>{const _0x7aa9fc=_0x441ac7;this[_0x7aa9fc(0x149)]||(this[_0x7aa9fc(0x154)]=null),this[_0x7aa9fc(0x133)]();}),await this[_0x441ac7(0x133)]();const _0x206d9b=()=>this[_0x441ac7(0x133)]();this[_0x441ac7(0x145)]=[_0x211bb2['on']('engine:started',_0x206d9b),_0x211bb2['on'](_0x441ac7(0x13d),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x14b),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x184),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x18a),_0x206d9b)];},'unmount'(){const _0x266712=_0x37603a;for(const _0x431cc4 of this[_0x266712(0x145)])_0x431cc4();this[_0x266712(0x145)]=[];},'template':_0x37603a(0x17b),'style':_0x37603a(0x17a)};
1
+ function _0x1937(_0x3b89ff,_0x4a2887){_0x3b89ff=_0x3b89ff-0xb7;const _0x3d5b5e=_0x3d5b();let _0x19370e=_0x3d5b5e[_0x3b89ff];return _0x19370e;}const _0x6b57c5=_0x1937;(function(_0x3e2ecd,_0x43b2ea){const _0x2718fa=_0x1937,_0x188ee3=_0x3e2ecd();while(!![]){try{const _0x524999=parseInt(_0x2718fa(0x121))/0x1*(-parseInt(_0x2718fa(0xe6))/0x2)+-parseInt(_0x2718fa(0xc7))/0x3+-parseInt(_0x2718fa(0x11b))/0x4*(-parseInt(_0x2718fa(0x125))/0x5)+-parseInt(_0x2718fa(0x103))/0x6*(-parseInt(_0x2718fa(0xf9))/0x7)+-parseInt(_0x2718fa(0x139))/0x8*(parseInt(_0x2718fa(0x11e))/0x9)+-parseInt(_0x2718fa(0xd1))/0xa+parseInt(_0x2718fa(0x135))/0xb;if(_0x524999===_0x43b2ea)break;else _0x188ee3['push'](_0x188ee3['shift']());}catch(_0x3f3bfa){_0x188ee3['push'](_0x188ee3['shift']());}}}(_0x3d5b,0xb686f));import _0x174a01 from'../../../stores/events-store.js';import _0x1a61d5 from'../../engines/modals/engine-modal.ok.js';function _0x3d5b(){const _0x24a4dc=['3975759DIWMot','degraded','has','30NcglRB','var(--okdb-app-fg-muted)','selectedpipeline','state','306205vMCyvo','job_type','selectedEnv','load','memberOwnerEnv','/stop','Stopped\x20pipeline\x20\x22','true','$dispatch','data','relatedType','db-pipelines-panel','Deleted\x20pipeline\x20\x22','config','pipelineKey','type:','35281675ZszWXv','POST','name','_request','24tSLSqe','externalSelectedPipeline','env','var(--okdb-warning)','success','envName','pipelines','relatedEnv','storeEnv','toast','modal','No\x20members','flatMap','owned','/env/','push','Delete\x20failed','10818HKcbhN','stopped','\x20·\x20','type','missing','actionBusy','result','map','<engine-modal\x20:modal=\x22modal\x22\x20:engine=\x22engine\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','filteredPipelines','6553870sZfgmP','/pipelines','role','resolve','selectedPipeline','_unsubs','transparent','<br><br>Env-owned\x20members\x20will\x20be\x20removed;\x20shared\x20members\x20will\x20be\x20preserved.','catch','isAllEnvs','message','engine:started','info','/start','source_type','status','Stop\x20pipeline\x20\x22<b>','toLocaleString','</b>\x22?<br><br>','busy','engines','90158eJWNCv','some','$router','progress','shared','join','DELETE','okdb','job:','default','localeCompare','find','handler','sort','isNaN','toLowerCase','phase','runtime','$ok','759857pEaAnf','/pipelines/','stringify','var(--okdb-success)','selectedKey','$attr','trim','handler:','envname','API','18swJKBH','applyExternalSelection','json','engine:installed','</b>\x22?','open','online','/db','number','error','add','Start\x20failed','string','Request\x20failed\x20(','var(--okdb-danger)','filter','length','label','Edit\x20Engine\x20·\x20','source_env','health',';white-space:nowrap;','stores','$watch','36YjuPYk','search','engine:uninstalled'];_0x3d5b=function(){return _0x24a4dc;};return _0x3d5b();}export default{'tag':_0x6b57c5(0x130),'dependencies':[_0x1a61d5],'attr':{'showall':{},'envname':{},'selectedpipeline':{}},'context':_0x1d7f82=>({'busy':!0x1,'error':null,'search':'','pipelines':[],'selectedKey':null,'actionBusy':!0x1,'_unsubs':[],get 'isAllEnvs'(){const _0x3c0c26=_0x6b57c5;return!0x0===_0x1d7f82[_0x3c0c26(0xfe)]['showall']||_0x3c0c26(0x12c)===_0x1d7f82[_0x3c0c26(0xfe)]['showall'];},get 'envName'(){const _0x36b48b=_0x6b57c5;return _0x1d7f82[_0x36b48b(0xfe)][_0x36b48b(0x101)]||_0x1d7f82['$ok']['stores'][_0x36b48b(0xed)][_0x36b48b(0x127)]||_0x36b48b(0xef);},get 'externalSelectedPipeline'(){const _0x3f419a=_0x6b57c5;return String(_0x1d7f82[_0x3f419a(0xfe)][_0x3f419a(0x123)]||'');},'pipelineKey'(_0x156dc0){const _0x242a98=_0x6b57c5;return(_0x156dc0?.[_0x242a98(0xb8)]||this['envName'])+'::'+(_0x156dc0?.[_0x242a98(0x137)]||'');},get 'filteredPipelines'(){const _0x329aa4=_0x6b57c5,_0x17fc87=this[_0x329aa4(0x11c)][_0x329aa4(0xff)]()[_0x329aa4(0xf5)](),_0x5890b6=[...this['pipelines']][_0x329aa4(0xf3)]((_0x29d185,_0x306448)=>{const _0x1e691e=_0x329aa4,_0x52b7ac=String(_0x29d185['env']||'')[_0x1e691e(0xf0)](String(_0x306448['env']||''));return 0x0!==_0x52b7ac?_0x52b7ac:_0x29d185['name'][_0x1e691e(0xf0)](_0x306448[_0x1e691e(0x137)]);});return _0x17fc87?_0x5890b6['filter'](_0x5c8cb3=>[_0x5c8cb3['env'],_0x5c8cb3[_0x329aa4(0x137)],_0x5c8cb3['meta']?.[_0x329aa4(0x114)],_0x5c8cb3[_0x329aa4(0xe0)],_0x5c8cb3[_0x329aa4(0x117)],...(_0x5c8cb3[_0x329aa4(0xe5)]||[])[_0x329aa4(0xc2)](_0x59749d=>[_0x59749d[_0x329aa4(0xd3)],_0x59749d[_0x329aa4(0xca)],_0x59749d[_0x329aa4(0x137)],_0x59749d[_0x329aa4(0x124)],_0x59749d['config']?.[_0x329aa4(0xdf)],_0x59749d[_0x329aa4(0x132)]?.[_0x329aa4(0x126)]])][_0x329aa4(0x112)](Boolean)[_0x329aa4(0xeb)]('\x20')[_0x329aa4(0xf5)]()['includes'](_0x17fc87)):_0x5890b6;},get 'selectedPipeline'(){const _0x371167=_0x6b57c5;return 0x0===this[_0x371167(0xd0)][_0x371167(0x113)]?null:this[_0x371167(0xd0)][_0x371167(0xf1)](_0x23f65a=>this[_0x371167(0x133)](_0x23f65a)===this[_0x371167(0xfd)])??this['filteredPipelines'][0x0];},'applyExternalSelection'(){const _0x324c22=_0x6b57c5,_0x57db50=this[_0x324c22(0xb7)][_0x324c22(0xff)]();if(!_0x57db50||0x0===this[_0x324c22(0xbc)][_0x324c22(0x113)])return;const _0x5cf033=this[_0x324c22(0xbc)][_0x324c22(0xf1)](_0x518858=>this[_0x324c22(0x133)](_0x518858)===_0x57db50)??this['pipelines'][_0x324c22(0xf1)](_0x5122d8=>_0x5122d8?.[_0x324c22(0x137)]===_0x57db50)??null;if(_0x5cf033){const _0x59da3c=this['pipelineKey'](_0x5cf033);this['selectedKey']!==_0x59da3c&&(this[_0x324c22(0xfd)]=_0x59da3c);}},get 'selectedRelatedTypes'(){const _0x726be8=_0x6b57c5,_0x19a4c6=this[_0x726be8(0xd5)];if(!_0x19a4c6)return[];const _0x1118b7=new Set(),_0x4661b9=[];for(const _0x527ca8 of _0x19a4c6[_0x726be8(0xe5)]||[]){const _0x4d0e8a=this[_0x726be8(0x12f)](_0x527ca8);_0x4d0e8a&&!_0x1118b7[_0x726be8(0x120)](_0x4d0e8a)&&(_0x1118b7[_0x726be8(0x10d)](_0x4d0e8a),_0x4661b9[_0x726be8(0xc5)]({'type':_0x4d0e8a,'env':this[_0x726be8(0xbd)](_0x527ca8)}));}return _0x4661b9;},async 'load'(){const _0x2e1951=_0x6b57c5;this[_0x2e1951(0xe4)]=!0x0,this[_0x2e1951(0x10c)]=null;try{const _0x453ff9=this[_0x2e1951(0xda)]?__ENV__[_0x2e1951(0x102)]+'/pipelines':__ENV__['API']+_0x2e1951(0xc4)+encodeURIComponent(this[_0x2e1951(0xbb)])+_0x2e1951(0xd2),_0x51dd1b=await fetch(_0x453ff9),_0x41c557=await _0x51dd1b[_0x2e1951(0x105)]()[_0x2e1951(0xd9)](()=>({}));if(!_0x51dd1b['ok'])throw new Error(_0x41c557?.[_0x2e1951(0x10c)]?.[_0x2e1951(0xdb)]||'Failed\x20to\x20load\x20pipelines');this['pipelines']=_0x41c557['data']??_0x41c557[_0x2e1951(0xcd)]??[],this[_0x2e1951(0x104)](),this['pipelines'][_0x2e1951(0xe7)](_0x2a71fd=>this['pipelineKey'](_0x2a71fd)===this[_0x2e1951(0xfd)])||(this[_0x2e1951(0xfd)]=this[_0x2e1951(0xbc)][0x0]?this[_0x2e1951(0x133)](this[_0x2e1951(0xbc)][0x0]):null);}catch(_0x246670){this['error']=_0x246670?.[_0x2e1951(0xdb)]||String(_0x246670),this[_0x2e1951(0xbc)]=[],this[_0x2e1951(0xfd)]=null;}finally{this[_0x2e1951(0xe4)]=!0x1;}},'selectPipeline'(_0x534d2f){const _0x4fb9ac=_0x6b57c5;this['selectedKey']=this[_0x4fb9ac(0x133)](_0x534d2f),_0x1d7f82[_0x4fb9ac(0x12d)]('select',_0x534d2f);},'healthColor':_0x1a1cf8=>'online'===_0x1a1cf8?_0x6b57c5(0xfc):'degraded'===_0x1a1cf8?_0x6b57c5(0xb9):_0x6b57c5(0x10c)===_0x1a1cf8?_0x6b57c5(0x111):'var(--okdb-app-fg-muted)','stateColor':_0x198591=>_0x6b57c5(0x109)===_0x198591?'var(--okdb-success)':_0x6b57c5(0x11f)===_0x198591?'var(--okdb-warning)':_0x6b57c5(0x10c)===_0x198591||_0x6b57c5(0xcb)===_0x198591?_0x6b57c5(0x111):_0x6b57c5(0xc8)===_0x198591?_0x6b57c5(0x122):'var(--okdb-sky)','chipStyle':(_0xa657b9,_0x56d126=!0x1)=>'font-size:10px;padding:2px\x207px;border-radius:999px;border:1px\x20solid\x20'+_0xa657b9+'55;color:'+_0xa657b9+';background:'+(_0x56d126?_0x6b57c5(0xd7):_0xa657b9+'12')+_0x6b57c5(0x118),'summaryText'(_0x1f100f){const _0x3a770c=_0x6b57c5,_0x29a833=_0x1f100f[_0x3a770c(0xe5)]||[];return 0x0===_0x29a833[_0x3a770c(0x113)]?_0x3a770c(0xc1):_0x29a833['map'](_0x15787f=>_0x15787f[_0x3a770c(0xd3)]||_0x15787f[_0x3a770c(0xca)])[_0x3a770c(0xeb)](_0x3a770c(0xc9));},'formatNumber':_0x693e9e=>null==_0x693e9e||Number[_0x6b57c5(0xf4)](Number(_0x693e9e))?null:Number(_0x693e9e)[_0x6b57c5(0xe2)](),'progressLabel'(_0x4407a1){const _0x1dc496=_0x6b57c5,_0x414965=_0x4407a1[_0x1dc496(0xe9)]??_0x4407a1['runtime']?.[_0x1dc496(0xe9)]??null;if(null==_0x414965)return null;if('string'==typeof _0x414965||_0x1dc496(0x10b)==typeof _0x414965)return String(_0x414965);if('object'==typeof _0x414965&&_0x1dc496(0x10f)==typeof _0x414965[_0x1dc496(0xf6)])return _0x414965[_0x1dc496(0xf6)];try{return JSON[_0x1dc496(0xfb)](_0x414965);}catch{return'progress';}},'relatedType':_0x58d54d=>_0x58d54d?.[_0x6b57c5(0x132)]?.[_0x6b57c5(0xdf)]??_0x58d54d?.[_0x6b57c5(0xf7)]?.['source_type']??null,'relatedEnv'(_0x19de0f){const _0x4aa24a=_0x6b57c5;return _0x19de0f?.[_0x4aa24a(0x132)]?.[_0x4aa24a(0x116)]??_0x19de0f?.[_0x4aa24a(0xf7)]?.[_0x4aa24a(0x116)]??this[_0x4aa24a(0xbb)];},'memberOwnerEnv'(_0xaf80a0){const _0x2923c4=_0x6b57c5;return _0xaf80a0?.['storeEnv']??_0xaf80a0?.['env']??this[_0x2923c4(0xbd)](_0xaf80a0)??this[_0x2923c4(0xd5)]?.[_0x2923c4(0xb8)]??this[_0x2923c4(0xbb)];},'memberFacts'(_0x1dc01a){const _0x2bffd9=_0x6b57c5,_0x5d6422=[];return _0x1dc01a?.[_0x2bffd9(0x132)]?.[_0x2bffd9(0x126)]&&_0x5d6422[_0x2bffd9(0xc5)](_0x2bffd9(0xee)+_0x1dc01a[_0x2bffd9(0x132)][_0x2bffd9(0x126)]),_0x1dc01a?.['config']?.[_0x2bffd9(0xf2)]?.[_0x2bffd9(0x137)]&&_0x5d6422['push'](_0x2bffd9(0x100)+_0x1dc01a[_0x2bffd9(0x132)]['handler'][_0x2bffd9(0x137)]),_0x1dc01a?.['config']?.[_0x2bffd9(0xdf)]&&_0x5d6422['push'](_0x2bffd9(0x134)+_0x1dc01a['config'][_0x2bffd9(0xdf)]),_0x1dc01a?.['config']?.[_0x2bffd9(0x116)]&&_0x1dc01a[_0x2bffd9(0x132)][_0x2bffd9(0x116)]!==this[_0x2bffd9(0xbb)]&&_0x5d6422[_0x2bffd9(0xc5)]('source\x20env:'+_0x1dc01a[_0x2bffd9(0x132)][_0x2bffd9(0x116)]),_0x1dc01a?.['storeEnv']&&_0x5d6422[_0x2bffd9(0xc5)]('store:'+_0x1dc01a[_0x2bffd9(0xbe)]),_0x1dc01a?.[_0x2bffd9(0xc3)]?_0x5d6422['push'](_0x2bffd9(0xc3)):_0x1dc01a?.['exists']&&_0x5d6422[_0x2bffd9(0xc5)]('shared'),_0x5d6422;},async '_request'(_0x2f4438,_0x1d2cf4={}){const _0x1b681d=_0x6b57c5,_0x1dc521=await fetch(_0x2f4438,_0x1d2cf4),_0x46d15b=await _0x1dc521[_0x1b681d(0x105)]()[_0x1b681d(0xd9)](()=>({}));if(!_0x1dc521['ok'])throw new Error(_0x46d15b?.[_0x1b681d(0x10c)]?.[_0x1b681d(0xdb)]||_0x1b681d(0x110)+_0x1dc521[_0x1b681d(0xe0)]+')');return _0x46d15b[_0x1b681d(0x12e)]??_0x46d15b['result']??null;},async 'startSelected'(){const _0x5c3928=_0x6b57c5;if(this[_0x5c3928(0xd5)]&&!this[_0x5c3928(0xcc)]){this['actionBusy']=!0x0;try{const _0xba3c3a=this['selectedPipeline'][_0x5c3928(0xb8)]||this['envName'];await this[_0x5c3928(0x138)](__ENV__[_0x5c3928(0x102)]+_0x5c3928(0xc4)+encodeURIComponent(_0xba3c3a)+_0x5c3928(0xfa)+encodeURIComponent(this['selectedPipeline'][_0x5c3928(0x137)])+_0x5c3928(0xde),{'method':_0x5c3928(0x136)}),_0x1d7f82[_0x5c3928(0xf8)]['shared']?.[_0x5c3928(0xbf)]?.[_0x5c3928(0xba)]?.('Started\x20pipeline\x20\x22'+this[_0x5c3928(0xd5)][_0x5c3928(0x137)]+'\x22'),await this[_0x5c3928(0x128)]();}catch(_0x48629e){_0x1d7f82[_0x5c3928(0xf8)][_0x5c3928(0xea)]?.[_0x5c3928(0xbf)]?.[_0x5c3928(0x10c)]?.(_0x48629e?.[_0x5c3928(0xdb)]||_0x5c3928(0x10e));}finally{this['actionBusy']=!0x1;}}},async 'stopSelected'(){const _0x47e776=_0x6b57c5;if(this[_0x47e776(0xd5)]&&!this[_0x47e776(0xcc)]&&await _0x1d7f82['$ok'][_0x47e776(0xea)][_0x47e776(0xc0)]['confirm'](_0x47e776(0xe1)+this[_0x47e776(0xd5)]['name']+_0x47e776(0x107))){this['actionBusy']=!0x0;try{const _0x405198=this[_0x47e776(0xd5)]['env']||this[_0x47e776(0xbb)];await this[_0x47e776(0x138)](__ENV__['API']+_0x47e776(0xc4)+encodeURIComponent(_0x405198)+_0x47e776(0xfa)+encodeURIComponent(this[_0x47e776(0xd5)][_0x47e776(0x137)])+_0x47e776(0x12a),{'method':_0x47e776(0x136)}),_0x1d7f82['$ok'][_0x47e776(0xea)]?.['toast']?.[_0x47e776(0xdd)]?.(_0x47e776(0x12b)+this[_0x47e776(0xd5)][_0x47e776(0x137)]+'\x22'),await this[_0x47e776(0x128)]();}catch(_0x67f6a4){_0x1d7f82[_0x47e776(0xf8)][_0x47e776(0xea)]?.['toast']?.[_0x47e776(0x10c)]?.(_0x67f6a4?.[_0x47e776(0xdb)]||'Stop\x20failed');}finally{this[_0x47e776(0xcc)]=!0x1;}}},async 'deleteSelected'(){const _0x3f65a1=_0x6b57c5;if(!this['selectedPipeline']||this['actionBusy'])return;const _0x31fd47=this[_0x3f65a1(0xd5)],_0x461130=(_0x31fd47['engines']||[])[_0x3f65a1(0xce)](_0x1e7277=>'•\x20'+(_0x1e7277[_0x3f65a1(0xd3)]||_0x1e7277[_0x3f65a1(0xca)])+':\x20'+_0x1e7277[_0x3f65a1(0xca)]+'@'+_0x1e7277[_0x3f65a1(0x137)])[_0x3f65a1(0xeb)]('<br>');if(await _0x1d7f82[_0x3f65a1(0xf8)][_0x3f65a1(0xea)]['modal']['confirm']('Delete\x20pipeline\x20\x22<b>'+_0x31fd47[_0x3f65a1(0x137)]+_0x3f65a1(0xe3)+(_0x461130||_0x3f65a1(0xc1))+_0x3f65a1(0xd8))){this[_0x3f65a1(0xcc)]=!0x0;try{const _0x1b7c83=_0x31fd47[_0x3f65a1(0xb8)]||this[_0x3f65a1(0xbb)];await this['_request'](__ENV__['API']+_0x3f65a1(0xc4)+encodeURIComponent(_0x1b7c83)+_0x3f65a1(0xfa)+encodeURIComponent(_0x31fd47[_0x3f65a1(0x137)]),{'method':_0x3f65a1(0xec)}),_0x1d7f82[_0x3f65a1(0xf8)][_0x3f65a1(0xea)]?.[_0x3f65a1(0xbf)]?.[_0x3f65a1(0xba)]?.(_0x3f65a1(0x131)+_0x31fd47[_0x3f65a1(0x137)]+'\x22'),this['selectedKey']=null,await this[_0x3f65a1(0x128)]();}catch(_0x3dd480){_0x1d7f82[_0x3f65a1(0xf8)][_0x3f65a1(0xea)]?.['toast']?.[_0x3f65a1(0x10c)]?.(_0x3dd480?.[_0x3f65a1(0xdb)]||_0x3f65a1(0xc6));}finally{this['actionBusy']=!0x1;}}},'openType'(_0x40f994){const _0x376371=_0x6b57c5,_0x306230=this[_0x376371(0x12f)](_0x40f994);if(!_0x306230)return;const _0x29bb27=this[_0x376371(0xbd)](_0x40f994);_0x29bb27&&_0x29bb27!==_0x1d7f82[_0x376371(0xf8)][_0x376371(0x119)][_0x376371(0xed)][_0x376371(0x127)]&&_0x1d7f82[_0x376371(0xf8)][_0x376371(0x119)][_0x376371(0xed)]['selectEnv'](_0x29bb27);const _0x32b9d7=_0x1d7f82['$vars'][_0x376371(0xe8)];_0x32b9d7?.[_0x376371(0xc5)](_0x32b9d7[_0x376371(0xd4)](_0x376371(0x10a),{'env':_0x29bb27,'type':_0x306230,'tab':_0x376371(0xbc)}));},async 'openEngineModal'(_0x29a08e){const _0x5b5e9a=_0x6b57c5;if(!_0x29a08e?.['exists'])return;const _0x129258=this,_0x15d3a3=this[_0x5b5e9a(0x129)](_0x29a08e);await _0x1d7f82[_0x5b5e9a(0xf8)][_0x5b5e9a(0xea)][_0x5b5e9a(0xc0)][_0x5b5e9a(0x108)]({'owner':_0x1d7f82,'title':_0x5b5e9a(0x115)+_0x29a08e[_0x5b5e9a(0x137)],'canDrag':!0x0,'content':_0x5b5e9a(0xcf),'context':_0x3dab4c=>({'modal':_0x3dab4c,'engine':_0x29a08e,'envName':_0x15d3a3,'onDone':async()=>{await _0x129258['load']();}})});}}),async 'init'(_0xbaa48c){const _0x414f3e=_0x6b57c5;_0xbaa48c[_0x414f3e(0x11a)](()=>_0xbaa48c['$attr'][_0x414f3e(0x123)],()=>this[_0x414f3e(0x104)]()),_0xbaa48c[_0x414f3e(0x11a)](()=>_0xbaa48c[_0x414f3e(0xf8)]['stores'][_0x414f3e(0xed)][_0x414f3e(0x127)],()=>{const _0x420cf3=_0x414f3e;this['isAllEnvs']||(this[_0x420cf3(0xfd)]=null),this['load']();}),await this['load']();const _0x2e4ff8=()=>this[_0x414f3e(0x128)]();this['_unsubs']=[_0x174a01['on'](_0x414f3e(0xdc),_0x2e4ff8),_0x174a01['on']('engine:stopped',_0x2e4ff8),_0x174a01['on']('engine:error',_0x2e4ff8),_0x174a01['on'](_0x414f3e(0x106),_0x2e4ff8),_0x174a01['on'](_0x414f3e(0x11d),_0x2e4ff8)];},'unmount'(){const _0x389f9e=_0x6b57c5;for(const _0x347df8 of this[_0x389f9e(0xd6)])_0x347df8();this[_0x389f9e(0xd6)]=[];},'template':'\x0a<div\x20class=\x22pipelines-wrap\x22>\x0a\x20\x20<div\x20class=\x22pipelines-head\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-title\x22>{{\x20isAllEnvs\x20?\x20\x27Pipelines\x20·\x20all\x20environments\x27\x20:\x20\x27Pipelines\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-sub\x22>{{\x20isAllEnvs\x20?\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20across\x20opened\x20environments.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20:\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20for\x20the\x20selected\x20environment.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27)\x22>{{\x20pipelines.length\x20}}\x20pipeline{{\x20pipelines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-error\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20opacity:.25;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.75;\x22>No\x20pipelines\x20{{\x20isAllEnvs\x20?\x20\x27in\x20opened\x20environments\x27\x20:\x20\x27in\x20\x27\x20+\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20appear\x20here\x20once\x20created\x20or\x20synced\x20into\x20the\x20environment.\x0a\x20\x20\x20\x20\x20\x20\x20\x20This\x20view\x20preserves\x20member\x20order,\x20shows\x20aggregate\x20health,\x20and\x20exposes\x20lifecycle\x20controls.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22pipelines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-layout\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Filter\x20pipelines…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22search\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22filteredPipelines\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22selectPipeline(pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22selectedPipeline\x20&&\x20pipelineKey(selectedPipeline)\x20===\x20pipelineKey(pipeline)\x20?\x20\x27pipeline-row\x20pipeline-row--active\x27\x20:\x20\x27pipeline-row\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipeline.meta?.label\x20||\x20pipeline.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x20margin-top:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22isAllEnvs\x20||\x20pipeline.env\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27,\x20true)\x22>{{\x20pipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(pipeline.health))\x22>{{\x20pipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20pipeline.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20pipeline.engines.length\x20}}\x20members</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-top:7px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20summaryText(pipeline)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22filteredPipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:8px;\x22>No\x20pipelines\x20match\x20the\x20current\x20filter.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-detail-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedPipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:700;\x20min-width:0;\x22>{{\x20selectedPipeline.name\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(selectedPipeline.health))\x22>{{\x20selectedPipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20selectedPipeline.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedPipeline.meta?.label\x20&&\x20selectedPipeline.meta.label\x20!==\x20selectedPipeline.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.6;\x22>{{\x20selectedPipeline.meta.label\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:620px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20is\x20the\x20global\x20grouped\x20view\x20for\x20the\x20pipeline.\x20Use\x20the\x20related\x20type\x20shortcuts\x20below\x20only\x20when\x20you\x20need\x20the\x20local\x20DB\x20drill-in.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>env:\x20{{\x20selectedPipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20selectedPipeline.engines.length\x20}}\x20ordered\x20member{{\x20selectedPipeline.engines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedRelatedTypes\x22\x20let:item=\x22rel\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openType({\x20config:\x20{\x20source_type:\x20rel.type,\x20source_env:\x20rel.env\x20}\x20})\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20type\x20\x27\x20+\x20rel.type\x20+\x20\x27\x20in\x20env\x20\x27\x20+\x20rel.env\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20rel.env\x20!==\x20envName\x20?\x20rel.env\x20+\x20\x27:\x27\x20:\x20\x27\x27\x20}}{{\x20rel.type\x20}}\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22startSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>▶\x20Start</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22stopSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2033%,\x20transparent);\x22>⏹\x20Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22deleteSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>🗑\x20Delete</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-members\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedPipeline.engines\x22\x20let:item=\x22member\x22\x20let:index=\x22index\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x20min-width:18px;\x22>{{\x20index\x20+\x201\x20}}.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-accent)\x27,\x20true)\x22>{{\x20member.role\x20||\x20member.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:12px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20member.type\x20}}@{{\x20member.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(stateColor(member.state))\x22>{{\x20member.state\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.status\x20&&\x20member.status\x20!==\x20member.state\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20member.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22memberFacts(member)\x22\x20let:item=\x22fact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20fact\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.lag\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-warning)\x27,\x20true)\x22>lag:\x20{{\x20formatNumber(member.lag)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22progressLabel(member)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>progress:\x20{{\x20progressLabel(member)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.cursorKey\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>cursor:\x20{{\x20member.cursorKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.exists\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEngineModal(member)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20engine\x20editor\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Edit\x20engine</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22relatedType(member)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openType(member)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20type\x20\x27\x20+\x20relatedType(member)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Open\x20type\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-error\x22>{{\x20member.error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22busy\x20&&\x20pipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:4px\x200;\x22>Loading\x20pipelines…</div>\x0a\x20\x20</if>\x0a</div>','style':'\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-wrap\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-sub\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20560px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(240px,\x20300px)\x20minmax(0,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-card,\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row--active\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x20inset\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#10202a;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-members\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-danger-deep-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#450a0a33;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@media\x20(max-width:\x20860px)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'};