hypercore-cli 1.1.1 → 1.3.0

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 (158) hide show
  1. package/LICENSE +92 -21
  2. package/README.md +8 -1
  3. package/dist/App-YMX7FSXR.js +1 -0
  4. package/dist/api-Q2TX5JJL.js +1 -0
  5. package/dist/auth-X6CUT3DW.js +1 -0
  6. package/dist/background-ACODXSUG.js +1 -0
  7. package/dist/backlog-JD2IM336.js +1 -0
  8. package/dist/chunk-2QI2IU2V.js +1 -0
  9. package/dist/chunk-3KFRDIPQ.js +1 -0
  10. package/dist/chunk-42C5J7PN.js +1 -0
  11. package/dist/chunk-4D7XVJ7Q.js +1 -0
  12. package/dist/chunk-545IGTXV.js +1 -0
  13. package/dist/chunk-5KUSGQP2.js +1 -0
  14. package/dist/chunk-AUQ64BK2.js +1 -0
  15. package/dist/chunk-AV244H5C.js +1 -0
  16. package/dist/chunk-BQVBEFS4.js +1 -0
  17. package/dist/chunk-BYWQLFP2.js +1 -0
  18. package/dist/chunk-COITWWZJ.js +1 -0
  19. package/dist/chunk-CR7UUJVX.js +1 -0
  20. package/dist/chunk-E3MULLBX.js +1 -0
  21. package/dist/chunk-EWBV7YPP.js +1 -0
  22. package/dist/chunk-EZHYVJGQ.js +1 -0
  23. package/dist/chunk-FAKXBY7Q.js +1 -0
  24. package/dist/chunk-FHGATV5B.js +1 -0
  25. package/dist/chunk-I2G27Y5P.js +1 -0
  26. package/dist/chunk-IKF43TX2.js +1 -0
  27. package/dist/chunk-INSPHCBN.js +1 -0
  28. package/dist/chunk-LQMDUKIE.js +1 -0
  29. package/dist/chunk-M3MTKGA5.js +1 -0
  30. package/dist/chunk-MPO54FU3.js +1 -0
  31. package/dist/chunk-PVKCZI6A.js +1 -0
  32. package/dist/chunk-Q7KEPCYL.js +1 -0
  33. package/dist/chunk-R5XD3NT2.js +1 -0
  34. package/dist/chunk-ROBZ6PAL.js +1 -0
  35. package/dist/chunk-RXB5BS2N.js +1 -0
  36. package/dist/chunk-RZ3HNYMT.js +1 -0
  37. package/dist/chunk-UCGLRMTG.js +1 -0
  38. package/dist/chunk-UEHJVRKB.js +1 -0
  39. package/dist/chunk-UZYX5GGF.js +1 -0
  40. package/dist/chunk-XQJBB725.js +1 -0
  41. package/dist/chunk-ZB5ZQSXH.js +1 -0
  42. package/dist/claude-US2QPRBA.js +1 -0
  43. package/dist/commands-5TFN74MD.js +1 -0
  44. package/dist/commands-EKPWCB3T.js +1 -0
  45. package/dist/commands-QHJLREPM.js +1 -0
  46. package/dist/config-2OUL5FLS.js +1 -0
  47. package/dist/config-loader-N7IBWN2P.js +1 -0
  48. package/dist/diagnose-NLHN4SAJ.js +1 -0
  49. package/dist/display-TB5YACJV.js +1 -0
  50. package/dist/extractor-3KTM2IUL.js +1 -0
  51. package/dist/feature-flag-VVIF5FJG.js +1 -0
  52. package/dist/history-GVNDPXXQ.js +1 -0
  53. package/dist/index.js +1 -402
  54. package/dist/instance-registry-I5AIVJE2.js +1 -0
  55. package/dist/keybindings-RN3A7CRW.js +1 -0
  56. package/dist/loader-3IKPXP4R.js +1 -0
  57. package/dist/network-GI2F3IDE.js +1 -0
  58. package/dist/notify-O6FNVHC4.js +1 -0
  59. package/dist/openai-compat-IPCMINVF.js +1 -0
  60. package/dist/permissions-5O7KVAXU.js +1 -0
  61. package/dist/prompt-VWFPFM4N.js +1 -0
  62. package/dist/quality-GPQD25UL.js +1 -0
  63. package/dist/repl-YNXCDVU4.js +1 -0
  64. package/dist/roadmap-QRZODSNJ.js +1 -0
  65. package/dist/server-USQP4GC4.js +1 -0
  66. package/dist/session-5HDDQQP6.js +1 -0
  67. package/dist/skills-DXWSVJSU.js +1 -0
  68. package/dist/store-WXXTKTTL.js +1 -0
  69. package/dist/team-VTPJ3WRT.js +1 -0
  70. package/dist/telemetry-NT4UZLBS.js +1 -0
  71. package/dist/test-runner-F6B6RH3S.js +1 -0
  72. package/dist/theme-JJJ6ABR2.js +1 -0
  73. package/dist/upgrade-RUG3R7R5.js +1 -0
  74. package/dist/verify-6OGRY2PR.js +1 -0
  75. package/dist/version-DLROA5JN.js +1 -0
  76. package/dist/web/static/app.js +1 -562
  77. package/dist/web/static/index.html +114 -126
  78. package/dist/web/static/mirror.css +1 -1001
  79. package/dist/web/static/mirror.html +155 -178
  80. package/dist/web/static/mirror.js +1 -1125
  81. package/dist/web/static/onboard.css +1 -302
  82. package/dist/web/static/onboard.html +121 -145
  83. package/dist/web/static/onboard.js +1 -300
  84. package/dist/web/static/style.css +1 -602
  85. package/dist/web/static/utils.js +1 -0
  86. package/dist/web/static/workspace.css +1 -1568
  87. package/dist/web/static/workspace.html +369 -402
  88. package/dist/web/static/workspace.js +1 -1683
  89. package/dist/web-P5YUKEAU.js +1 -0
  90. package/package.json +25 -4
  91. package/dist/api-D4PUN5BN.js +0 -162
  92. package/dist/auth-UTR4I6QY.js +0 -21
  93. package/dist/background-2EGCAAQH.js +0 -14
  94. package/dist/backlog-Q2NZCLNY.js +0 -24
  95. package/dist/chunk-2CMSCWQW.js +0 -162
  96. package/dist/chunk-4DVYJAJL.js +0 -57
  97. package/dist/chunk-77FRUHTU.js +0 -271
  98. package/dist/chunk-7ZYMJFCA.js +0 -251
  99. package/dist/chunk-BE46C7JW.js +0 -46
  100. package/dist/chunk-CM423E2U.js +0 -133
  101. package/dist/chunk-E4NKO2KI.js +0 -263
  102. package/dist/chunk-GH7E2OJE.js +0 -223
  103. package/dist/chunk-GMLQ7GZ5.js +0 -134
  104. package/dist/chunk-GU2FZQ6A.js +0 -69
  105. package/dist/chunk-IOPKN5GD.js +0 -190
  106. package/dist/chunk-LWDNLX6B.js +0 -2025
  107. package/dist/chunk-MGLJ53QN.js +0 -219
  108. package/dist/chunk-NHPDLYEW.js +0 -139
  109. package/dist/chunk-OGQGKMDX.js +0 -173
  110. package/dist/chunk-OPZYEVYR.js +0 -150
  111. package/dist/chunk-OWAOKDIN.js +0 -1505
  112. package/dist/chunk-R3GPQC7I.js +0 -393
  113. package/dist/chunk-RKB2JOV2.js +0 -43
  114. package/dist/chunk-RNG3K465.js +0 -80
  115. package/dist/chunk-SHJQMIJL.js +0 -288
  116. package/dist/chunk-SVF2VWOZ.js +0 -145
  117. package/dist/chunk-TGTYKBGC.js +0 -86
  118. package/dist/chunk-V2EBSFPU.js +0 -575
  119. package/dist/chunk-VJDQNNSO.js +0 -681
  120. package/dist/chunk-VQ35XX7B.js +0 -167
  121. package/dist/chunk-WHLVZCQY.js +0 -245
  122. package/dist/chunk-XMGHVNH2.js +0 -66
  123. package/dist/chunk-YWOSOTUO.js +0 -58
  124. package/dist/chunk-ZQRNV2US.js +0 -166
  125. package/dist/chunk-ZSBHUGWR.js +0 -262
  126. package/dist/claude-O5FSOXZC.js +0 -12
  127. package/dist/commands-43PLOWRU.js +0 -128
  128. package/dist/commands-5YVUSUMP.js +0 -232
  129. package/dist/commands-VZMZJFZF.js +0 -1044
  130. package/dist/config-WXXEEEVW.js +0 -8
  131. package/dist/config-loader-SXO674TF.js +0 -24
  132. package/dist/diagnose-BX45APUZ.js +0 -12
  133. package/dist/display-IIUBEYWN.js +0 -58
  134. package/dist/extractor-R5ABXNTJ.js +0 -129
  135. package/dist/history-JPXZEOT3.js +0 -180
  136. package/dist/index.d.ts +0 -1
  137. package/dist/instance-registry-6NJTCAE4.js +0 -15
  138. package/dist/keybindings-ADWNOX5M.js +0 -15
  139. package/dist/loader-AXDDCB2G.js +0 -58
  140. package/dist/network-V3O4UZYZ.js +0 -279
  141. package/dist/notify-HPTALZDC.js +0 -14
  142. package/dist/openai-compat-UFDV2SCK.js +0 -12
  143. package/dist/permissions-JUKXMNDH.js +0 -10
  144. package/dist/prompt-5CZ34WGA.js +0 -166
  145. package/dist/quality-ST7PPNFR.js +0 -16
  146. package/dist/repl-EOWP6AAB.js +0 -3374
  147. package/dist/roadmap-5OBEKROY.js +0 -17
  148. package/dist/server-BB5AENWU.js +0 -57
  149. package/dist/session-5NDKKFLN.js +0 -21
  150. package/dist/skills-JVLIQVJN.js +0 -175
  151. package/dist/store-G7KRD4PN.js +0 -25
  152. package/dist/team-FVNNVDBY.js +0 -385
  153. package/dist/telemetry-6R4EIE6O.js +0 -30
  154. package/dist/test-runner-REKSVPPY.js +0 -619
  155. package/dist/theme-3SYJ3UQA.js +0 -14
  156. package/dist/upgrade-YSXCO63I.js +0 -83
  157. package/dist/verify-JUDKTPKZ.js +0 -14
  158. package/dist/web-H2BJXUBZ.js +0 -39
@@ -1,602 +1 @@
1
- /* Hypercore Web Dashboard - Dark Theme */
2
-
3
- :root {
4
- --bg-primary: #0d1117;
5
- --bg-secondary: #161b22;
6
- --bg-tertiary: #21262d;
7
- --bg-hover: #30363d;
8
- --border: #30363d;
9
- --border-light: #484f58;
10
- --text-primary: #e6edf3;
11
- --text-secondary: #8b949e;
12
- --text-muted: #6e7681;
13
- --accent: #58a6ff;
14
- --accent-hover: #79c0ff;
15
- --green: #3fb950;
16
- --yellow: #d29922;
17
- --red: #f85149;
18
- --purple: #bc8cff;
19
- --orange: #f0883e;
20
- --font-mono: 'SF Mono', 'Cascadia Code', 'Fira Code', Consolas, monospace;
21
- --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
22
- --radius: 8px;
23
- --radius-sm: 4px;
24
- }
25
-
26
- * { margin: 0; padding: 0; box-sizing: border-box; }
27
-
28
- body {
29
- font-family: var(--font-sans);
30
- background: var(--bg-primary);
31
- color: var(--text-primary);
32
- height: 100vh;
33
- overflow: hidden;
34
- display: flex;
35
- flex-direction: column;
36
- }
37
-
38
- /* ─── Header ─── */
39
- .header {
40
- display: flex;
41
- align-items: center;
42
- justify-content: space-between;
43
- padding: 0 16px;
44
- height: 48px;
45
- background: var(--bg-secondary);
46
- border-bottom: 1px solid var(--border);
47
- flex-shrink: 0;
48
- }
49
-
50
- .header-left { display: flex; align-items: center; gap: 8px; }
51
- .logo { font-weight: 700; font-size: 16px; color: var(--accent); }
52
-
53
- .header-right { display: flex; align-items: center; gap: 12px; }
54
-
55
- .header-meta {
56
- font-size: 11px;
57
- color: var(--text-muted);
58
- font-family: var(--font-mono);
59
- }
60
-
61
- .btn-icon {
62
- background: none;
63
- border: 1px solid var(--border);
64
- color: var(--text-secondary);
65
- width: 28px;
66
- height: 28px;
67
- border-radius: var(--radius-sm);
68
- cursor: pointer;
69
- font-size: 14px;
70
- display: flex;
71
- align-items: center;
72
- justify-content: center;
73
- transition: all 0.15s;
74
- }
75
- .btn-icon:hover {
76
- background: var(--bg-tertiary);
77
- color: var(--text-primary);
78
- border-color: var(--border-light);
79
- }
80
- .btn-icon.spinning {
81
- animation: spin 0.6s ease-in-out;
82
- }
83
- @keyframes spin {
84
- from { transform: rotate(0deg); }
85
- to { transform: rotate(360deg); }
86
- }
87
-
88
- .status-dot {
89
- width: 8px; height: 8px;
90
- border-radius: 50%;
91
- display: inline-block;
92
- }
93
- .status-dot.online { background: var(--green); }
94
- .status-dot.offline { background: var(--red); }
95
-
96
- /* ─── Main Layout ─── */
97
- .main {
98
- flex: 1;
99
- display: grid;
100
- grid-template-columns: 1fr;
101
- overflow: hidden;
102
- }
103
-
104
- .panel-center {
105
- display: flex;
106
- flex-direction: column;
107
- overflow: hidden;
108
- background: var(--bg-primary);
109
- }
110
-
111
- .mono { font-family: var(--font-mono); font-size: 12px; }
112
-
113
- /* Scrollbar */
114
- ::-webkit-scrollbar { width: 6px; height: 6px; }
115
- ::-webkit-scrollbar-track { background: transparent; }
116
- ::-webkit-scrollbar-thumb { background: var(--bg-hover); border-radius: 3px; }
117
- ::-webkit-scrollbar-thumb:hover { background: var(--border-light); }
118
-
119
- /* ─── Tab Navigation ─── */
120
- .tab-nav {
121
- display: flex;
122
- gap: 2px;
123
- margin-left: 16px;
124
- }
125
- .tab-btn {
126
- background: none;
127
- border: none;
128
- color: var(--text-muted);
129
- font-size: 13px;
130
- padding: 6px 12px;
131
- cursor: pointer;
132
- border-radius: var(--radius-sm);
133
- transition: all 0.15s;
134
- font-family: var(--font-sans);
135
- }
136
- .tab-btn:hover { background: var(--bg-tertiary); color: var(--text-primary); }
137
- .tab-btn.active { background: var(--bg-hover); color: var(--accent); font-weight: 600; }
138
-
139
- /* Tab Content */
140
- .tab-content { display: none; flex-direction: column; height: 100%; overflow: hidden; }
141
- .tab-content.active { display: flex; }
142
-
143
- /* ─── Skeleton Loading ─── */
144
- .skeleton-line {
145
- height: 14px;
146
- background: linear-gradient(90deg, var(--bg-tertiary) 25%, var(--bg-hover) 50%, var(--bg-tertiary) 75%);
147
- background-size: 200% 100%;
148
- animation: shimmer 1.5s infinite;
149
- border-radius: 3px;
150
- margin-bottom: 10px;
151
- }
152
- .skeleton-line.short {
153
- width: 60%;
154
- }
155
- @keyframes shimmer {
156
- 0% { background-position: 200% 0; }
157
- 100% { background-position: -200% 0; }
158
- }
159
-
160
- /* ─── Overview Tab ─── */
161
- .overview-grid {
162
- display: grid;
163
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
164
- gap: 16px;
165
- padding: 24px;
166
- overflow-y: auto;
167
- }
168
-
169
- .overview-card {
170
- background: var(--bg-secondary);
171
- border: 1px solid var(--border);
172
- border-radius: var(--radius);
173
- overflow: hidden;
174
- transition: border-color 0.15s;
175
- }
176
- .overview-card:hover { border-color: var(--border-light); }
177
-
178
- .card-wide {
179
- grid-column: 1 / -1;
180
- }
181
-
182
- .card-header {
183
- padding: 12px 16px;
184
- font-size: 13px;
185
- font-weight: 600;
186
- color: var(--text-secondary);
187
- text-transform: uppercase;
188
- letter-spacing: 0.5px;
189
- border-bottom: 1px solid var(--border);
190
- }
191
-
192
- .card-body {
193
- padding: 16px;
194
- font-size: 13px;
195
- line-height: 1.8;
196
- }
197
-
198
- .card-stat {
199
- display: flex;
200
- justify-content: space-between;
201
- padding: 2px 0;
202
- color: var(--text-secondary);
203
- }
204
- .card-stat span:last-child { color: var(--text-primary); font-family: var(--font-mono); }
205
-
206
- .card-value-big {
207
- font-size: 28px;
208
- font-weight: 700;
209
- color: var(--text-primary);
210
- font-family: var(--font-mono);
211
- }
212
-
213
- .card-value-label {
214
- font-size: 12px;
215
- color: var(--text-muted);
216
- margin-top: 4px;
217
- }
218
-
219
- .card-tag {
220
- display: inline-block;
221
- background: var(--bg-tertiary);
222
- padding: 2px 8px;
223
- border-radius: 10px;
224
- font-size: 11px;
225
- font-family: var(--font-mono);
226
- color: var(--text-secondary);
227
- margin: 2px;
228
- }
229
-
230
- .git-branch { color: var(--green); font-weight: 600; }
231
- .git-clean { color: var(--green); }
232
- .git-dirty { color: var(--yellow); }
233
-
234
- /* ─── Empty State ─── */
235
- .empty-state {
236
- display: flex;
237
- flex-direction: column;
238
- align-items: center;
239
- justify-content: center;
240
- padding: 24px 16px;
241
- text-align: center;
242
- }
243
- .empty-icon {
244
- font-size: 32px;
245
- margin-bottom: 12px;
246
- opacity: 0.5;
247
- }
248
- .empty-text {
249
- font-size: 14px;
250
- font-weight: 600;
251
- color: var(--text-secondary);
252
- margin-bottom: 6px;
253
- }
254
- .empty-hint {
255
- font-size: 12px;
256
- color: var(--text-muted);
257
- }
258
- .empty-hint code {
259
- background: var(--bg-tertiary);
260
- padding: 1px 6px;
261
- border-radius: 3px;
262
- font-family: var(--font-mono);
263
- font-size: 11px;
264
- color: var(--accent);
265
- }
266
-
267
- /* ─── Instance List (Sessions Card) ─── */
268
- .instance-count {
269
- font-size: 13px;
270
- font-weight: 600;
271
- color: var(--text-secondary);
272
- margin-bottom: 10px;
273
- }
274
-
275
- .instances-list {
276
- display: flex;
277
- flex-direction: column;
278
- gap: 6px;
279
- }
280
-
281
- .instance-row {
282
- display: flex;
283
- align-items: center;
284
- justify-content: space-between;
285
- padding: 8px 10px;
286
- border-radius: var(--radius-sm);
287
- background: var(--bg-tertiary);
288
- transition: background 0.15s;
289
- }
290
- .instance-row:hover {
291
- background: var(--bg-hover);
292
- }
293
- .instance-row.current {
294
- border-left: 2px solid var(--accent);
295
- background: rgba(88, 166, 255, 0.06);
296
- }
297
-
298
- .instance-row-left {
299
- display: flex;
300
- align-items: center;
301
- gap: 8px;
302
- flex: 1;
303
- min-width: 0;
304
- }
305
-
306
- .instance-row-right {
307
- display: flex;
308
- align-items: center;
309
- gap: 12px;
310
- flex-shrink: 0;
311
- margin-left: 12px;
312
- }
313
-
314
- .instance-dot {
315
- width: 6px; height: 6px;
316
- border-radius: 50%;
317
- background: var(--green);
318
- flex-shrink: 0;
319
- }
320
- .instance-dot.current {
321
- background: var(--accent);
322
- box-shadow: 0 0 4px var(--accent);
323
- }
324
-
325
- .instance-info {
326
- display: flex;
327
- flex-direction: column;
328
- min-width: 0;
329
- }
330
-
331
- .instance-name {
332
- font-size: 13px;
333
- font-weight: 600;
334
- color: var(--text-primary);
335
- overflow: hidden;
336
- text-overflow: ellipsis;
337
- white-space: nowrap;
338
- }
339
-
340
- .instance-meta {
341
- font-size: 11px;
342
- color: var(--text-muted);
343
- margin-top: 1px;
344
- overflow: hidden;
345
- text-overflow: ellipsis;
346
- white-space: nowrap;
347
- }
348
-
349
- .instance-port {
350
- color: var(--text-muted);
351
- font-family: var(--font-mono);
352
- font-size: 11px;
353
- }
354
-
355
- .instance-uptime {
356
- color: var(--text-muted);
357
- font-family: var(--font-mono);
358
- font-size: 11px;
359
- min-width: 40px;
360
- text-align: right;
361
- }
362
-
363
- .badge-current {
364
- display: inline-block;
365
- background: rgba(88, 166, 255, 0.15);
366
- color: var(--accent);
367
- font-size: 10px;
368
- font-weight: 600;
369
- padding: 1px 6px;
370
- border-radius: 8px;
371
- margin-left: 6px;
372
- vertical-align: middle;
373
- text-transform: uppercase;
374
- letter-spacing: 0.3px;
375
- }
376
-
377
- /* ─── Lines Tab (Split Layout) ─── */
378
- .tab-split {
379
- display: grid;
380
- grid-template-columns: 300px 1fr;
381
- height: 100%;
382
- overflow: hidden;
383
- }
384
-
385
- .lines-list-panel {
386
- border-right: 1px solid var(--border);
387
- display: flex;
388
- flex-direction: column;
389
- overflow: hidden;
390
- }
391
-
392
- .tab-panel-header {
393
- padding: 12px 16px;
394
- border-bottom: 1px solid var(--border);
395
- }
396
- .tab-panel-header h3 {
397
- font-size: 14px;
398
- font-weight: 600;
399
- color: var(--text-primary);
400
- margin: 0;
401
- }
402
-
403
- .lines-list {
404
- flex: 1;
405
- overflow-y: auto;
406
- padding: 8px;
407
- }
408
-
409
- .line-item {
410
- padding: 12px;
411
- border-radius: var(--radius-sm);
412
- cursor: pointer;
413
- transition: background 0.15s;
414
- margin-bottom: 4px;
415
- }
416
- .line-item:hover { background: var(--bg-tertiary); }
417
- .line-item.active { background: var(--bg-hover); border-left: 2px solid var(--accent); }
418
- .line-item-name { font-size: 14px; font-weight: 600; color: var(--text-primary); }
419
- .line-item-desc { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
420
-
421
- .run-panel {
422
- display: flex;
423
- flex-direction: column;
424
- overflow: hidden;
425
- }
426
-
427
- .run-content {
428
- flex: 1;
429
- overflow-y: auto;
430
- padding: 16px;
431
- }
432
-
433
- /* Run form */
434
- .run-form { display: flex; flex-direction: column; gap: 12px; }
435
- .run-field label {
436
- display: block;
437
- font-size: 12px;
438
- font-weight: 600;
439
- color: var(--text-secondary);
440
- margin-bottom: 4px;
441
- }
442
- .run-field input {
443
- width: 100%;
444
- background: var(--bg-tertiary);
445
- border: 1px solid var(--border);
446
- border-radius: var(--radius-sm);
447
- padding: 8px 12px;
448
- color: var(--text-primary);
449
- font-size: 14px;
450
- font-family: var(--font-sans);
451
- outline: none;
452
- box-sizing: border-box;
453
- }
454
- .run-field input:focus { border-color: var(--accent); }
455
- .run-field input::placeholder { color: var(--text-muted); }
456
- .run-field .field-hint { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
457
-
458
- .btn-primary {
459
- background: var(--accent);
460
- color: #fff;
461
- border: none;
462
- border-radius: var(--radius);
463
- padding: 10px 20px;
464
- font-size: 14px;
465
- font-weight: 600;
466
- cursor: pointer;
467
- transition: background 0.15s;
468
- align-self: flex-start;
469
- margin-top: 8px;
470
- }
471
- .btn-primary:hover { background: var(--accent-hover); }
472
- .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
473
-
474
- /* Run output stream */
475
- .run-output-stream {
476
- margin-top: 16px;
477
- padding: 12px;
478
- background: var(--bg-primary);
479
- border: 1px solid var(--border);
480
- border-radius: var(--radius);
481
- max-height: 60vh;
482
- overflow-y: auto;
483
- font-size: 13px;
484
- line-height: 1.6;
485
- }
486
- .run-event { margin-bottom: 6px; }
487
- .run-event-station { color: var(--accent); font-weight: 600; }
488
- .run-event-text { color: var(--text-secondary); }
489
- .run-event-tool { color: var(--orange); font-family: var(--font-mono); font-size: 12px; }
490
- .run-event-complete { color: var(--green); font-weight: 600; }
491
- .run-event-error { color: var(--red); }
492
-
493
- .text-muted { color: var(--text-muted); font-size: 13px; }
494
-
495
- /* ─── History Tab ─── */
496
- .history-item {
497
- padding: 10px 12px;
498
- border-radius: var(--radius-sm);
499
- cursor: pointer;
500
- transition: background 0.15s;
501
- margin-bottom: 4px;
502
- }
503
- .history-item:hover { background: var(--bg-tertiary); }
504
- .history-item.active { background: var(--bg-hover); border-left: 2px solid var(--accent); }
505
- .history-item-line { font-size: 13px; font-weight: 600; color: var(--text-primary); }
506
- .history-item-meta { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
507
-
508
- .detail-meta { margin-bottom: 16px; }
509
- .detail-meta-row { display: flex; justify-content: space-between; padding: 4px 0; font-size: 13px; color: var(--text-secondary); }
510
- .detail-meta-row span:last-child { color: var(--text-primary); font-family: var(--font-mono); }
511
- .detail-station { margin-bottom: 12px; padding: 12px; background: var(--bg-tertiary); border-radius: var(--radius); }
512
- .detail-station-header { font-size: 13px; font-weight: 600; color: var(--accent); margin-bottom: 8px; }
513
- .detail-station-output { font-size: 12px; color: var(--text-secondary); white-space: pre-wrap; max-height: 200px; overflow-y: auto; }
514
-
515
- /* ─── Settings Tab ─── */
516
- .settings-container {
517
- padding: 24px;
518
- overflow-y: auto;
519
- flex: 1;
520
- display: flex;
521
- flex-direction: column;
522
- gap: 24px;
523
- }
524
-
525
- .settings-section {
526
- background: var(--bg-secondary);
527
- border: 1px solid var(--border);
528
- border-radius: var(--radius);
529
- overflow: hidden;
530
- }
531
- .settings-section h3 {
532
- padding: 12px 16px;
533
- font-size: 14px;
534
- font-weight: 600;
535
- color: var(--text-primary);
536
- border-bottom: 1px solid var(--border);
537
- margin: 0;
538
- }
539
-
540
- .settings-body {
541
- padding: 16px;
542
- font-size: 13px;
543
- }
544
-
545
- .settings-tools-count {
546
- font-size: 12px;
547
- color: var(--text-muted);
548
- margin-bottom: 8px;
549
- }
550
-
551
- .settings-tools-grid {
552
- display: flex;
553
- flex-wrap: wrap;
554
- gap: 6px;
555
- }
556
-
557
- .tool-tag {
558
- background: var(--bg-tertiary);
559
- padding: 4px 10px;
560
- border-radius: 10px;
561
- font-size: 11px;
562
- font-family: var(--font-mono);
563
- color: var(--text-secondary);
564
- }
565
-
566
- .hooks-list { font-family: var(--font-mono); font-size: 12px; line-height: 2; }
567
- .hook-event { color: var(--purple); }
568
- .hook-count { color: var(--text-muted); }
569
-
570
- /* ─── Code Blocks ─── */
571
- pre {
572
- background: var(--bg-tertiary);
573
- border: 1px solid var(--border);
574
- border-radius: var(--radius-sm);
575
- padding: 12px;
576
- overflow-x: auto;
577
- margin: 8px 0;
578
- font-family: var(--font-mono);
579
- font-size: 13px;
580
- line-height: 1.5;
581
- }
582
- code {
583
- font-family: var(--font-mono);
584
- font-size: 0.9em;
585
- background: var(--bg-tertiary);
586
- padding: 2px 6px;
587
- border-radius: 3px;
588
- }
589
- pre code { background: none; padding: 0; }
590
-
591
- /* ─── Responsive ─── */
592
- @media (max-width: 1024px) {
593
- .tab-split { grid-template-columns: 240px 1fr; }
594
- .overview-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
595
- .card-wide { grid-column: 1 / -1; }
596
- }
597
- @media (max-width: 768px) {
598
- .tab-split { grid-template-columns: 1fr; }
599
- .lines-list-panel { display: none; }
600
- .overview-grid { grid-template-columns: 1fr; padding: 16px; }
601
- .card-wide { grid-column: auto; }
602
- }
1
+ :root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--bg-hover: #30363d;--border: #30363d;--border-light: #484f58;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--accent: #58a6ff;--accent-hover: #79c0ff;--green: #3fb950;--yellow: #d29922;--red: #f85149;--purple: #bc8cff;--orange: #f0883e;--font-mono: "SF Mono", "Cascadia Code", "Fira Code", Consolas, monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--radius: 8px;--radius-sm: 4px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);height:100vh;overflow:hidden;display:flex;flex-direction:column}.header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:48px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.header-left{display:flex;align-items:center;gap:8px}.logo{font-weight:700;font-size:16px;color:var(--accent)}.header-right{display:flex;align-items:center;gap:12px}.header-meta{font-size:11px;color:var(--text-muted);font-family:var(--font-mono)}.btn-icon{background:none;border:1px solid var(--border);color:var(--text-secondary);width:28px;height:28px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .15s}.btn-icon:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-light)}.btn-icon.spinning{animation:spin .6s ease-in-out}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.online{background:var(--green)}.status-dot.offline{background:var(--red)}.main{flex:1;display:grid;grid-template-columns:1fr;overflow:hidden}.panel-center{display:flex;flex-direction:column;overflow:hidden;background:var(--bg-primary)}.mono{font-family:var(--font-mono);font-size:12px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-light)}.tab-nav{display:flex;gap:2px;margin-left:16px}.tab-btn{background:none;border:none;color:var(--text-muted);font-size:13px;padding:6px 12px;cursor:pointer;border-radius:var(--radius-sm);transition:all .15s;font-family:var(--font-sans)}.tab-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.tab-btn.active{background:var(--bg-hover);color:var(--accent);font-weight:600}.tab-content{display:none;flex-direction:column;height:100%;overflow:hidden}.tab-content.active{display:flex}.skeleton-line{height:14px;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-hover) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:3px;margin-bottom:10px}.skeleton-line.short{width:60%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.overview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;padding:24px;overflow-y:auto}.overview-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}.overview-card:hover{border-color:var(--border-light)}.card-wide{grid-column:1 / -1}.card-header{padding:12px 16px;font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.card-body{padding:16px;font-size:13px;line-height:1.8}.card-stat{display:flex;justify-content:space-between;padding:2px 0;color:var(--text-secondary)}.card-stat span:last-child{color:var(--text-primary);font-family:var(--font-mono)}.card-value-big{font-size:28px;font-weight:700;color:var(--text-primary);font-family:var(--font-mono)}.card-value-label{font-size:12px;color:var(--text-muted);margin-top:4px}.card-tag{display:inline-block;background:var(--bg-tertiary);padding:2px 8px;border-radius:10px;font-size:11px;font-family:var(--font-mono);color:var(--text-secondary);margin:2px}.git-branch{color:var(--green);font-weight:600}.git-clean{color:var(--green)}.git-dirty{color:var(--yellow)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;text-align:center}.empty-icon{font-size:32px;margin-bottom:12px;opacity:.5}.empty-text{font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:6px}.empty-hint{font-size:12px;color:var(--text-muted)}.empty-hint code{background:var(--bg-tertiary);padding:1px 6px;border-radius:3px;font-family:var(--font-mono);font-size:11px;color:var(--accent)}.instance-count{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:10px}.instances-list{display:flex;flex-direction:column;gap:6px}.instance-row{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:var(--radius-sm);background:var(--bg-tertiary);transition:background .15s}.instance-row:hover{background:var(--bg-hover)}.instance-row.current{border-left:2px solid var(--accent);background:#58a6ff0f}.instance-row-left{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.instance-row-right{display:flex;align-items:center;gap:12px;flex-shrink:0;margin-left:12px}.instance-dot{width:6px;height:6px;border-radius:50%;background:var(--green);flex-shrink:0}.instance-dot.current{background:var(--accent);box-shadow:0 0 4px var(--accent)}.instance-info{display:flex;flex-direction:column;min-width:0}.instance-name{font-size:13px;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.instance-meta{font-size:11px;color:var(--text-muted);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.instance-port{color:var(--text-muted);font-family:var(--font-mono);font-size:11px}.instance-uptime{color:var(--text-muted);font-family:var(--font-mono);font-size:11px;min-width:40px;text-align:right}.badge-current{display:inline-block;background:#58a6ff26;color:var(--accent);font-size:10px;font-weight:600;padding:1px 6px;border-radius:8px;margin-left:6px;vertical-align:middle;text-transform:uppercase;letter-spacing:.3px}.tab-split{display:grid;grid-template-columns:300px 1fr;height:100%;overflow:hidden}.lines-list-panel{border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.tab-panel-header{padding:12px 16px;border-bottom:1px solid var(--border)}.tab-panel-header h3{font-size:14px;font-weight:600;color:var(--text-primary);margin:0}.lines-list{flex:1;overflow-y:auto;padding:8px}.line-item{padding:12px;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s;margin-bottom:4px}.line-item:hover{background:var(--bg-tertiary)}.line-item.active{background:var(--bg-hover);border-left:2px solid var(--accent)}.line-item-name{font-size:14px;font-weight:600;color:var(--text-primary)}.line-item-desc{font-size:12px;color:var(--text-muted);margin-top:4px}.run-panel{display:flex;flex-direction:column;overflow:hidden}.run-content{flex:1;overflow-y:auto;padding:16px}.run-form{display:flex;flex-direction:column;gap:12px}.run-field label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:4px}.run-field input{width:100%;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;color:var(--text-primary);font-size:14px;font-family:var(--font-sans);outline:none;box-sizing:border-box}.run-field input:focus{border-color:var(--accent)}.run-field input::placeholder{color:var(--text-muted)}.run-field .field-hint{font-size:11px;color:var(--text-muted);margin-top:2px}.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:var(--radius);padding:10px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;align-self:flex-start;margin-top:8px}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.run-output-stream{margin-top:16px;padding:12px;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);max-height:60vh;overflow-y:auto;font-size:13px;line-height:1.6}.run-event{margin-bottom:6px}.run-event-station{color:var(--accent);font-weight:600}.run-event-text{color:var(--text-secondary)}.run-event-tool{color:var(--orange);font-family:var(--font-mono);font-size:12px}.run-event-complete{color:var(--green);font-weight:600}.run-event-error{color:var(--red)}.text-muted{color:var(--text-muted);font-size:13px}.history-item{padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s;margin-bottom:4px}.history-item:hover{background:var(--bg-tertiary)}.history-item.active{background:var(--bg-hover);border-left:2px solid var(--accent)}.history-item-line{font-size:13px;font-weight:600;color:var(--text-primary)}.history-item-meta{font-size:11px;color:var(--text-muted);margin-top:2px}.detail-meta{margin-bottom:16px}.detail-meta-row{display:flex;justify-content:space-between;padding:4px 0;font-size:13px;color:var(--text-secondary)}.detail-meta-row span:last-child{color:var(--text-primary);font-family:var(--font-mono)}.detail-station{margin-bottom:12px;padding:12px;background:var(--bg-tertiary);border-radius:var(--radius)}.detail-station-header{font-size:13px;font-weight:600;color:var(--accent);margin-bottom:8px}.detail-station-output{font-size:12px;color:var(--text-secondary);white-space:pre-wrap;max-height:200px;overflow-y:auto}.settings-container{padding:24px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:24px}.settings-section{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.settings-section h3{padding:12px 16px;font-size:14px;font-weight:600;color:var(--text-primary);border-bottom:1px solid var(--border);margin:0}.settings-body{padding:16px;font-size:13px}.settings-tools-count{font-size:12px;color:var(--text-muted);margin-bottom:8px}.settings-tools-grid{display:flex;flex-wrap:wrap;gap:6px}.tool-tag{background:var(--bg-tertiary);padding:4px 10px;border-radius:10px;font-size:11px;font-family:var(--font-mono);color:var(--text-secondary)}.hooks-list{font-family:var(--font-mono);font-size:12px;line-height:2}.hook-event{color:var(--purple)}.hook-count{color:var(--text-muted)}pre{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;overflow-x:auto;margin:8px 0;font-family:var(--font-mono);font-size:13px;line-height:1.5}code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-tertiary);padding:2px 6px;border-radius:3px}pre code{background:none;padding:0}@media(max-width:1024px){.tab-split{grid-template-columns:240px 1fr}.overview-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.card-wide{grid-column:1 / -1}}@media(max-width:768px){.tab-split{grid-template-columns:1fr}.lines-list-panel{display:none}.overview-grid{grid-template-columns:1fr;padding:16px}.card-wide{grid-column:auto}}
@@ -0,0 +1 @@
1
+ function _0x1fb2(_0xe75b73,_0xc44885){_0xe75b73=_0xe75b73-0x172;const _0x387bc8=_0x124d();let _0x2ecd32=_0x387bc8[_0xe75b73];if(_0x1fb2['pewogV']===undefined){var _0xcab44d=function(_0x3aac96){const _0x11d98f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x39a9e9='',_0x582896='',_0x426d79=_0x39a9e9+_0xcab44d;for(let _0x4be0aa=0x0,_0x5d20de,_0x6b9f32,_0x174dbb=0x0;_0x6b9f32=_0x3aac96['charAt'](_0x174dbb++);~_0x6b9f32&&(_0x5d20de=_0x4be0aa%0x4?_0x5d20de*0x40+_0x6b9f32:_0x6b9f32,_0x4be0aa++%0x4)?_0x39a9e9+=_0x426d79['charCodeAt'](_0x174dbb+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x5d20de>>(-0x2*_0x4be0aa&0x6)):_0x4be0aa:0x0){_0x6b9f32=_0x11d98f['indexOf'](_0x6b9f32);}for(let _0x39fbd1=0x0,_0x19a658=_0x39a9e9['length'];_0x39fbd1<_0x19a658;_0x39fbd1++){_0x582896+='%'+('00'+_0x39a9e9['charCodeAt'](_0x39fbd1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x582896);};const _0x1f0e32=function(_0xe41e5b,_0x301114){let _0x25a1da=[],_0x705f68=0x0,_0x427c16,_0x4a05de='';_0xe41e5b=_0xcab44d(_0xe41e5b);let _0x14de16;for(_0x14de16=0x0;_0x14de16<0x100;_0x14de16++){_0x25a1da[_0x14de16]=_0x14de16;}for(_0x14de16=0x0;_0x14de16<0x100;_0x14de16++){_0x705f68=(_0x705f68+_0x25a1da[_0x14de16]+_0x301114['charCodeAt'](_0x14de16%_0x301114['length']))%0x100,_0x427c16=_0x25a1da[_0x14de16],_0x25a1da[_0x14de16]=_0x25a1da[_0x705f68],_0x25a1da[_0x705f68]=_0x427c16;}_0x14de16=0x0,_0x705f68=0x0;for(let _0x22410e=0x0;_0x22410e<_0xe41e5b['length'];_0x22410e++){_0x14de16=(_0x14de16+0x1)%0x100,_0x705f68=(_0x705f68+_0x25a1da[_0x14de16])%0x100,_0x427c16=_0x25a1da[_0x14de16],_0x25a1da[_0x14de16]=_0x25a1da[_0x705f68],_0x25a1da[_0x705f68]=_0x427c16,_0x4a05de+=String['fromCharCode'](_0xe41e5b['charCodeAt'](_0x22410e)^_0x25a1da[(_0x25a1da[_0x14de16]+_0x25a1da[_0x705f68])%0x100]);}return _0x4a05de;};_0x1fb2['YqUXjH']=_0x1f0e32,_0x1fb2['FziBfG']={},_0x1fb2['pewogV']=!![];}const _0x124d07=_0x387bc8[0x0],_0x1fb2ef=_0xe75b73+_0x124d07,_0x3f15fb=_0x1fb2['FziBfG'][_0x1fb2ef];if(!_0x3f15fb){if(_0x1fb2['ioEVBR']===undefined){const _0x9fe9fb=function(_0x278740){this['XimtQv']=_0x278740,this['sYcRbU']=[0x1,0x0,0x0],this['GkjfXv']=function(){return'newState';},this['KmLsQf']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['lXbbGA']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x9fe9fb['prototype']['XXUqdq']=function(){const _0x4220b7=new RegExp(this['KmLsQf']+this['lXbbGA']),_0x4272f7=_0x4220b7['test'](this['GkjfXv']['toString']())?--this['sYcRbU'][0x1]:--this['sYcRbU'][0x0];return this['arLvMy'](_0x4272f7);},_0x9fe9fb['prototype']['arLvMy']=function(_0x3b6d54){if(!Boolean(~_0x3b6d54))return _0x3b6d54;return this['rjhdly'](this['XimtQv']);},_0x9fe9fb['prototype']['rjhdly']=function(_0xaa734a){for(let _0x5d1f18=0x0,_0x692846=this['sYcRbU']['length'];_0x5d1f18<_0x692846;_0x5d1f18++){this['sYcRbU']['push'](Math['round'](Math['random']())),_0x692846=this['sYcRbU']['length'];}return _0xaa734a(this['sYcRbU'][0x0]);},new _0x9fe9fb(_0x1fb2)['XXUqdq'](),_0x1fb2['ioEVBR']=!![];}_0x2ecd32=_0x1fb2['YqUXjH'](_0x2ecd32,_0xc44885),_0x1fb2['FziBfG'][_0x1fb2ef]=_0x2ecd32;}else _0x2ecd32=_0x3f15fb;return _0x2ecd32;}(function(_0x1dfe9a,_0x5bf8ff){const _0x2dd895={_0x4bb0a5:'LP@F',_0x192057:0x307,_0x2c8519:'p5]I',_0xf695f7:0x1bf,_0x575816:'(qx!',_0x2abe44:0x1a6,_0x1a1624:'kJzu',_0x5f0f74:0x1b2,_0x5eb366:0x198,_0x1ed41e:0x19e,_0x586bf9:'GWn)',_0x2c4ffe:0x1a5,_0x14c715:0x2eb,_0xf8b6cf:'(y$a',_0x1bfa0d:0x19f,_0x270357:'cuIv',_0x8ca80f:0x2f7},_0x8a44ff={_0x9acef1:0x24},_0x145181=_0x1dfe9a();function _0x37e519(_0x133e26,_0x232518){return _0x1fb2(_0x232518-0x15f,_0x133e26);}function _0x53fb9a(_0x3c7020,_0x5c9d03){return _0x1fb2(_0x5c9d03-_0x8a44ff._0x9acef1,_0x3c7020);}while(!![]){try{const _0x389033=parseInt(_0x37e519(_0x2dd895._0x4bb0a5,_0x2dd895._0x192057))/0x1*(-parseInt(_0x53fb9a(_0x2dd895._0x2c8519,_0x2dd895._0xf695f7))/0x2)+-parseInt(_0x53fb9a('3iV6',0x19b))/0x3*(-parseInt(_0x53fb9a(_0x2dd895._0x575816,_0x2dd895._0x2abe44))/0x4)+-parseInt(_0x37e519(_0x2dd895._0x1a1624,0x2ea))/0x5*(parseInt(_0x53fb9a('fwuF',_0x2dd895._0x5f0f74))/0x6)+-parseInt(_0x53fb9a('cuIv',_0x2dd895._0x5eb366))/0x7+parseInt(_0x53fb9a('k3B%',_0x2dd895._0x1ed41e))/0x8+parseInt(_0x53fb9a(_0x2dd895._0x586bf9,_0x2dd895._0x2c4ffe))/0x9*(parseInt(_0x37e519('E*lY',_0x2dd895._0x14c715))/0xa)+-parseInt(_0x53fb9a(_0x2dd895._0xf8b6cf,_0x2dd895._0x1bfa0d))/0xb*(-parseInt(_0x37e519(_0x2dd895._0x270357,_0x2dd895._0x8ca80f))/0xc);if(_0x389033===_0x5bf8ff)break;else _0x145181['push'](_0x145181['shift']());}catch(_0xa9a1b5){_0x145181['push'](_0x145181['shift']());}}}(_0x124d,0x6538a));function _0x124d(){const _0x4a028b=['W5FcOmoJ','WPKWW71zW7KoW4RcOs8mta','WQ/dNZ/dMae','sCkVuSosWPO','hCkuWP4OWRi','eSkDWQtcHqK','W5JdNSkuC1ash8kk','s1OV','iuNdLmk8WQu','b8kKWRNcKIm','A8owW6FcLCoy','l8kJegFdPSkDWQVcJW','kZddNrRdSamW','W6PFECkpqq','dM0lW6FcPqddK8o9','yc0TnYiYW5y','ntZdLCkuiSosW47dQM3dVKhcGW','W4pdRSkJ','aCoLaSoQlq','WOVcQmkGW4uRWRxdQ33dMcD3yG','kYddUJarW5lcQ3O','WOdcIWpcLvm','mNHUw39OWOhdNConhmobWRtdKW','zCoTvCovWRhcPCkUq1ZcPe0','iKJdNSk9WQm','haXTWO/cVCkXurxcHw1yyW','laddQGuA','exyvW5hdJCoIzG','WOJcKsLEvwy','WPFdO3xdJvXAW6xcJCkUW6C','uSoyWRddGCkREeK','cCknWRxcNmke','W5BcVGpcT3y','WOhcSgfZWRtdMmktWOG','W6LdW5dcKatcR0aEWR8','fh80W4hdRCocyG','lh/dQmopWOCoiSom','Cg3cQCoHqLvrWQa','pCkGlhZdPG','DmotaSkfW5y0WOiAW4y','yCkRj8oHeYj8wIi9WQa','WPNcQXddV3zWWP0fWPitWPm','c8oAcmkNW6a4W5pcPmkvavW','W5/dTmo+WPLH','d8oAdCkRW6zyWPtcMmk+fe1Kxq','pmkkWR7dImkDbs7cVGaeW6beW7C','W5ddRSkWCHm','W5JcTSoEW6LwCW','WPhcHsVdIYK','F8osaSohW7aDWR0YW7aQ','vHu5W5hdOW','WRaaWPxcJc8','pZFdLCkFz8knW5pdKKRdMG','DHFcJSoRW6mBW6RcNSkiEbK','W5z2FCkzqG','W6baW5pdKMhdKailWPuWWOS7ya'];_0x124d=function(){return _0x4a028b;};return _0x124d();}const _0xcab44d=(function(){const _0x1fa62e={_0x428c06:'p5]I',_0x38bca6:0x106};let _0xd35b8c=!![];return function(_0x4ac76f,_0x5a5b64){const _0x5cdcb3=_0xd35b8c?function(){function _0x4e98bc(_0x4bafc2,_0x25a4b1){return _0x1fb2(_0x25a4b1- -0x91,_0x4bafc2);}if(_0x5a5b64){const _0x4d6338=_0x5a5b64[_0x4e98bc(_0x1fa62e._0x428c06,_0x1fa62e._0x38bca6)](_0x4ac76f,arguments);return _0x5a5b64=null,_0x4d6338;}}:function(){};return _0xd35b8c=![],_0x5cdcb3;};}()),_0x2ecd32=_0xcab44d(this,function(){const _0x236a09={_0xe62e27:0x2f4,_0x23dbb5:'qhff',_0x47a726:'Ybbj',_0x1e35b7:0x171,_0xc73109:'lT6U',_0x473f56:0x2ea,_0x3229af:'Qg&k',_0x346e3c:'Y3O]',_0x27dfb9:0x2f5,_0x3ed044:0x19f},_0x48ae0a={_0x5849e2:0x162},_0x56bdbd={_0x39d815:0x318};function _0x1576c2(_0x57d834,_0x30a622){return _0x1fb2(_0x30a622- -_0x56bdbd._0x39d815,_0x57d834);}const _0x5807fb={};_0x5807fb[_0x59a2a8(_0x236a09._0xe62e27,_0x236a09._0x23dbb5)]=_0x59a2a8(0x2e7,_0x236a09._0x47a726)+'+)+$';function _0x59a2a8(_0x1c92bf,_0x218984){return _0x1fb2(_0x1c92bf-_0x48ae0a._0x5849e2,_0x218984);}const _0xbb6789=_0x5807fb;return _0x2ecd32[_0x1576c2('IOlZ',-_0x236a09._0x1e35b7)]()[_0x1576c2(_0x236a09._0xc73109,-0x198)](_0xbb6789[_0x1576c2('FjR2',-0x195)])[_0x59a2a8(_0x236a09._0x473f56,_0x236a09._0x3229af)]()[_0x1576c2('))]R',-0x1a6)+_0x1576c2(_0x236a09._0x346e3c,-0x17c)](_0x2ecd32)[_0x59a2a8(_0x236a09._0x27dfb9,'MB2d')](_0xbb6789[_0x1576c2('$uPw',-_0x236a09._0x3ed044)]);});_0x2ecd32();function escapeHtml(_0x3b3c64){const _0x2dd316={_0x105512:'Kp2K',_0x568ee9:0xec,_0x4cbab3:0x215,_0xec08ac:'z$[R'},_0x20dbba={_0x28becc:0x89},_0x168e6e=document['createEl'+_0x1b4043(0xf3,_0x2dd316._0x105512)]('div');function _0x1b4043(_0x14f1a2,_0x243ffb){return _0x1fb2(_0x14f1a2- -_0x20dbba._0x28becc,_0x243ffb);}function _0x15ccc2(_0x5b5257,_0x58c695){return _0x1fb2(_0x5b5257-0x8c,_0x58c695);}return _0x168e6e[_0x15ccc2(0x204,'o*Q%')+_0x1b4043(_0x2dd316._0x568ee9,'AIzE')]=_0x3b3c64,_0x168e6e[_0x15ccc2(_0x2dd316._0x4cbab3,_0x2dd316._0xec08ac)+'L'];}function relativeTime(_0x5c7496){const _0x5a6e9a={_0xca0a1:0x21f,_0x269928:0x24f,_0x98293a:'qhff',_0x42e1ac:0x2,_0x353b1d:0x233,_0x55ee7e:0xe,_0x36d8db:'uO0#',_0x1de729:'uTjz',_0xe6665b:0x0,_0x4d37ae:0x224},_0xe5a41d={_0x1ba230:0x1a4},_0x5b90d9={};_0x5b90d9['IJiNY']=function(_0x3bb2af,_0x1c9e8f){return _0x3bb2af/_0x1c9e8f;};const _0x34d227=_0x5b90d9;function _0x240817(_0x274b33,_0x267d81){return _0x1fb2(_0x267d81- -_0xe5a41d._0x1ba230,_0x274b33);}if(!_0x5c7496)return'-';function _0x2c79c7(_0x34e044,_0x531a5b){return _0x1fb2(_0x531a5b- -0x3c2,_0x34e044);}const _0x50c5da=Date[_0x2c79c7('LSF[',-_0x5a6e9a._0xca0a1)]()-new Date(_0x5c7496)[_0x2c79c7('k3B%',-_0x5a6e9a._0x269928)]();return _0x50c5da<0x0?_0x240817(_0x5a6e9a._0x98293a,-_0x5a6e9a._0x42e1ac):_0x50c5da<0xea60?Math[_0x2c79c7('3iV6',-_0x5a6e9a._0x353b1d)](_0x50c5da/0x3e8)+_0x240817('LSF[',-_0x5a6e9a._0x55ee7e):_0x50c5da<0x36ee80?Math[_0x240817(_0x5a6e9a._0x36d8db,0x2)](_0x50c5da/0xea60)+_0x2c79c7(_0x5a6e9a._0x1de729,-0x222):_0x50c5da<0x5265c00?Math[_0x240817('Kp2K',_0x5a6e9a._0xe6665b)](_0x34d227['IJiNY'](_0x50c5da,0x36ee80))+'h\x20ago':Math['floor'](_0x50c5da/0x5265c00)+_0x2c79c7('P*sq',-_0x5a6e9a._0x4d37ae);}function formatDuration(_0x1fcb74){const _0x4f9b11={_0x3118f8:0x24a,_0x267b98:0x41,_0x3a9868:'kwA)',_0x198278:0x227,_0x25678f:0x3c,_0x94619e:0x23e,_0x4e39a3:'P*sq',_0x4cff03:0x244},_0x31adb0={_0xa70180:0x3c8},_0x4eb921={_0x584dde:0x1db},_0x25b430={};_0x25b430[_0x58b708(-0x65,'8m0q')]=function(_0x5aa43c,_0x2d1d69){return _0x5aa43c<=_0x2d1d69;},_0x25b430[_0x220689(-0x21f,'kwA)')]=function(_0x47c429,_0x41d56e){return _0x47c429/_0x41d56e;},_0x25b430[_0x220689(-_0x4f9b11._0x3118f8,'o*Q%')]=function(_0x5222c7,_0x3dd99b){return _0x5222c7<_0x3dd99b;};function _0x58b708(_0x2dd2c8,_0x272769){return _0x1fb2(_0x2dd2c8- -_0x4eb921._0x584dde,_0x272769);}function _0x220689(_0x23cef8,_0x427424){return _0x1fb2(_0x23cef8- -_0x31adb0._0xa70180,_0x427424);}_0x25b430[_0x58b708(-_0x4f9b11._0x267b98,_0x4f9b11._0x3a9868)]=function(_0x3105cc,_0xab406d){return _0x3105cc/_0xab406d;},_0x25b430['pmBNG']=function(_0x2bd10e,_0x558778){return _0x2bd10e%_0x558778;};const _0x2267e2=_0x25b430;if(!_0x1fcb74||_0x2267e2[_0x58b708(-0x36,'5&lS')](_0x1fcb74,0x0))return'-';const _0x13de03=Math[_0x220689(-_0x4f9b11._0x198278,'5&lS')](_0x2267e2['fSqbD'](_0x1fcb74,0x3e8));if(_0x2267e2[_0x58b708(-_0x4f9b11._0x25678f,'fwuF')](_0x13de03,0x3c))return _0x13de03+'s';const _0x18af60=Math[_0x220689(-_0x4f9b11._0x94619e,'IOlZ')](_0x2267e2[_0x58b708(-0x47,_0x4f9b11._0x4e39a3)](_0x13de03,0x3c)),_0x48729a=_0x2267e2[_0x220689(-_0x4f9b11._0x4cff03,'GWn)')](_0x13de03,0x3c);return _0x18af60+'m\x20'+_0x48729a+'s';}