hypercore-cli 1.1.2 → 1.4.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 (162) 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-ELP6F4NC.js +1 -0
  5. package/dist/auth-SICBMA3P.js +1 -0
  6. package/dist/auth-X6CUT3DW.js +1 -0
  7. package/dist/background-ACODXSUG.js +1 -0
  8. package/dist/backlog-JD2IM336.js +1 -0
  9. package/dist/chunk-2QI2IU2V.js +1 -0
  10. package/dist/chunk-3KFRDIPQ.js +1 -0
  11. package/dist/chunk-42C5J7PN.js +1 -0
  12. package/dist/chunk-4D7XVJ7Q.js +1 -0
  13. package/dist/chunk-5KUSGQP2.js +1 -0
  14. package/dist/chunk-5OEFAGD5.js +1 -0
  15. package/dist/chunk-AUQ64BK2.js +1 -0
  16. package/dist/chunk-AV244H5C.js +1 -0
  17. package/dist/chunk-BQVBEFS4.js +1 -0
  18. package/dist/chunk-BYWQLFP2.js +1 -0
  19. package/dist/chunk-C6YL7UHE.js +1 -0
  20. package/dist/chunk-COITWWZJ.js +1 -0
  21. package/dist/chunk-CR7UUJVX.js +1 -0
  22. package/dist/chunk-E3MULLBX.js +1 -0
  23. package/dist/chunk-EZHYVJGQ.js +1 -0
  24. package/dist/chunk-FAMURNNH.js +1 -0
  25. package/dist/chunk-FGP56E4W.js +1 -0
  26. package/dist/chunk-FHGATV5B.js +1 -0
  27. package/dist/chunk-I2G27Y5P.js +1 -0
  28. package/dist/chunk-IKF43TX2.js +1 -0
  29. package/dist/chunk-INSPHCBN.js +1 -0
  30. package/dist/chunk-JHMV366T.js +1 -0
  31. package/dist/chunk-L52HX5SX.js +1 -0
  32. package/dist/chunk-LQMDUKIE.js +1 -0
  33. package/dist/chunk-M3MTKGA5.js +1 -0
  34. package/dist/chunk-MPO54FU3.js +1 -0
  35. package/dist/chunk-PVKCZI6A.js +1 -0
  36. package/dist/chunk-Q7KEPCYL.js +1 -0
  37. package/dist/chunk-ROBZ6PAL.js +1 -0
  38. package/dist/chunk-RXB5BS2N.js +1 -0
  39. package/dist/chunk-RZ3HNYMT.js +1 -0
  40. package/dist/chunk-UCGLRMTG.js +1 -0
  41. package/dist/chunk-UEHJVRKB.js +1 -0
  42. package/dist/chunk-UZYX5GGF.js +1 -0
  43. package/dist/chunk-XQJBB725.js +1 -0
  44. package/dist/chunk-YXCRL6K3.js +1 -0
  45. package/dist/claude-US2QPRBA.js +1 -0
  46. package/dist/commands-EKPWCB3T.js +1 -0
  47. package/dist/commands-GYNKP5WV.js +1 -0
  48. package/dist/commands-QHJLREPM.js +1 -0
  49. package/dist/config-2OUL5FLS.js +1 -0
  50. package/dist/config-loader-N7IBWN2P.js +1 -0
  51. package/dist/diagnose-NLHN4SAJ.js +1 -0
  52. package/dist/display-RYAW2GFB.js +1 -0
  53. package/dist/extractor-3KTM2IUL.js +1 -0
  54. package/dist/feature-flag-VVIF5FJG.js +1 -0
  55. package/dist/history-3R2UHRDQ.js +1 -0
  56. package/dist/index.js +1 -402
  57. package/dist/instance-registry-I5AIVJE2.js +1 -0
  58. package/dist/keybindings-RN3A7CRW.js +1 -0
  59. package/dist/loader-3IKPXP4R.js +1 -0
  60. package/dist/network-K5HRJE44.js +1 -0
  61. package/dist/notify-O6FNVHC4.js +1 -0
  62. package/dist/openai-compat-IPCMINVF.js +1 -0
  63. package/dist/panels-2R5YEFXH.js +1 -0
  64. package/dist/permissions-5O7KVAXU.js +1 -0
  65. package/dist/prompt-VWFPFM4N.js +1 -0
  66. package/dist/quality-GPQD25UL.js +1 -0
  67. package/dist/repl-CL4SYHU4.js +1 -0
  68. package/dist/roadmap-QRZODSNJ.js +1 -0
  69. package/dist/server-PKOHK5M2.js +1 -0
  70. package/dist/session-5HDDQQP6.js +1 -0
  71. package/dist/skills-DXWSVJSU.js +1 -0
  72. package/dist/store-WXXTKTTL.js +1 -0
  73. package/dist/team-N2GF4YYS.js +1 -0
  74. package/dist/telemetry-NT4UZLBS.js +1 -0
  75. package/dist/test-runner-F6B6RH3S.js +1 -0
  76. package/dist/theme-JJJ6ABR2.js +1 -0
  77. package/dist/upgrade-RUG3R7R5.js +1 -0
  78. package/dist/verify-6OGRY2PR.js +1 -0
  79. package/dist/version-4RHTDUNQ.js +1 -0
  80. package/dist/web/static/app.js +1 -562
  81. package/dist/web/static/index.html +114 -126
  82. package/dist/web/static/mirror.css +1 -1001
  83. package/dist/web/static/mirror.html +155 -178
  84. package/dist/web/static/mirror.js +1 -1125
  85. package/dist/web/static/onboard.css +1 -302
  86. package/dist/web/static/onboard.html +121 -145
  87. package/dist/web/static/onboard.js +1 -300
  88. package/dist/web/static/style.css +1 -602
  89. package/dist/web/static/utils.js +1 -0
  90. package/dist/web/static/workspace.css +1 -1568
  91. package/dist/web/static/workspace.html +369 -402
  92. package/dist/web/static/workspace.js +1 -1683
  93. package/dist/web-CIC7ZKBM.js +1 -0
  94. package/package.json +26 -4
  95. package/dist/api-JHHOZTL6.js +0 -162
  96. package/dist/auth-5QFJLW7J.js +0 -21
  97. package/dist/background-2EGCAAQH.js +0 -14
  98. package/dist/backlog-Q2NZCLNY.js +0 -24
  99. package/dist/chunk-2CMSCWQW.js +0 -162
  100. package/dist/chunk-4DVYJAJL.js +0 -57
  101. package/dist/chunk-5GDYH676.js +0 -271
  102. package/dist/chunk-5NLVGLD7.js +0 -66
  103. package/dist/chunk-6XTEAFZQ.js +0 -575
  104. package/dist/chunk-AQBSMYLT.js +0 -2025
  105. package/dist/chunk-BE46C7JW.js +0 -46
  106. package/dist/chunk-CLKIMCXZ.js +0 -139
  107. package/dist/chunk-DN4ASQ26.js +0 -167
  108. package/dist/chunk-DUWREZXK.js +0 -173
  109. package/dist/chunk-FCW3K6F2.js +0 -263
  110. package/dist/chunk-GFORWAMW.js +0 -251
  111. package/dist/chunk-GH7E2OJE.js +0 -223
  112. package/dist/chunk-GU2FZQ6A.js +0 -69
  113. package/dist/chunk-I7WI3BMB.js +0 -161
  114. package/dist/chunk-IOPKN5GD.js +0 -190
  115. package/dist/chunk-LBVHDGZE.js +0 -133
  116. package/dist/chunk-MGLJ53QN.js +0 -219
  117. package/dist/chunk-NETIY5UB.js +0 -134
  118. package/dist/chunk-NP47L7LG.js +0 -288
  119. package/dist/chunk-O6MG7TOH.js +0 -58
  120. package/dist/chunk-OPZYEVYR.js +0 -150
  121. package/dist/chunk-R3GPQC7I.js +0 -393
  122. package/dist/chunk-R5T3A2NQ.js +0 -166
  123. package/dist/chunk-RKB2JOV2.js +0 -43
  124. package/dist/chunk-RNG3K465.js +0 -80
  125. package/dist/chunk-TGTYKBGC.js +0 -86
  126. package/dist/chunk-UCX4VZCT.js +0 -681
  127. package/dist/chunk-WHLVZCQY.js +0 -245
  128. package/dist/chunk-Y6HMJZDJ.js +0 -1505
  129. package/dist/chunk-ZSBHUGWR.js +0 -262
  130. package/dist/claude-4BX3MJSK.js +0 -12
  131. package/dist/commands-2X4OB5RF.js +0 -128
  132. package/dist/commands-GLBCEVQK.js +0 -1044
  133. package/dist/commands-IINRNBYX.js +0 -232
  134. package/dist/config-RSNQJQPS.js +0 -8
  135. package/dist/config-loader-SXO674TF.js +0 -24
  136. package/dist/diagnose-7UPLS7I4.js +0 -12
  137. package/dist/display-IIUBEYWN.js +0 -58
  138. package/dist/extractor-D3XWOAXI.js +0 -129
  139. package/dist/history-6I6FADAU.js +0 -180
  140. package/dist/index.d.ts +0 -1
  141. package/dist/instance-registry-J7UJ7U4Z.js +0 -15
  142. package/dist/keybindings-PDXIOV3O.js +0 -15
  143. package/dist/loader-GKEYT6Y7.js +0 -58
  144. package/dist/network-JYGHQXAR.js +0 -279
  145. package/dist/notify-HPTALZDC.js +0 -14
  146. package/dist/openai-compat-R7EKWG6Z.js +0 -12
  147. package/dist/permissions-JUKXMNDH.js +0 -10
  148. package/dist/prompt-UWHSZU4P.js +0 -166
  149. package/dist/quality-ST7PPNFR.js +0 -16
  150. package/dist/repl-QHIZ2JGF.js +0 -3374
  151. package/dist/roadmap-5OBEKROY.js +0 -17
  152. package/dist/server-HCNIP7ZQ.js +0 -57
  153. package/dist/session-5EBECDUP.js +0 -21
  154. package/dist/skills-HBQQTYO4.js +0 -175
  155. package/dist/store-FKUTR7GW.js +0 -25
  156. package/dist/team-7BBBP5YQ.js +0 -385
  157. package/dist/telemetry-6R4EIE6O.js +0 -30
  158. package/dist/test-runner-AUAGIBNM.js +0 -619
  159. package/dist/theme-3SYJ3UQA.js +0 -14
  160. package/dist/upgrade-MZFH7OCN.js +0 -83
  161. package/dist/verify-JUDKTPKZ.js +0 -14
  162. package/dist/web-KS3FUGJA.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(_0x26fcb2,_0x2f5093){const _0x5e693b={_0x2fc82b:0xcd,_0x5630f5:'h5Uj',_0x16c9b2:0x15e,_0x4fc62b:0x179,_0x56d92b:'H@3O',_0x3028ad:0xe9,_0x527a7d:'[5g&',_0x135976:'0&s)',_0x3432b4:0x166,_0x5d67db:'$veQ',_0x877579:0xd2},_0x562837={_0x1a8411:0x96};function _0x432de4(_0x307c4f,_0x203c04){return _0x1d96(_0x203c04-0x16,_0x307c4f);}function _0x514f09(_0xf64293,_0x43bdd4){return _0x1d96(_0x43bdd4-_0x562837._0x1a8411,_0xf64293);}const _0x1e9f76=_0x26fcb2();while(!![]){try{const _0x1faea0=-parseInt(_0x432de4('p(Gu',_0x5e693b._0x2fc82b))/0x1*(parseInt(_0x514f09('Rrw0',0x163))/0x2)+parseInt(_0x514f09(_0x5e693b._0x5630f5,_0x5e693b._0x16c9b2))/0x3+-parseInt(_0x514f09('*i(v',_0x5e693b._0x4fc62b))/0x4*(-parseInt(_0x432de4(_0x5e693b._0x56d92b,_0x5e693b._0x3028ad))/0x5)+-parseInt(_0x514f09(_0x5e693b._0x527a7d,0x16c))/0x6*(parseInt(_0x432de4(_0x5e693b._0x135976,0xf0))/0x7)+-parseInt(_0x432de4('wqyJ',0xda))/0x8+-parseInt(_0x514f09('Pu58',0x176))/0x9*(-parseInt(_0x514f09('!cUx',_0x5e693b._0x3432b4))/0xa)+-parseInt(_0x432de4(_0x5e693b._0x135976,0xdc))/0xb*(-parseInt(_0x432de4(_0x5e693b._0x5d67db,_0x5e693b._0x877579))/0xc);if(_0x1faea0===_0x2f5093)break;else _0x1e9f76['push'](_0x1e9f76['shift']());}catch(_0x5e56a1){_0x1e9f76['push'](_0x1e9f76['shift']());}}}(_0x23c7,0xa8aca));const _0x1a879a=(function(){let _0x25425c=!![];return function(_0x6aef2f,_0x238d1f){const _0xa8969a={_0x56f92d:0x2f9,_0x453316:'byDJ'},_0x4dee8c=_0x25425c?function(){function _0x12b414(_0x317f60,_0x1e7ef4){return _0x1d96(_0x317f60-0x21b,_0x1e7ef4);}if(_0x238d1f){const _0x340c41=_0x238d1f[_0x12b414(_0xa8969a._0x56f92d,_0xa8969a._0x453316)](_0x6aef2f,arguments);return _0x238d1f=null,_0x340c41;}}:function(){};return _0x25425c=![],_0x4dee8c;};}()),_0x592051=_0x1a879a(this,function(){const _0x10d21c={_0x17b7db:0x2ad,_0x23476a:'[5g&',_0x39c347:0x2d9,_0xa4b65f:'qSv^',_0x37de58:0x2f0},_0x141d8b={_0x5cf039:0x3b2};function _0x6b5c44(_0x1c3ee1,_0x4f26d3){return _0x1d96(_0x1c3ee1- -0x376,_0x4f26d3);}function _0x4fc9f4(_0x19a047,_0x390f82){return _0x1d96(_0x390f82- -_0x141d8b._0x5cf039,_0x19a047);}const _0xb92b62={};_0xb92b62['RqCuY']=_0x4fc9f4('pnwm',-0x2d0)+'+)+$';const _0x15448f=_0xb92b62;return _0x592051[_0x4fc9f4('GW2w',-0x2d3)]()[_0x6b5c44(-_0x10d21c._0x17b7db,'Rrw0')](_0x15448f[_0x4fc9f4(_0x10d21c._0x23476a,-_0x10d21c._0x39c347)])[_0x4fc9f4(_0x10d21c._0xa4b65f,-_0x10d21c._0x37de58)]()['construc'+_0x4fc9f4('0&s)',-0x2e4)](_0x592051)['search'](_0x15448f[_0x6b5c44(-0x29b,'$veQ')]);});function _0x23c7(){const _0x2e4658=['DYasW6K9W6u0jmkEW6JdOMO','WPrXbWiDW5qXWRS','iWOUWRxdLW','WRBdPmo0W4NcSGiRxW','WQ/dTx7cRrC','DSocW6uKWR0EbefVkb08wt4','WRtcH8oCW5lcPW','FsVdM8kUcCo6rmkM','jCosq8oKdmk1WP7dOuq5Btu','W5TkcxZdLCkoEZVdVmoaW4RcRG','WORdO8oQrSohbq','ygaFWORdISoYtaq','WPm6W7mUW4FdNmoyW6O','bCo3WRtcJSk1WRu0','W4JcTSomr8oTfCoNWRq','ohxdIa','fmoLWQ0pWOm','WPOyWRGpnSkQwSohWO5FiCoL','WRVdPmoEW6xcUG','WRZdMCkup8kf','WPCJWQXbymoZW5FcHSkuECklW4uY','WP1fjczPEmo9hG','c8o8WQ7cV8kUWPafW48','W5iDvstcTZqQWPiuvI7cGW','eSo6WQ0aWOmgWO1U','WOxdQeK','WRrBiwBdNa','EYRdRmkMlmocCSkY','W4pcJSkKWPjF','WPddP8otD8o3','WRddPmosW5pcPa','WQBdL8onW5NcSq','WPZdGmohW77cQhqLhW','W63dOSkPlrKUeCkH','emklcW','fwlcTMhdHNfJkG','W6VcH8k8j8kDWOpdUIq','WQ9slrGr','W77cUCoMkCkw','WRxdN8k+rSoAWOCfBXtdLCofWPC','CmkmgSk4tq','WOaYWRldQ8kzWQVcTNxdQ8oGr8ox','CSknW53dUh0BudPKFcFdRCkHjW','WQjqpSk8W6m','v8k+lsW6W4tdGZq','W5NcSa/dSfpdI3NcLCoRW4RdRwm','j8oymmkrtSoZWORdRW','W49gW6ftDW','W6XHW7/cKCo2','xdXKWR1a','WQldICowW5e2WRupWPTUqSoZW4mwWQ8','W51BW4WoW7q','umo8WOpcSSok'];_0x23c7=function(){return _0x2e4658;};return _0x23c7();}function _0x1d96(_0x1028a6,_0x3c9911){_0x1028a6=_0x1028a6-0xb3;const _0x4722ed=_0x23c7();let _0x592051=_0x4722ed[_0x1028a6];if(_0x1d96['XDpSea']===undefined){var _0x1a879a=function(_0x2c1e36){const _0x552f04='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x18185c='',_0x7604d2='',_0x5ed201=_0x18185c+_0x1a879a;for(let _0x1ba93a=0x0,_0x4b6fe7,_0x1be777,_0x1b0cad=0x0;_0x1be777=_0x2c1e36['charAt'](_0x1b0cad++);~_0x1be777&&(_0x4b6fe7=_0x1ba93a%0x4?_0x4b6fe7*0x40+_0x1be777:_0x1be777,_0x1ba93a++%0x4)?_0x18185c+=_0x5ed201['charCodeAt'](_0x1b0cad+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x4b6fe7>>(-0x2*_0x1ba93a&0x6)):_0x1ba93a:0x0){_0x1be777=_0x552f04['indexOf'](_0x1be777);}for(let _0x4b4acb=0x0,_0x86c68=_0x18185c['length'];_0x4b4acb<_0x86c68;_0x4b4acb++){_0x7604d2+='%'+('00'+_0x18185c['charCodeAt'](_0x4b4acb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x7604d2);};const _0x2de6b3=function(_0x57a4c3,_0x840ffe){let _0x2746d7=[],_0x48015b=0x0,_0x326e18,_0x71d7fd='';_0x57a4c3=_0x1a879a(_0x57a4c3);let _0x339f3e;for(_0x339f3e=0x0;_0x339f3e<0x100;_0x339f3e++){_0x2746d7[_0x339f3e]=_0x339f3e;}for(_0x339f3e=0x0;_0x339f3e<0x100;_0x339f3e++){_0x48015b=(_0x48015b+_0x2746d7[_0x339f3e]+_0x840ffe['charCodeAt'](_0x339f3e%_0x840ffe['length']))%0x100,_0x326e18=_0x2746d7[_0x339f3e],_0x2746d7[_0x339f3e]=_0x2746d7[_0x48015b],_0x2746d7[_0x48015b]=_0x326e18;}_0x339f3e=0x0,_0x48015b=0x0;for(let _0x467889=0x0;_0x467889<_0x57a4c3['length'];_0x467889++){_0x339f3e=(_0x339f3e+0x1)%0x100,_0x48015b=(_0x48015b+_0x2746d7[_0x339f3e])%0x100,_0x326e18=_0x2746d7[_0x339f3e],_0x2746d7[_0x339f3e]=_0x2746d7[_0x48015b],_0x2746d7[_0x48015b]=_0x326e18,_0x71d7fd+=String['fromCharCode'](_0x57a4c3['charCodeAt'](_0x467889)^_0x2746d7[(_0x2746d7[_0x339f3e]+_0x2746d7[_0x48015b])%0x100]);}return _0x71d7fd;};_0x1d96['ZiMjsE']=_0x2de6b3,_0x1d96['QpnZVg']={},_0x1d96['XDpSea']=!![];}const _0x23c795=_0x4722ed[0x0],_0x1d9629=_0x1028a6+_0x23c795,_0x345cdf=_0x1d96['QpnZVg'][_0x1d9629];if(!_0x345cdf){if(_0x1d96['vYRLVj']===undefined){const _0x2b1a1d=function(_0x5cb6a6){this['rgPupJ']=_0x5cb6a6,this['prSbac']=[0x1,0x0,0x0],this['rHxixm']=function(){return'newState';},this['Pajfgm']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['OesDWw']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2b1a1d['prototype']['zCyeyl']=function(){const _0x296eaf=new RegExp(this['Pajfgm']+this['OesDWw']),_0x8aaf57=_0x296eaf['test'](this['rHxixm']['toString']())?--this['prSbac'][0x1]:--this['prSbac'][0x0];return this['FpAKGS'](_0x8aaf57);},_0x2b1a1d['prototype']['FpAKGS']=function(_0x40aa50){if(!Boolean(~_0x40aa50))return _0x40aa50;return this['LnkrPB'](this['rgPupJ']);},_0x2b1a1d['prototype']['LnkrPB']=function(_0x212aea){for(let _0x45a5bd=0x0,_0x309df4=this['prSbac']['length'];_0x45a5bd<_0x309df4;_0x45a5bd++){this['prSbac']['push'](Math['round'](Math['random']())),_0x309df4=this['prSbac']['length'];}return _0x212aea(this['prSbac'][0x0]);},new _0x2b1a1d(_0x1d96)['zCyeyl'](),_0x1d96['vYRLVj']=!![];}_0x592051=_0x1d96['ZiMjsE'](_0x592051,_0x3c9911),_0x1d96['QpnZVg'][_0x1d9629]=_0x592051;}else _0x592051=_0x345cdf;return _0x592051;}_0x592051();function escapeHtml(_0x5b4e2b){const _0x3b78ba={_0x549b0b:'Y($y',_0x3bb30c:'erOo',_0x2a1e84:0x42f,_0x28c7fd:0x434,_0x5fd02b:'doYc',_0x437431:'][vA',_0xf09a4c:0x42d};function _0x54406d(_0x1d46f4,_0x3c5ed6){return _0x1d96(_0x3c5ed6-0x358,_0x1d46f4);}const _0x30cb67={};_0x30cb67['iaXCS']=_0x12e04c(0x406,_0x3b78ba._0x549b0b);function _0x12e04c(_0xb07d27,_0x14346e){return _0x1d96(_0xb07d27-0x325,_0x14346e);}const _0x386971=_0x30cb67,_0x1fd278=document[_0x54406d(_0x3b78ba._0x3bb30c,_0x3b78ba._0x2a1e84)+_0x54406d(_0x3b78ba._0x3bb30c,0x427)](_0x386971[_0x54406d('Rrw0',_0x3b78ba._0x28c7fd)]);return _0x1fd278[_0x12e04c(0x3db,_0x3b78ba._0x5fd02b)+'ent']=_0x5b4e2b,_0x1fd278[_0x54406d(_0x3b78ba._0x437431,_0x3b78ba._0xf09a4c)+'L'];}function relativeTime(_0x5b3589){const _0x6e17fe={_0x536f0b:'nsDD',_0x32792b:'2guS',_0x56795b:0x25b,_0x38018c:'p(Gu',_0x558d52:'][vA',_0x5d6650:'6o%#',_0x429f27:0x2a6,_0x74b5cc:'aX4[',_0x2251ba:0x288,_0x25bca7:'byDJ',_0x364af4:'*)*7',_0x2dcc65:0x2a7,_0x18f82e:0x28e,_0x3ded75:'!cUx'},_0x27d34e={_0x2a265d:0x1d5},_0x1cbc32={_0x2ab4c5:0x1a1},_0x58583c={};_0x58583c[_0x5bad3b(_0x6e17fe._0x536f0b,0x25f)]=function(_0x3f8ec9,_0x5b0b34){return _0x3f8ec9<_0x5b0b34;},_0x58583c['yoyXz']=_0x5bad3b('*)*7',0x275),_0x58583c[_0x5bad3b(_0x6e17fe._0x32792b,_0x6e17fe._0x56795b)]=function(_0x575dbf,_0x534c19){return _0x575dbf<_0x534c19;};const _0x518f1b=_0x58583c;function _0x5bad3b(_0x1a5864,_0x5b69cd){return _0x1d96(_0x5b69cd-_0x1cbc32._0x2ab4c5,_0x1a5864);}if(!_0x5b3589)return'-';const _0x3a16c6=Date[_0x2ca04f(0x2ad,_0x6e17fe._0x38018c)]()-new Date(_0x5b3589)[_0x2ca04f(0x2a1,_0x6e17fe._0x558d52)]();function _0x2ca04f(_0x3f1613,_0x146932){return _0x1d96(_0x3f1613-_0x27d34e._0x2a265d,_0x146932);}return _0x518f1b[_0x2ca04f(0x298,_0x6e17fe._0x5d6650)](_0x3a16c6,0x0)?_0x518f1b[_0x2ca04f(_0x6e17fe._0x429f27,'qSv^')]:_0x3a16c6<0xea60?Math[_0x5bad3b(_0x6e17fe._0x74b5cc,_0x6e17fe._0x2251ba)](_0x3a16c6/0x3e8)+_0x5bad3b(_0x6e17fe._0x25bca7,0x266):_0x518f1b[_0x5bad3b(_0x6e17fe._0x364af4,0x285)](_0x3a16c6,0x36ee80)?Math[_0x2ca04f(_0x6e17fe._0x2dcc65,'*i(v')](_0x3a16c6/0xea60)+'m\x20ago':_0x3a16c6<0x5265c00?Math['floor'](_0x3a16c6/0x36ee80)+_0x5bad3b('S*uF',0x256):Math[_0x2ca04f(_0x6e17fe._0x18f82e,_0x6e17fe._0x3ded75)](_0x3a16c6/0x5265c00)+'d\x20ago';}function formatDuration(_0x3b21a5){const _0x163ece={_0x23379a:'eE#y',_0x2359e6:0x28c,_0x24f509:'R(Ae',_0x388d38:0x28e,_0x4b85e8:'qSv^',_0x35b165:0x26c,_0x52536d:0x112},_0x4808a1={_0x4ba0b7:0x349};function _0x4fd287(_0x294663,_0x4b1c17){return _0x1d96(_0x4b1c17- -_0x4808a1._0x4ba0b7,_0x294663);}const _0x1db3cb={};_0x1db3cb[_0x4fd287(_0x163ece._0x23379a,-_0x163ece._0x2359e6)]=function(_0x286912,_0x2155f7){return _0x286912/_0x2155f7;},_0x1db3cb['xRBXx']=function(_0x4c42c6,_0x22908f){return _0x4c42c6<_0x22908f;},_0x1db3cb[_0x4fd287(_0x163ece._0x24f509,-_0x163ece._0x388d38)]=function(_0x444a32,_0x3211d5){return _0x444a32%_0x3211d5;};function _0x50aa72(_0x56fa9c,_0x3336b8){return _0x1d96(_0x3336b8- -0x1d3,_0x56fa9c);}const _0x6432ce=_0x1db3cb;if(!_0x3b21a5||_0x3b21a5<=0x0)return'-';const _0x24a14d=Math[_0x4fd287(_0x163ece._0x4b85e8,-_0x163ece._0x35b165)](_0x6432ce[_0x4fd287('S%@^',-0x264)](_0x3b21a5,0x3e8));if(_0x6432ce['xRBXx'](_0x24a14d,0x3c))return _0x24a14d+'s';const _0x19a602=Math['floor'](_0x24a14d/0x3c),_0x130f0f=_0x6432ce[_0x50aa72('AN@v',-_0x163ece._0x52536d)](_0x24a14d,0x3c);return _0x19a602+'m\x20'+_0x130f0f+'s';}