skillvault-publisher 0.1.9 → 0.1.10
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.
- package/dist/commands/investigate.d.ts.map +1 -1
- package/dist/commands/investigate.js +179 -54
- package/dist/commands/investigate.js.map +1 -1
- package/dist/index.js +180 -57
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../src/commands/investigate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../src/commands/investigate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmcpC,eAAO,MAAM,kBAAkB,SAyK5B,CAAC"}
|
|
@@ -145,92 +145,197 @@ function buildHtmlReport(report, auditEvents, metadata) {
|
|
|
145
145
|
<td>${new Date(e.created_at).toLocaleString()}</td>
|
|
146
146
|
</tr>`)
|
|
147
147
|
.join('\n');
|
|
148
|
+
const hasHighConfidence = report.heartbeat_matches.some((m) => m.confidence >= 0.9);
|
|
149
|
+
const alertBanner = hasHighConfidence
|
|
150
|
+
? `<div class="alert-banner"><div class="alert-icon">!</div><div><strong>High-confidence heartbeat match detected.</strong> Forensic heartbeat values in the leaked content match a specific decryption event with ≥99% confidence.</div></div>`
|
|
151
|
+
: '';
|
|
148
152
|
return `<!DOCTYPE html>
|
|
149
153
|
<html lang="en">
|
|
150
154
|
<head>
|
|
151
155
|
<meta charset="UTF-8">
|
|
152
156
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
153
|
-
<title>
|
|
157
|
+
<title>Leak Investigation Report \u2014 ${escapeHtml(metadata.skill_name)} | SkillVault</title>
|
|
154
158
|
<style>
|
|
155
159
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
156
160
|
body {
|
|
157
161
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
158
|
-
background: #
|
|
162
|
+
background: #0a0a0a;
|
|
159
163
|
color: #e5e7eb;
|
|
160
|
-
padding: 2rem;
|
|
161
164
|
line-height: 1.6;
|
|
162
165
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
.container { max-width: 960px; margin: 0 auto; padding: 32px 24px; }
|
|
167
|
+
.report-header {
|
|
168
|
+
background: linear-gradient(135deg, #1e1b4b, #0f172a);
|
|
169
|
+
border-radius: 12px;
|
|
170
|
+
padding: 40px 32px;
|
|
171
|
+
margin-bottom: 32px;
|
|
172
|
+
border: 1px solid #1e293b;
|
|
173
|
+
position: relative;
|
|
174
|
+
overflow: hidden;
|
|
175
|
+
}
|
|
176
|
+
.report-header::before {
|
|
177
|
+
content: '';
|
|
178
|
+
position: absolute;
|
|
179
|
+
top: -50%;
|
|
180
|
+
right: -10%;
|
|
181
|
+
width: 300px;
|
|
182
|
+
height: 300px;
|
|
183
|
+
background: radial-gradient(circle, rgba(99,102,241,0.08) 0%, transparent 70%);
|
|
184
|
+
pointer-events: none;
|
|
185
|
+
}
|
|
186
|
+
.brand {
|
|
187
|
+
display: flex;
|
|
188
|
+
align-items: center;
|
|
189
|
+
gap: 12px;
|
|
190
|
+
margin-bottom: 20px;
|
|
169
191
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
192
|
+
.brand-mark {
|
|
193
|
+
width: 36px;
|
|
194
|
+
height: 36px;
|
|
195
|
+
background: linear-gradient(135deg, #6366f1, #4f46e5);
|
|
196
|
+
border-radius: 8px;
|
|
197
|
+
display: flex;
|
|
198
|
+
align-items: center;
|
|
199
|
+
justify-content: center;
|
|
200
|
+
font-weight: 800;
|
|
201
|
+
font-size: 16px;
|
|
202
|
+
color: #fff;
|
|
203
|
+
letter-spacing: -1px;
|
|
204
|
+
box-shadow: 0 0 20px rgba(99,102,241,0.3);
|
|
175
205
|
}
|
|
176
|
-
.
|
|
177
|
-
|
|
206
|
+
.brand-name { font-size: 18px; font-weight: 700; color: #e2e8f0; letter-spacing: -0.3px; }
|
|
207
|
+
.report-header h1 { font-size: 26px; color: #fff; margin-bottom: 4px; }
|
|
208
|
+
.report-header .subtitle { color: #94a3b8; font-size: 14px; }
|
|
209
|
+
.report-header .report-id { position: absolute; top: 20px; right: 24px; color: #475569; font-size: 11px; font-family: monospace; }
|
|
210
|
+
.alert-banner {
|
|
211
|
+
background: #450a0a;
|
|
212
|
+
border: 1px solid #dc2626;
|
|
178
213
|
border-radius: 8px;
|
|
179
|
-
padding:
|
|
180
|
-
margin:
|
|
214
|
+
padding: 16px 20px;
|
|
215
|
+
margin-bottom: 24px;
|
|
216
|
+
display: flex;
|
|
217
|
+
align-items: flex-start;
|
|
218
|
+
gap: 12px;
|
|
219
|
+
color: #fca5a5;
|
|
220
|
+
font-size: 14px;
|
|
221
|
+
line-height: 1.5;
|
|
222
|
+
}
|
|
223
|
+
.alert-banner strong { color: #fff; }
|
|
224
|
+
.alert-icon {
|
|
225
|
+
width: 24px;
|
|
226
|
+
height: 24px;
|
|
227
|
+
background: #dc2626;
|
|
228
|
+
border-radius: 50%;
|
|
229
|
+
display: flex;
|
|
230
|
+
align-items: center;
|
|
231
|
+
justify-content: center;
|
|
232
|
+
font-weight: 800;
|
|
233
|
+
font-size: 14px;
|
|
234
|
+
color: #fff;
|
|
235
|
+
flex-shrink: 0;
|
|
236
|
+
margin-top: 1px;
|
|
237
|
+
}
|
|
238
|
+
.section {
|
|
239
|
+
background: #111827;
|
|
240
|
+
border-radius: 12px;
|
|
241
|
+
padding: 24px;
|
|
242
|
+
margin-bottom: 24px;
|
|
243
|
+
border: 1px solid #1e293b;
|
|
244
|
+
}
|
|
245
|
+
.section h2 {
|
|
246
|
+
font-size: 16px;
|
|
247
|
+
color: #f1f5f9;
|
|
248
|
+
margin-bottom: 4px;
|
|
249
|
+
}
|
|
250
|
+
.section .section-desc {
|
|
251
|
+
color: #64748b;
|
|
252
|
+
font-size: 13px;
|
|
253
|
+
margin-bottom: 16px;
|
|
254
|
+
}
|
|
255
|
+
.meta-grid {
|
|
181
256
|
display: grid;
|
|
182
|
-
grid-template-columns: repeat(auto-fit, minmax(
|
|
183
|
-
gap:
|
|
257
|
+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
258
|
+
gap: 12px;
|
|
184
259
|
}
|
|
185
|
-
.
|
|
186
|
-
|
|
260
|
+
.meta-item {
|
|
261
|
+
background: #0f172a;
|
|
262
|
+
padding: 14px 16px;
|
|
263
|
+
border-radius: 8px;
|
|
264
|
+
border: 1px solid #1e293b;
|
|
265
|
+
}
|
|
266
|
+
.meta-item .label { font-size: 11px; color: #64748b; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
267
|
+
.meta-item .value { font-size: 20px; color: #fff; font-weight: 700; margin-top: 2px; }
|
|
268
|
+
.meta-item .value.sm { font-size: 13px; font-weight: 500; word-break: break-all; }
|
|
187
269
|
table {
|
|
188
270
|
width: 100%;
|
|
189
271
|
border-collapse: collapse;
|
|
190
|
-
|
|
191
|
-
font-size: 0.875rem;
|
|
272
|
+
font-size: 13px;
|
|
192
273
|
}
|
|
193
274
|
th {
|
|
194
275
|
text-align: left;
|
|
195
|
-
padding:
|
|
196
|
-
|
|
197
|
-
|
|
276
|
+
padding: 8px 12px;
|
|
277
|
+
color: #64748b;
|
|
278
|
+
font-size: 11px;
|
|
279
|
+
text-transform: uppercase;
|
|
280
|
+
letter-spacing: 0.5px;
|
|
281
|
+
border-bottom: 1px solid #1e293b;
|
|
198
282
|
font-weight: 600;
|
|
199
|
-
border-bottom: 1px solid #374151;
|
|
200
|
-
}
|
|
201
|
-
td {
|
|
202
|
-
padding: 0.5rem 0.75rem;
|
|
203
|
-
border-bottom: 1px solid #1f2937;
|
|
204
283
|
}
|
|
205
|
-
|
|
284
|
+
td { padding: 10px 12px; border-bottom: 1px solid rgba(30,41,59,0.5); }
|
|
285
|
+
tr:hover td { background: rgba(30,41,59,0.3); }
|
|
286
|
+
code { background: #0f172a; padding: 2px 6px; border-radius: 3px; font-size: 12px; color: #94a3b8; }
|
|
206
287
|
.badge {
|
|
207
288
|
display: inline-block;
|
|
208
|
-
padding:
|
|
289
|
+
padding: 2px 10px;
|
|
209
290
|
border-radius: 9999px;
|
|
210
|
-
font-size:
|
|
291
|
+
font-size: 11px;
|
|
211
292
|
font-weight: 600;
|
|
212
293
|
color: #fff;
|
|
213
294
|
}
|
|
214
|
-
.empty { color: #
|
|
215
|
-
footer {
|
|
216
|
-
margin-top:
|
|
217
|
-
padding
|
|
218
|
-
border-top: 1px solid #
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
295
|
+
.empty { color: #475569; font-style: italic; padding: 1rem 0; }
|
|
296
|
+
.report-footer {
|
|
297
|
+
margin-top: 32px;
|
|
298
|
+
padding: 20px 0;
|
|
299
|
+
border-top: 1px solid #1e293b;
|
|
300
|
+
display: flex;
|
|
301
|
+
align-items: center;
|
|
302
|
+
justify-content: space-between;
|
|
303
|
+
color: #475569;
|
|
304
|
+
font-size: 11px;
|
|
222
305
|
}
|
|
306
|
+
.report-footer .brand-sm { display: flex; align-items: center; gap: 6px; }
|
|
307
|
+
.report-footer .brand-sm .mark {
|
|
308
|
+
width: 16px; height: 16px; background: #4f46e5; border-radius: 3px;
|
|
309
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
310
|
+
font-size: 8px; font-weight: 800; color: #fff;
|
|
311
|
+
}
|
|
312
|
+
.confidential { color: #374151; font-size: 10px; text-align: center; margin-top: 8px; }
|
|
223
313
|
</style>
|
|
224
314
|
</head>
|
|
225
315
|
<body>
|
|
316
|
+
<div class="container">
|
|
317
|
+
|
|
318
|
+
<div class="report-header">
|
|
319
|
+
<div class="brand"><div class="brand-mark">SV</div><div class="brand-name">SkillVault</div></div>
|
|
320
|
+
<p style="color:#818cf8;font-size:12px;letter-spacing:0.5px;margin-bottom:16px;">Built by you. Protected by us.</p>
|
|
321
|
+
<h1>Leak Investigation Report</h1>
|
|
322
|
+
<p class="subtitle">skill/${escapeHtml(metadata.skill_name)} \u2014 ${new Date(metadata.investigated_at).toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}</p>
|
|
323
|
+
<div class="report-id">Report ${Date.now().toString(36).toUpperCase()}</div>
|
|
324
|
+
</div>
|
|
226
325
|
|
|
227
|
-
|
|
326
|
+
${alertBanner}
|
|
228
327
|
|
|
229
|
-
<div class="
|
|
230
|
-
<
|
|
231
|
-
<div
|
|
232
|
-
<div
|
|
233
|
-
|
|
328
|
+
<div class="section">
|
|
329
|
+
<h2>Investigation Summary</h2>
|
|
330
|
+
<div class="section-desc">Overview of the investigation parameters and findings.</div>
|
|
331
|
+
<div class="meta-grid">
|
|
332
|
+
<div class="meta-item"><div class="label">Skill</div><div class="value">${escapeHtml(metadata.skill_name)}</div></div>
|
|
333
|
+
<div class="meta-item"><div class="label">Total Licensees</div><div class="value">${report.total_licensees}</div></div>
|
|
334
|
+
<div class="meta-item"><div class="label">Heartbeat Matches</div><div class="value" style="color:${report.heartbeat_matches.length > 0 ? '#22c55e' : '#64748b'}">${report.heartbeat_matches.length}</div></div>
|
|
335
|
+
<div class="meta-item"><div class="label">Suspects Flagged</div><div class="value" style="color:${report.suspects.filter((s) => s.risk_level !== 'low').length > 0 ? '#f97316' : '#64748b'}">${report.suspects.filter((s) => s.risk_level !== 'low').length}</div></div>
|
|
336
|
+
<div class="meta-item"><div class="label">Source</div><div class="value sm">${escapeHtml(metadata.source)}</div></div>
|
|
337
|
+
<div class="meta-item"><div class="label">Investigated</div><div class="value sm">${new Date(metadata.investigated_at).toLocaleString()}</div></div>
|
|
338
|
+
</div>
|
|
234
339
|
</div>
|
|
235
340
|
|
|
236
341
|
<h2>Heartbeat Matches</h2>
|
|
@@ -257,7 +362,12 @@ ${auditEvents.length > 0
|
|
|
257
362
|
</table>`
|
|
258
363
|
: '<p class="empty">No audit events found.</p>'}
|
|
259
364
|
|
|
260
|
-
<
|
|
365
|
+
<div class="report-footer">
|
|
366
|
+
<div class="brand-sm"><span class="mark">SV</span> SkillVault</div>
|
|
367
|
+
<div>Generated by SkillVault CLI v${metadata.cli_version} \u2014 ${new Date(metadata.investigated_at).toISOString()}</div>
|
|
368
|
+
<div><a href="https://getskillvault.com" style="color:#4f46e5;text-decoration:none;">getskillvault.com</a></div>
|
|
369
|
+
</div>
|
|
370
|
+
<p class="confidential">This report is confidential and intended for the publisher\u2019s internal investigation use only.</p>
|
|
261
371
|
|
|
262
372
|
</body>
|
|
263
373
|
</html>`;
|
|
@@ -336,25 +446,40 @@ export const investigateCommand = new Command('investigate')
|
|
|
336
446
|
// Fetch customer list
|
|
337
447
|
const customersData = await sessionFetch(ctx, '/customers');
|
|
338
448
|
const metadata = {
|
|
449
|
+
generated_by: 'SkillVault CLI',
|
|
450
|
+
product: 'SkillVault — Encrypted Skill Distribution Platform',
|
|
451
|
+
website: 'https://getskillvault.com',
|
|
452
|
+
cli_version: '0.1.9',
|
|
339
453
|
skill_name: skill.name,
|
|
340
454
|
skill_id: skill.id,
|
|
341
455
|
publisher_id: ctx.publisherId,
|
|
342
456
|
investigated_at: report.created_at,
|
|
343
|
-
cli_version: '0.1.9',
|
|
344
457
|
source: sourceLabel,
|
|
458
|
+
notice: 'This report was generated by SkillVault and is confidential.',
|
|
345
459
|
};
|
|
346
460
|
// Write metadata.json
|
|
347
461
|
writeFileSync(join(dir, 'metadata.json'), JSON.stringify(metadata, null, 2) + '\n');
|
|
348
462
|
// Write summary.json
|
|
349
|
-
|
|
463
|
+
const summaryWithBranding = {
|
|
464
|
+
_generated_by: 'SkillVault (https://getskillvault.com)',
|
|
465
|
+
...report,
|
|
466
|
+
};
|
|
467
|
+
writeFileSync(join(dir, 'summary.json'), JSON.stringify(summaryWithBranding, null, 2) + '\n');
|
|
350
468
|
// Write evidence/leaked-content.txt
|
|
351
469
|
writeFileSync(join(evidenceDir, 'leaked-content.txt'), leakedContent);
|
|
352
470
|
// Write evidence/audit-trail.json
|
|
353
|
-
|
|
471
|
+
const auditWithBranding = {
|
|
472
|
+
_generated_by: 'SkillVault Leak Investigation',
|
|
473
|
+
_investigated_at: report.created_at,
|
|
474
|
+
_skill: skill.name,
|
|
475
|
+
events: auditData.events,
|
|
476
|
+
};
|
|
477
|
+
writeFileSync(join(evidenceDir, 'audit-trail.json'), JSON.stringify(auditWithBranding, null, 2) + '\n');
|
|
354
478
|
// Write suspects.csv
|
|
479
|
+
const csvComment = '# SkillVault Leak Investigation Report — https://getskillvault.com\n# Generated: ' + report.created_at + '\n';
|
|
355
480
|
const csvHeader = 'licensee_id,agent_id,risk_score,risk_level,anomaly_events,strike_count,composite_score';
|
|
356
481
|
const csvRows = report.suspects.map((s) => `${s.licensee_id},${s.agent_id},${s.risk_score},${s.risk_level},${s.anomaly_events},${s.strike_count},${s.composite_score}`);
|
|
357
|
-
writeFileSync(join(dir, 'suspects.csv'), [csvHeader, ...csvRows].join('\n') + '\n');
|
|
482
|
+
writeFileSync(join(dir, 'suspects.csv'), csvComment + [csvHeader, ...csvRows].join('\n') + '\n');
|
|
358
483
|
// Write report.html
|
|
359
484
|
const html = buildHtmlReport(report, auditData.events, metadata);
|
|
360
485
|
writeFileSync(join(dir, 'report.html'), html);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"investigate.js","sourceRoot":"","sources":["../../src/commands/investigate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"investigate.js","sourceRoot":"","sources":["../../src/commands/investigate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA8C7D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAEpC,SAAS,SAAS,CAAC,KAAa;IAC9B,QAAQ,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5B,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,MAAM,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB;YACE,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAClC,OAAO,KAAK,CAAC,GAAG,CAAC;AACnB,CAAC;AAED,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS;IAC/B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG;aACP,OAAO,CAAC,YAAY,EAAE,2BAA2B,CAAC;aAClD,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,MAA2B;IACjD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAEpG,oBAAoB;IACpB,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACvD,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAE9C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC3F,IAAI,EAAE,CAAC,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;gBACnD,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC;qBACxD,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC;IACtJ,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG;YACV,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC;YAC1C,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC9B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;SAC7B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,MAA2B,EAC3B,WAAyB,EACzB,QAAgC;IAEhC,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB;SAC3C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACvD,MAAM,UAAU,GACd,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,WAAW,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC;aAC/D,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO;cACC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC;cACvB,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oDACE,UAAU,KAAK,OAAO;cAC5D,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE;cAC1C,UAAU,CAAC,WAAW,IAAI,GAAG,CAAC;YAChC,CAAC;IACT,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,UAAU,GACd,CAAC,CAAC,UAAU,KAAK,UAAU;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO;gBACxB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO;oBACxB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,SAAS,CAAC;QACpB,OAAO;cACC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;cACzB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;oDACe,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;cAC7E,CAAC,CAAC,cAAc;cAChB,CAAC,CAAC,YAAY;cACd,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9B,CAAC;IACT,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,SAAS,GAAG,WAAW;SAC1B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC;cACC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;cACxB,UAAU,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC;cAC/B,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;cAC9D,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE;YACzC,CACP;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IACpG,MAAM,WAAW,GAAG,iBAAiB;QACnC,CAAC,CAAC,iPAAiP;QACnP,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;0CAKiC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAqK3C,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;kCACzK,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;;;EAGrE,WAAW;;;;;;8EAMiE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;wFACrB,MAAM,CAAC,eAAe;uGACP,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,iBAAiB,CAAC,MAAM;sGAChG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,MAAM;kFAC/L,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;wFACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE;;;;;EAMzI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;QACjC,CAAC,CAAC;;WAEK,aAAa;SACf;QACL,CAAC,CAAC,kDACN;;;EAIE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC;;WAEK,WAAW;SACb;QACL,CAAC,CAAC,8CACN;;;EAIE,WAAW,CAAC,MAAM,GAAG,CAAC;QACpB,CAAC,CAAC;;WAEK,SAAS;SACX;QACL,CAAC,CAAC,6CACN;;;;sCAIsC,QAAQ,CAAC,WAAW,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE;;;;;;QAM7G,CAAC;AACT,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;KACzD,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,cAAc,EAAE,kCAAkC,CAAC;KAC5D,MAAM,CAAC,aAAa,EAAE,0DAA0D,CAAC;KACjF,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;KAChE,MAAM,CAAC,gBAAgB,EAAE,yDAAyD,CAAC;KACnF,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EACH,SAAiB,EACjB,OAAyE,EACzE,EAAE;IACF,IAAI,CAAC;QACH,UAAU;QACV,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;QAE7B,wBAAwB;QACxB,IAAI,aAAqB,CAAC;QAC1B,IAAI,WAAmB,CAAC;QAExB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,MAAM,KAAK,CAAC,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,CACtE,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAC5B,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CACzE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,YAAY,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,CACvF,CAAC;QAEF,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,YAAY,CAA2B,GAAG,EAAE,SAAS,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CACxD,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAC,UAAU,SAAS,sEAAsE,CAAC,CACrG,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,GAAG,EACH,eAAe,GAAG,CAAC,WAAW,cAAc,EAC5C;YACE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE;SAC5D,CACF,CAAC;QAEF,eAAe;QACf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,iBAAiB;QACjB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC1C,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5C,mCAAmC;YACnC,MAAM,SAAS,GAAG,MAAM,YAAY,CAClC,GAAG,EACH,kCAAkC,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAC5E,CAAC;YAEF,sBAAsB;YACtB,MAAM,aAAa,GAAG,MAAM,YAAY,CAA2B,GAAG,EAAE,YAAY,CAAC,CAAC;YAEtF,MAAM,QAAQ,GAAG;gBACf,YAAY,EAAE,gBAAgB;gBAC9B,OAAO,EAAE,oDAAoD;gBAC7D,OAAO,EAAE,2BAA2B;gBACpC,WAAW,EAAE,OAAO;gBACpB,UAAU,EAAE,KAAK,CAAC,IAAI;gBACtB,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAClB,YAAY,EAAE,GAAG,CAAC,WAAW;gBAC7B,eAAe,EAAE,MAAM,CAAC,UAAU;gBAClC,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,8DAA8D;aACvE,CAAC;YAEF,sBAAsB;YACtB,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAEpF,qBAAqB;YACrB,MAAM,mBAAmB,GAAG;gBAC1B,aAAa,EAAE,wCAAwC;gBACvD,GAAG,MAAM;aACV,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAE9F,oCAAoC;YACpC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAAE,aAAa,CAAC,CAAC;YAEtE,kCAAkC;YAClC,MAAM,iBAAiB,GAAG;gBACxB,aAAa,EAAE,+BAA+B;gBAC9C,gBAAgB,EAAE,MAAM,CAAC,UAAU;gBACnC,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC;YACF,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAClD,CAAC;YAEF,qBAAqB;YACrB,MAAM,UAAU,GAAG,mFAAmF,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;YAClI,MAAM,SAAS,GACb,wFAAwF,CAAC;YAC3F,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CACjC,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,eAAe,EAAE,CAC9H,CAAC;YACF,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,UAAU,GAAG,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAEjG,oBAAoB;YACpB,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACjE,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;YAE9C,MAAM,SAAS,GAAG,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC;gBACtC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,SAAS,CAAC,CACrC,CAAC;YACF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3652,92 +3652,195 @@ function buildHtmlReport(report, auditEvents, metadata) {
|
|
|
3652
3652
|
<td>${escapeHtml(e.agent_id ? e.agent_id.slice(0, 16) + "..." : "-")}</td>
|
|
3653
3653
|
<td>${new Date(e.created_at).toLocaleString()}</td>
|
|
3654
3654
|
</tr>`).join("\n");
|
|
3655
|
+
const hasHighConfidence = report.heartbeat_matches.some((m) => m.confidence >= 0.9);
|
|
3656
|
+
const alertBanner = hasHighConfidence ? `<div class="alert-banner"><div class="alert-icon">!</div><div><strong>High-confidence heartbeat match detected.</strong> Forensic heartbeat values in the leaked content match a specific decryption event with ≥99% confidence.</div></div>` : "";
|
|
3655
3657
|
return `<!DOCTYPE html>
|
|
3656
3658
|
<html lang="en">
|
|
3657
3659
|
<head>
|
|
3658
3660
|
<meta charset="UTF-8">
|
|
3659
3661
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
3660
|
-
<title>
|
|
3662
|
+
<title>Leak Investigation Report \u2014 ${escapeHtml(metadata.skill_name)} | SkillVault</title>
|
|
3661
3663
|
<style>
|
|
3662
3664
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
3663
3665
|
body {
|
|
3664
3666
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
3665
|
-
background: #
|
|
3667
|
+
background: #0a0a0a;
|
|
3666
3668
|
color: #e5e7eb;
|
|
3667
|
-
padding: 2rem;
|
|
3668
3669
|
line-height: 1.6;
|
|
3669
3670
|
}
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3684
|
-
|
|
3671
|
+
.container { max-width: 960px; margin: 0 auto; padding: 32px 24px; }
|
|
3672
|
+
.report-header {
|
|
3673
|
+
background: linear-gradient(135deg, #1e1b4b, #0f172a);
|
|
3674
|
+
border-radius: 12px;
|
|
3675
|
+
padding: 40px 32px;
|
|
3676
|
+
margin-bottom: 32px;
|
|
3677
|
+
border: 1px solid #1e293b;
|
|
3678
|
+
position: relative;
|
|
3679
|
+
overflow: hidden;
|
|
3680
|
+
}
|
|
3681
|
+
.report-header::before {
|
|
3682
|
+
content: '';
|
|
3683
|
+
position: absolute;
|
|
3684
|
+
top: -50%;
|
|
3685
|
+
right: -10%;
|
|
3686
|
+
width: 300px;
|
|
3687
|
+
height: 300px;
|
|
3688
|
+
background: radial-gradient(circle, rgba(99,102,241,0.08) 0%, transparent 70%);
|
|
3689
|
+
pointer-events: none;
|
|
3690
|
+
}
|
|
3691
|
+
.brand {
|
|
3692
|
+
display: flex;
|
|
3693
|
+
align-items: center;
|
|
3694
|
+
gap: 12px;
|
|
3695
|
+
margin-bottom: 20px;
|
|
3696
|
+
}
|
|
3697
|
+
.brand-mark {
|
|
3698
|
+
width: 36px;
|
|
3699
|
+
height: 36px;
|
|
3700
|
+
background: linear-gradient(135deg, #6366f1, #4f46e5);
|
|
3701
|
+
border-radius: 8px;
|
|
3702
|
+
display: flex;
|
|
3703
|
+
align-items: center;
|
|
3704
|
+
justify-content: center;
|
|
3705
|
+
font-weight: 800;
|
|
3706
|
+
font-size: 16px;
|
|
3707
|
+
color: #fff;
|
|
3708
|
+
letter-spacing: -1px;
|
|
3709
|
+
box-shadow: 0 0 20px rgba(99,102,241,0.3);
|
|
3710
|
+
}
|
|
3711
|
+
.brand-name { font-size: 18px; font-weight: 700; color: #e2e8f0; letter-spacing: -0.3px; }
|
|
3712
|
+
.report-header h1 { font-size: 26px; color: #fff; margin-bottom: 4px; }
|
|
3713
|
+
.report-header .subtitle { color: #94a3b8; font-size: 14px; }
|
|
3714
|
+
.report-header .report-id { position: absolute; top: 20px; right: 24px; color: #475569; font-size: 11px; font-family: monospace; }
|
|
3715
|
+
.alert-banner {
|
|
3716
|
+
background: #450a0a;
|
|
3717
|
+
border: 1px solid #dc2626;
|
|
3685
3718
|
border-radius: 8px;
|
|
3686
|
-
padding:
|
|
3687
|
-
margin:
|
|
3719
|
+
padding: 16px 20px;
|
|
3720
|
+
margin-bottom: 24px;
|
|
3721
|
+
display: flex;
|
|
3722
|
+
align-items: flex-start;
|
|
3723
|
+
gap: 12px;
|
|
3724
|
+
color: #fca5a5;
|
|
3725
|
+
font-size: 14px;
|
|
3726
|
+
line-height: 1.5;
|
|
3727
|
+
}
|
|
3728
|
+
.alert-banner strong { color: #fff; }
|
|
3729
|
+
.alert-icon {
|
|
3730
|
+
width: 24px;
|
|
3731
|
+
height: 24px;
|
|
3732
|
+
background: #dc2626;
|
|
3733
|
+
border-radius: 50%;
|
|
3734
|
+
display: flex;
|
|
3735
|
+
align-items: center;
|
|
3736
|
+
justify-content: center;
|
|
3737
|
+
font-weight: 800;
|
|
3738
|
+
font-size: 14px;
|
|
3739
|
+
color: #fff;
|
|
3740
|
+
flex-shrink: 0;
|
|
3741
|
+
margin-top: 1px;
|
|
3742
|
+
}
|
|
3743
|
+
.section {
|
|
3744
|
+
background: #111827;
|
|
3745
|
+
border-radius: 12px;
|
|
3746
|
+
padding: 24px;
|
|
3747
|
+
margin-bottom: 24px;
|
|
3748
|
+
border: 1px solid #1e293b;
|
|
3749
|
+
}
|
|
3750
|
+
.section h2 {
|
|
3751
|
+
font-size: 16px;
|
|
3752
|
+
color: #f1f5f9;
|
|
3753
|
+
margin-bottom: 4px;
|
|
3754
|
+
}
|
|
3755
|
+
.section .section-desc {
|
|
3756
|
+
color: #64748b;
|
|
3757
|
+
font-size: 13px;
|
|
3758
|
+
margin-bottom: 16px;
|
|
3759
|
+
}
|
|
3760
|
+
.meta-grid {
|
|
3688
3761
|
display: grid;
|
|
3689
|
-
grid-template-columns: repeat(auto-fit, minmax(
|
|
3690
|
-
gap:
|
|
3762
|
+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
3763
|
+
gap: 12px;
|
|
3764
|
+
}
|
|
3765
|
+
.meta-item {
|
|
3766
|
+
background: #0f172a;
|
|
3767
|
+
padding: 14px 16px;
|
|
3768
|
+
border-radius: 8px;
|
|
3769
|
+
border: 1px solid #1e293b;
|
|
3691
3770
|
}
|
|
3692
|
-
.
|
|
3693
|
-
.
|
|
3771
|
+
.meta-item .label { font-size: 11px; color: #64748b; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
3772
|
+
.meta-item .value { font-size: 20px; color: #fff; font-weight: 700; margin-top: 2px; }
|
|
3773
|
+
.meta-item .value.sm { font-size: 13px; font-weight: 500; word-break: break-all; }
|
|
3694
3774
|
table {
|
|
3695
3775
|
width: 100%;
|
|
3696
3776
|
border-collapse: collapse;
|
|
3697
|
-
|
|
3698
|
-
font-size: 0.875rem;
|
|
3777
|
+
font-size: 13px;
|
|
3699
3778
|
}
|
|
3700
3779
|
th {
|
|
3701
3780
|
text-align: left;
|
|
3702
|
-
padding:
|
|
3703
|
-
|
|
3704
|
-
|
|
3781
|
+
padding: 8px 12px;
|
|
3782
|
+
color: #64748b;
|
|
3783
|
+
font-size: 11px;
|
|
3784
|
+
text-transform: uppercase;
|
|
3785
|
+
letter-spacing: 0.5px;
|
|
3786
|
+
border-bottom: 1px solid #1e293b;
|
|
3705
3787
|
font-weight: 600;
|
|
3706
|
-
border-bottom: 1px solid #374151;
|
|
3707
3788
|
}
|
|
3708
|
-
td {
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
}
|
|
3712
|
-
tr:hover td { background: rgba(55, 65, 81, 0.3); }
|
|
3789
|
+
td { padding: 10px 12px; border-bottom: 1px solid rgba(30,41,59,0.5); }
|
|
3790
|
+
tr:hover td { background: rgba(30,41,59,0.3); }
|
|
3791
|
+
code { background: #0f172a; padding: 2px 6px; border-radius: 3px; font-size: 12px; color: #94a3b8; }
|
|
3713
3792
|
.badge {
|
|
3714
3793
|
display: inline-block;
|
|
3715
|
-
padding:
|
|
3794
|
+
padding: 2px 10px;
|
|
3716
3795
|
border-radius: 9999px;
|
|
3717
|
-
font-size:
|
|
3796
|
+
font-size: 11px;
|
|
3718
3797
|
font-weight: 600;
|
|
3719
3798
|
color: #fff;
|
|
3720
3799
|
}
|
|
3721
|
-
.empty { color: #
|
|
3722
|
-
footer {
|
|
3723
|
-
margin-top:
|
|
3724
|
-
padding
|
|
3725
|
-
border-top: 1px solid #
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3800
|
+
.empty { color: #475569; font-style: italic; padding: 1rem 0; }
|
|
3801
|
+
.report-footer {
|
|
3802
|
+
margin-top: 32px;
|
|
3803
|
+
padding: 20px 0;
|
|
3804
|
+
border-top: 1px solid #1e293b;
|
|
3805
|
+
display: flex;
|
|
3806
|
+
align-items: center;
|
|
3807
|
+
justify-content: space-between;
|
|
3808
|
+
color: #475569;
|
|
3809
|
+
font-size: 11px;
|
|
3810
|
+
}
|
|
3811
|
+
.report-footer .brand-sm { display: flex; align-items: center; gap: 6px; }
|
|
3812
|
+
.report-footer .brand-sm .mark {
|
|
3813
|
+
width: 16px; height: 16px; background: #4f46e5; border-radius: 3px;
|
|
3814
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
3815
|
+
font-size: 8px; font-weight: 800; color: #fff;
|
|
3729
3816
|
}
|
|
3817
|
+
.confidential { color: #374151; font-size: 10px; text-align: center; margin-top: 8px; }
|
|
3730
3818
|
</style>
|
|
3731
3819
|
</head>
|
|
3732
3820
|
<body>
|
|
3821
|
+
<div class="container">
|
|
3822
|
+
|
|
3823
|
+
<div class="report-header">
|
|
3824
|
+
<div class="brand"><div class="brand-mark">SV</div><div class="brand-name">SkillVault</div></div>
|
|
3825
|
+
<p style="color:#818cf8;font-size:12px;letter-spacing:0.5px;margin-bottom:16px;">Built by you. Protected by us.</p>
|
|
3826
|
+
<h1>Leak Investigation Report</h1>
|
|
3827
|
+
<p class="subtitle">skill/${escapeHtml(metadata.skill_name)} \u2014 ${new Date(metadata.investigated_at).toLocaleDateString("en-US", { weekday: "long", year: "numeric", month: "long", day: "numeric" })}</p>
|
|
3828
|
+
<div class="report-id">Report ${Date.now().toString(36).toUpperCase()}</div>
|
|
3829
|
+
</div>
|
|
3733
3830
|
|
|
3734
|
-
|
|
3831
|
+
${alertBanner}
|
|
3735
3832
|
|
|
3736
|
-
<div class="
|
|
3737
|
-
<
|
|
3738
|
-
<div
|
|
3739
|
-
<div
|
|
3740
|
-
|
|
3833
|
+
<div class="section">
|
|
3834
|
+
<h2>Investigation Summary</h2>
|
|
3835
|
+
<div class="section-desc">Overview of the investigation parameters and findings.</div>
|
|
3836
|
+
<div class="meta-grid">
|
|
3837
|
+
<div class="meta-item"><div class="label">Skill</div><div class="value">${escapeHtml(metadata.skill_name)}</div></div>
|
|
3838
|
+
<div class="meta-item"><div class="label">Total Licensees</div><div class="value">${report.total_licensees}</div></div>
|
|
3839
|
+
<div class="meta-item"><div class="label">Heartbeat Matches</div><div class="value" style="color:${report.heartbeat_matches.length > 0 ? "#22c55e" : "#64748b"}">${report.heartbeat_matches.length}</div></div>
|
|
3840
|
+
<div class="meta-item"><div class="label">Suspects Flagged</div><div class="value" style="color:${report.suspects.filter((s) => s.risk_level !== "low").length > 0 ? "#f97316" : "#64748b"}">${report.suspects.filter((s) => s.risk_level !== "low").length}</div></div>
|
|
3841
|
+
<div class="meta-item"><div class="label">Source</div><div class="value sm">${escapeHtml(metadata.source)}</div></div>
|
|
3842
|
+
<div class="meta-item"><div class="label">Investigated</div><div class="value sm">${new Date(metadata.investigated_at).toLocaleString()}</div></div>
|
|
3843
|
+
</div>
|
|
3741
3844
|
</div>
|
|
3742
3845
|
|
|
3743
3846
|
<h2>Heartbeat Matches</h2>
|
|
@@ -3758,7 +3861,12 @@ ${auditEvents.length > 0 ? `<table>
|
|
|
3758
3861
|
<tbody>${auditRows}</tbody>
|
|
3759
3862
|
</table>` : '<p class="empty">No audit events found.</p>'}
|
|
3760
3863
|
|
|
3761
|
-
<
|
|
3864
|
+
<div class="report-footer">
|
|
3865
|
+
<div class="brand-sm"><span class="mark">SV</span> SkillVault</div>
|
|
3866
|
+
<div>Generated by SkillVault CLI v${metadata.cli_version} \u2014 ${new Date(metadata.investigated_at).toISOString()}</div>
|
|
3867
|
+
<div><a href="https://getskillvault.com" style="color:#4f46e5;text-decoration:none;">getskillvault.com</a></div>
|
|
3868
|
+
</div>
|
|
3869
|
+
<p class="confidential">This report is confidential and intended for the publisher\u2019s internal investigation use only.</p>
|
|
3762
3870
|
|
|
3763
3871
|
</body>
|
|
3764
3872
|
</html>`;
|
|
@@ -3821,20 +3929,35 @@ var investigateCommand = new Command29("investigate").description("Investigate a
|
|
|
3821
3929
|
const auditData = await sessionFetch(ctx, `/audit/events?capability=skill/${encodeURIComponent(skillName)}&limit=500`);
|
|
3822
3930
|
const customersData = await sessionFetch(ctx, "/customers");
|
|
3823
3931
|
const metadata = {
|
|
3932
|
+
generated_by: "SkillVault CLI",
|
|
3933
|
+
product: "SkillVault \u2014 Encrypted Skill Distribution Platform",
|
|
3934
|
+
website: "https://getskillvault.com",
|
|
3935
|
+
cli_version: "0.1.9",
|
|
3824
3936
|
skill_name: skill.name,
|
|
3825
3937
|
skill_id: skill.id,
|
|
3826
3938
|
publisher_id: ctx.publisherId,
|
|
3827
3939
|
investigated_at: report.created_at,
|
|
3828
|
-
|
|
3829
|
-
|
|
3940
|
+
source: sourceLabel,
|
|
3941
|
+
notice: "This report was generated by SkillVault and is confidential."
|
|
3830
3942
|
};
|
|
3831
3943
|
writeFileSync8(join12(dir, "metadata.json"), JSON.stringify(metadata, null, 2) + "\n");
|
|
3832
|
-
|
|
3944
|
+
const summaryWithBranding = {
|
|
3945
|
+
_generated_by: "SkillVault (https://getskillvault.com)",
|
|
3946
|
+
...report
|
|
3947
|
+
};
|
|
3948
|
+
writeFileSync8(join12(dir, "summary.json"), JSON.stringify(summaryWithBranding, null, 2) + "\n");
|
|
3833
3949
|
writeFileSync8(join12(evidenceDir, "leaked-content.txt"), leakedContent);
|
|
3834
|
-
|
|
3950
|
+
const auditWithBranding = {
|
|
3951
|
+
_generated_by: "SkillVault Leak Investigation",
|
|
3952
|
+
_investigated_at: report.created_at,
|
|
3953
|
+
_skill: skill.name,
|
|
3954
|
+
events: auditData.events
|
|
3955
|
+
};
|
|
3956
|
+
writeFileSync8(join12(evidenceDir, "audit-trail.json"), JSON.stringify(auditWithBranding, null, 2) + "\n");
|
|
3957
|
+
const csvComment = "# SkillVault Leak Investigation Report \u2014 https://getskillvault.com\n# Generated: " + report.created_at + "\n";
|
|
3835
3958
|
const csvHeader = "licensee_id,agent_id,risk_score,risk_level,anomaly_events,strike_count,composite_score";
|
|
3836
3959
|
const csvRows = report.suspects.map((s) => `${s.licensee_id},${s.agent_id},${s.risk_score},${s.risk_level},${s.anomaly_events},${s.strike_count},${s.composite_score}`);
|
|
3837
|
-
writeFileSync8(join12(dir, "suspects.csv"), [csvHeader, ...csvRows].join("\n") + "\n");
|
|
3960
|
+
writeFileSync8(join12(dir, "suspects.csv"), csvComment + [csvHeader, ...csvRows].join("\n") + "\n");
|
|
3838
3961
|
const html = buildHtmlReport(report, auditData.events, metadata);
|
|
3839
3962
|
writeFileSync8(join12(dir, "report.html"), html);
|
|
3840
3963
|
const fileCount = 6;
|