@blamejs/exceptd-skills 0.14.10 → 0.14.12
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/CHANGELOG.md +47 -0
- package/bin/exceptd.js +195 -57
- package/data/_indexes/_meta.json +2 -2
- package/lib/citation-resolve.js +4 -1
- package/lib/collectors/cicd-pipeline-compromise.js +8 -2
- package/lib/collectors/citation-hygiene.js +10 -5
- package/lib/collectors/crypto-codebase.js +11 -6
- package/lib/collectors/sbom.js +9 -2
- package/lib/collectors/scan-excludes.js +0 -0
- package/lib/collectors/secrets.js +32 -4
- package/lib/cve-cli.js +12 -4
- package/lib/framework-gap.js +21 -2
- package/lib/playbook-runner.js +41 -20
- package/lib/prefetch.js +35 -1
- package/lib/refresh-external.js +70 -4
- package/lib/refresh-network.js +16 -1
- package/lib/rfc-cli.js +7 -2
- package/lib/schemas/playbook.schema.json +3 -1
- package/lib/scoring.js +8 -1
- package/lib/validate-playbooks.js +119 -0
- package/manifest.json +44 -44
- package/orchestrator/index.js +121 -14
- package/package.json +1 -1
- package/sbom.cdx.json +50 -50
package/orchestrator/index.js
CHANGED
|
@@ -86,7 +86,7 @@ async function main() {
|
|
|
86
86
|
await runDispatch();
|
|
87
87
|
break;
|
|
88
88
|
case 'skill':
|
|
89
|
-
runSkillContext(args
|
|
89
|
+
runSkillContext(args);
|
|
90
90
|
break;
|
|
91
91
|
case 'pipeline':
|
|
92
92
|
runPipeline(args[0] || 'manual', args[1] ? JSON.parse(args[1]) : {});
|
|
@@ -141,11 +141,23 @@ function runFrameworkGap(rawArgs) {
|
|
|
141
141
|
const jsonOut = flags.has('--json');
|
|
142
142
|
|
|
143
143
|
if (args.length < 2) {
|
|
144
|
-
|
|
144
|
+
const usage = `Usage: exceptd framework-gap <FRAMEWORK_ID|all> <SCENARIO|CVE-ID> [--json]
|
|
145
145
|
Examples:
|
|
146
146
|
exceptd framework-gap NIST-800-53 CVE-2026-31431
|
|
147
147
|
exceptd framework-gap PCI-DSS-4.0 "prompt injection"
|
|
148
|
-
exceptd framework-gap all CVE-2025-53773 --json
|
|
148
|
+
exceptd framework-gap all CVE-2025-53773 --json`;
|
|
149
|
+
// Honor --json on the missing-arg path: a JSON consumer must get a
|
|
150
|
+
// structured ok:false envelope, not plain usage text on stderr.
|
|
151
|
+
if (jsonOut) {
|
|
152
|
+
process.stdout.write(JSON.stringify({
|
|
153
|
+
ok: false,
|
|
154
|
+
verb: 'framework-gap',
|
|
155
|
+
error: 'framework-gap requires <FRAMEWORK_ID|all> and <SCENARIO|CVE-ID>',
|
|
156
|
+
usage,
|
|
157
|
+
}) + '\n');
|
|
158
|
+
} else {
|
|
159
|
+
console.error(usage);
|
|
160
|
+
}
|
|
149
161
|
// v0.13 exit-code class fix: usage error is GENERIC_FAILURE (1),
|
|
150
162
|
// not DETECTED_ESCALATE (2). Pre-v0.13 the orchestrator emitted
|
|
151
163
|
// exit 2 for usage errors, colliding with CI gates that branch on
|
|
@@ -207,7 +219,8 @@ Examples:
|
|
|
207
219
|
}
|
|
208
220
|
const scenario = args[1];
|
|
209
221
|
|
|
210
|
-
const
|
|
222
|
+
const allFrameworks = args[0].toLowerCase() === 'all';
|
|
223
|
+
const report = gapReport(requested, scenario, controlGaps, cveCatalog, { allFrameworks });
|
|
211
224
|
const theater = theaterCheck(controlGaps, cveCatalog);
|
|
212
225
|
|
|
213
226
|
if (jsonOut) {
|
|
@@ -233,7 +246,8 @@ Examples:
|
|
|
233
246
|
if (report.universal_gaps.length > 0) {
|
|
234
247
|
console.log(`### Universal gaps (no jurisdiction covers these) — ${report.universal_gaps.length}`);
|
|
235
248
|
for (const g of report.universal_gaps) {
|
|
236
|
-
|
|
249
|
+
const req = g.real_requirement || '';
|
|
250
|
+
console.log(` - ${g.id || g.name}: ${req.length > 140 ? req.slice(0, 140) + '…' : req}`);
|
|
237
251
|
}
|
|
238
252
|
console.log();
|
|
239
253
|
}
|
|
@@ -256,12 +270,15 @@ async function runScan() {
|
|
|
256
270
|
// other verbs (validate-cves, watchlist, etc.). Previously this was a
|
|
257
271
|
// bare `process.argv.includes('--json')`, which differed in style from
|
|
258
272
|
// the verbs below and could miss `--json=true` or similar future forms.
|
|
273
|
+
if (rejectUnknownFlags('scan', args, ['--json'])) return;
|
|
259
274
|
const { flags } = parseFlags(process.argv.slice(2), []);
|
|
260
275
|
const jsonOut = flags.has('--json');
|
|
261
276
|
if (!jsonOut) console.log('[orchestrator] Scanning environment...\n');
|
|
262
277
|
const result = await scan();
|
|
263
278
|
if (jsonOut) {
|
|
264
|
-
|
|
279
|
+
// Top-level ok:true so a single JSON consumer can branch on the same
|
|
280
|
+
// envelope the ok:false error paths emit.
|
|
281
|
+
process.stdout.write(JSON.stringify({ ok: true, ...result }) + '\n');
|
|
265
282
|
return result;
|
|
266
283
|
}
|
|
267
284
|
|
|
@@ -291,13 +308,14 @@ async function runScan() {
|
|
|
291
308
|
}
|
|
292
309
|
|
|
293
310
|
async function runDispatch() {
|
|
311
|
+
if (rejectUnknownFlags('dispatch', args, ['--json'])) return;
|
|
294
312
|
const jsonOut = process.argv.includes('--json');
|
|
295
313
|
if (!jsonOut) console.log('[orchestrator] Scanning then dispatching...\n');
|
|
296
314
|
const scanResult = await scan();
|
|
297
315
|
const plan = dispatch(scanResult.findings);
|
|
298
316
|
|
|
299
317
|
if (jsonOut) {
|
|
300
|
-
process.stdout.write(JSON.stringify({ scan: scanResult, dispatch: plan }) + '\n');
|
|
318
|
+
process.stdout.write(JSON.stringify({ ok: true, scan: scanResult, dispatch: plan }) + '\n');
|
|
301
319
|
return plan;
|
|
302
320
|
}
|
|
303
321
|
|
|
@@ -332,10 +350,28 @@ async function runDispatch() {
|
|
|
332
350
|
return plan;
|
|
333
351
|
}
|
|
334
352
|
|
|
335
|
-
function runSkillContext(
|
|
353
|
+
function runSkillContext(rawArgs) {
|
|
354
|
+
// `rawArgs` is the full arg list. Filter --flags out of the positional set
|
|
355
|
+
// before treating the first positional as the skill name — pre-fix
|
|
356
|
+
// `skill --json` passed "--json" through as args[0] and reported
|
|
357
|
+
// "Skill not found: --json".
|
|
358
|
+
const argList = Array.isArray(rawArgs) ? rawArgs : (rawArgs == null ? [] : [rawArgs]);
|
|
359
|
+
const jsonOut = argList.includes('--json');
|
|
360
|
+
const positionals = argList.filter(a => typeof a === 'string' && !a.startsWith('--'));
|
|
361
|
+
const skillName = positionals[0];
|
|
362
|
+
|
|
336
363
|
if (!skillName) {
|
|
337
|
-
|
|
338
|
-
|
|
364
|
+
if (jsonOut) {
|
|
365
|
+
process.stdout.write(JSON.stringify({
|
|
366
|
+
ok: false,
|
|
367
|
+
verb: 'skill',
|
|
368
|
+
error: 'usage: exceptd skill <skill-name>',
|
|
369
|
+
hint: 'List available skills: exceptd brief --all',
|
|
370
|
+
}) + '\n');
|
|
371
|
+
} else {
|
|
372
|
+
console.error('Usage: exceptd skill <skill-name>');
|
|
373
|
+
console.error(' (Lists available skills: exceptd brief --all)');
|
|
374
|
+
}
|
|
339
375
|
safeExit(EXIT_CODES.GENERIC_FAILURE);
|
|
340
376
|
return;
|
|
341
377
|
}
|
|
@@ -379,12 +415,13 @@ function runPipeline(triggerType, payload) {
|
|
|
379
415
|
}
|
|
380
416
|
|
|
381
417
|
function runCurrency() {
|
|
418
|
+
if (rejectUnknownFlags('currency', args, ['--json'])) return;
|
|
382
419
|
const jsonOut = process.argv.includes('--json');
|
|
383
420
|
const result = runCurrencyNow();
|
|
384
421
|
const { currency_report, action_required, critical_count } = currencyCheck();
|
|
385
422
|
|
|
386
423
|
if (jsonOut) {
|
|
387
|
-
process.stdout.write(JSON.stringify({ currency_report, action_required, critical_count, generated_at: new Date().toISOString() }) + '\n');
|
|
424
|
+
process.stdout.write(JSON.stringify({ ok: true, currency_report, action_required, critical_count, generated_at: new Date().toISOString() }) + '\n');
|
|
388
425
|
return;
|
|
389
426
|
}
|
|
390
427
|
|
|
@@ -472,7 +509,10 @@ async function runReport(format) {
|
|
|
472
509
|
return;
|
|
473
510
|
}
|
|
474
511
|
|
|
475
|
-
|
|
512
|
+
// Progress line goes to stderr so `report executive > out.md` produces
|
|
513
|
+
// clean markdown on stdout — the first stdout line must be the report
|
|
514
|
+
// header, not this progress notice.
|
|
515
|
+
console.error(`[orchestrator] Generating ${format} report...\n`);
|
|
476
516
|
const scanResult = await scan();
|
|
477
517
|
const plan = dispatch(scanResult.findings);
|
|
478
518
|
const { currency_report } = currencyCheck();
|
|
@@ -707,12 +747,52 @@ async function runWatch() {
|
|
|
707
747
|
console.log('Press Ctrl+C to stop. (SIGTERM / SIGHUP / SIGBREAK also honored.)\n');
|
|
708
748
|
}
|
|
709
749
|
|
|
750
|
+
// Known flags accepted by validate-cves. An unknown flag (typo) must be
|
|
751
|
+
// rejected before any network work — a swallowed `--ofline` previously fell
|
|
752
|
+
// through to the default live-network path and the verb hung fetching the
|
|
753
|
+
// whole catalog from NVD until killed.
|
|
754
|
+
const VALIDATE_CVES_KNOWN_FLAGS = Object.freeze([
|
|
755
|
+
'--offline', '--no-fail', '--from-cache', '--concurrency', '--since', '--air-gap',
|
|
756
|
+
]);
|
|
757
|
+
// Known flags accepted by validate-rfcs (same hang-on-typo class as
|
|
758
|
+
// validate-cves). `--live` is the explicit opt-in to the default network
|
|
759
|
+
// path; `--air-gap` forces the offline view with no egress.
|
|
760
|
+
const VALIDATE_RFCS_KNOWN_FLAGS = Object.freeze([
|
|
761
|
+
'--offline', '--no-fail', '--from-cache', '--since', '--live', '--air-gap',
|
|
762
|
+
]);
|
|
763
|
+
|
|
764
|
+
// Reject unknown --flags against a per-verb allowlist BEFORE any network work.
|
|
765
|
+
// Returns true when a rejection was emitted (caller should return); false when
|
|
766
|
+
// every flag is recognized. The base flag (text before any `=`) is what gets
|
|
767
|
+
// matched so `--from-cache=path` and `--since=2026-01-01` are accepted.
|
|
768
|
+
function rejectUnknownFlags(verb, rawArgs, knownFlags) {
|
|
769
|
+
const known = new Set(knownFlags);
|
|
770
|
+
const unknown = rawArgs
|
|
771
|
+
.filter(a => typeof a === 'string' && a.startsWith('--'))
|
|
772
|
+
.map(a => { const eq = a.indexOf('='); return eq === -1 ? a : a.slice(0, eq); })
|
|
773
|
+
.filter(base => !known.has(base));
|
|
774
|
+
if (unknown.length === 0) return false;
|
|
775
|
+
// Dedupe while preserving order.
|
|
776
|
+
const uniq = [...new Set(unknown)];
|
|
777
|
+
process.stdout.write(JSON.stringify({
|
|
778
|
+
ok: false,
|
|
779
|
+
verb,
|
|
780
|
+
error: `${verb}: unknown flag(s): ${uniq.join(', ')}`,
|
|
781
|
+
unknown_flags: uniq,
|
|
782
|
+
known_flags: knownFlags,
|
|
783
|
+
}) + '\n');
|
|
784
|
+
safeExit(EXIT_CODES.GENERIC_FAILURE);
|
|
785
|
+
return true;
|
|
786
|
+
}
|
|
787
|
+
|
|
710
788
|
async function runValidateCves(rawArgs = []) {
|
|
711
789
|
const fs = require('fs');
|
|
712
790
|
const path = require('path');
|
|
713
791
|
|
|
792
|
+
if (rejectUnknownFlags('validate-cves', rawArgs, VALIDATE_CVES_KNOWN_FLAGS)) return;
|
|
793
|
+
|
|
714
794
|
const flags = new Set(rawArgs.filter(a => a.startsWith('--')));
|
|
715
|
-
const offline = flags.has('--offline');
|
|
795
|
+
const offline = flags.has('--offline') || flags.has('--air-gap');
|
|
716
796
|
const noFail = flags.has('--no-fail');
|
|
717
797
|
// --from-cache: prefer cached upstream snapshots before falling back to live
|
|
718
798
|
// network. Accepts an optional path; defaults to .cache/upstream when bare.
|
|
@@ -958,8 +1038,10 @@ async function runValidateRfcs(rawArgs = []) {
|
|
|
958
1038
|
const fs = require('fs');
|
|
959
1039
|
const path = require('path');
|
|
960
1040
|
|
|
1041
|
+
if (rejectUnknownFlags('validate-rfcs', rawArgs, VALIDATE_RFCS_KNOWN_FLAGS)) return;
|
|
1042
|
+
|
|
961
1043
|
const flags = new Set(rawArgs.filter(a => a.startsWith('--')));
|
|
962
|
-
const offline = flags.has('--offline');
|
|
1044
|
+
const offline = flags.has('--offline') || flags.has('--air-gap');
|
|
963
1045
|
const noFail = flags.has('--no-fail');
|
|
964
1046
|
let cacheDir = null;
|
|
965
1047
|
for (let i = 0; i < rawArgs.length; i++) {
|
|
@@ -1131,11 +1213,21 @@ async function runValidateRfcs(rawArgs = []) {
|
|
|
1131
1213
|
* that should trigger a skill update. This command surfaces the union so
|
|
1132
1214
|
* maintainers can see the full horizon at a glance.
|
|
1133
1215
|
*/
|
|
1216
|
+
// Every flag any watchlist mode (default aggregator, --alerts, --org-scan)
|
|
1217
|
+
// accepts. The unknown-flag guard runs once at the top of runWatchlist so a
|
|
1218
|
+
// typo is rejected regardless of which sub-mode it would have reached.
|
|
1219
|
+
const WATCHLIST_KNOWN_FLAGS = Object.freeze([
|
|
1220
|
+
'--json', '--by-skill', '--alerts', '--org-scan',
|
|
1221
|
+
'--org', '--pattern', '--output-format', '--air-gap',
|
|
1222
|
+
]);
|
|
1223
|
+
|
|
1134
1224
|
function runWatchlist(rawArgs = []) {
|
|
1135
1225
|
const fs = require('fs');
|
|
1136
1226
|
const path = require('path');
|
|
1137
1227
|
const { parseFrontmatter, extractFrontmatterBlock } = require('../lib/lint-skills.js');
|
|
1138
1228
|
|
|
1229
|
+
if (rejectUnknownFlags('watchlist', rawArgs, WATCHLIST_KNOWN_FLAGS)) return;
|
|
1230
|
+
|
|
1139
1231
|
const byskill = rawArgs.includes('--by-skill');
|
|
1140
1232
|
const alertsMode = rawArgs.includes('--alerts');
|
|
1141
1233
|
const orgScanMode = rawArgs.includes('--org-scan');
|
|
@@ -1705,6 +1797,21 @@ async function runWatchlistOrgScan(rawArgs = []) {
|
|
|
1705
1797
|
safeExit(EXIT_CODES.GENERIC_FAILURE);
|
|
1706
1798
|
return;
|
|
1707
1799
|
}
|
|
1800
|
+
// Air-gap guard. The org-scan reaches api.github.com on every pattern
|
|
1801
|
+
// query; under air-gap there is no offline substitute, so refuse before
|
|
1802
|
+
// any fetch rather than silently attempting egress. Mirrors the
|
|
1803
|
+
// source-ghsa air-gap refusal shape (ok:false + source + explicit error).
|
|
1804
|
+
if (process.env.EXCEPTD_AIR_GAP === '1' || rawArgs.includes('--air-gap')) {
|
|
1805
|
+
process.stdout.write(JSON.stringify({
|
|
1806
|
+
ok: false,
|
|
1807
|
+
source: 'air-gap',
|
|
1808
|
+
verb: 'watchlist',
|
|
1809
|
+
mode: 'org-scan',
|
|
1810
|
+
error: 'air-gap: watchlist --org-scan requires network egress to api.github.com; refused.',
|
|
1811
|
+
}) + '\n');
|
|
1812
|
+
safeExit(EXIT_CODES.BLOCKED);
|
|
1813
|
+
return;
|
|
1814
|
+
}
|
|
1708
1815
|
// Custom patterns via --pattern <s> (repeatable). Default set from
|
|
1709
1816
|
// the MAL-2026-SHAI-HULUD-OSS catalog entry + NEW-CTRL-052 evidence.
|
|
1710
1817
|
const customPatterns = [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blamejs/exceptd-skills",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.12",
|
|
4
4
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (406 CVEs / 171 CWEs / 805 ATT&CK + ICS / 170 ATLAS / 468 D3FEND / 8888 RFCs), 35 jurisdictions, 10-class catalog gap detector + budget gate, real XML parser + canonical-form diff + content-pattern regression detection, Ed25519-signed.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-security",
|
package/sbom.cdx.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:3c3dcfa9-3a0d-41e3-ba8b-fc9074eb6c91",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "
|
|
7
|
+
"timestamp": "2058-01-10T17:30:17.000Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "blamejs",
|
|
11
11
|
"name": "scripts/refresh-sbom.js",
|
|
12
|
-
"version": "0.14.
|
|
12
|
+
"version": "0.14.12"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
|
-
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.14.
|
|
16
|
+
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.14.12",
|
|
17
17
|
"type": "application",
|
|
18
18
|
"name": "@blamejs/exceptd-skills",
|
|
19
|
-
"version": "0.14.
|
|
19
|
+
"version": "0.14.12",
|
|
20
20
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (406 CVEs / 171 CWEs / 805 ATT&CK + ICS / 170 ATLAS / 468 D3FEND / 8888 RFCs), 35 jurisdictions, 10-class catalog gap detector + budget gate, real XML parser + canonical-form diff + content-pattern regression detection, Ed25519-signed.",
|
|
21
21
|
"licenses": [
|
|
22
22
|
{
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
],
|
|
28
|
-
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.14.
|
|
28
|
+
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.14.12",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "0c93edb6886bb6d399d389a24226d4baa22f7779ae3996d4d7fbcf0a6e5114d6"
|
|
33
33
|
}
|
|
34
34
|
],
|
|
35
35
|
"externalReferences": [
|
|
36
36
|
{
|
|
37
37
|
"type": "distribution",
|
|
38
|
-
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.14.
|
|
38
|
+
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.14.12"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"type": "vcs",
|
|
@@ -116,11 +116,11 @@
|
|
|
116
116
|
"hashes": [
|
|
117
117
|
{
|
|
118
118
|
"alg": "SHA-256",
|
|
119
|
-
"content": "
|
|
119
|
+
"content": "ddd5c86511d4ea2e2fa500a67bd5cb5e1111e1fb678d6715500f3ab8729ca2e1"
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"alg": "SHA3-512",
|
|
123
|
-
"content": "
|
|
123
|
+
"content": "7a0dfecb42ade2ab79c7e5286c2612b644a5d044b22a9f662aaef40e9793c68d9d019ae93ba8a0f52ac9134e694b00216890bc430362561fbe5757ca31d19e0c"
|
|
124
124
|
}
|
|
125
125
|
]
|
|
126
126
|
},
|
|
@@ -281,11 +281,11 @@
|
|
|
281
281
|
"hashes": [
|
|
282
282
|
{
|
|
283
283
|
"alg": "SHA-256",
|
|
284
|
-
"content": "
|
|
284
|
+
"content": "3d755197adfee59c67dafc46dc19636a491e59986fa088d8b51daee75dfab19b"
|
|
285
285
|
},
|
|
286
286
|
{
|
|
287
287
|
"alg": "SHA3-512",
|
|
288
|
-
"content": "
|
|
288
|
+
"content": "cc3309521915ada4277a09dbe9c33c13510f0508e0e710b8b9a877ebcd5a2a79c3448a08aa8d96286ade6c2dc3ef357794afdbbfb62f8d2531d4bf46e2ee7d58"
|
|
289
289
|
}
|
|
290
290
|
]
|
|
291
291
|
},
|
|
@@ -881,11 +881,11 @@
|
|
|
881
881
|
"hashes": [
|
|
882
882
|
{
|
|
883
883
|
"alg": "SHA-256",
|
|
884
|
-
"content": "
|
|
884
|
+
"content": "da169b55e9a96d766f63f6b1b63785f98611a56a1cc78d619ec757ce4d5204f8"
|
|
885
885
|
},
|
|
886
886
|
{
|
|
887
887
|
"alg": "SHA3-512",
|
|
888
|
-
"content": "
|
|
888
|
+
"content": "74c4f21e05eb245de61c810f7094fb877601b6137ab8dc984f2e64feac4c8fb4d05cd871988b105f8894f356e87f6fc3e09ebf0733d8000f6e7c52f6b84ad1dd"
|
|
889
889
|
}
|
|
890
890
|
]
|
|
891
891
|
},
|
|
@@ -926,11 +926,11 @@
|
|
|
926
926
|
"hashes": [
|
|
927
927
|
{
|
|
928
928
|
"alg": "SHA-256",
|
|
929
|
-
"content": "
|
|
929
|
+
"content": "dc02ee2b01a753f70b8812f38d7999c3ca666d0a3e4a1255f6d0d21f7faa629c"
|
|
930
930
|
},
|
|
931
931
|
{
|
|
932
932
|
"alg": "SHA3-512",
|
|
933
|
-
"content": "
|
|
933
|
+
"content": "918ae3acdbbebc2764e6eac82229b20448300bf8d26b2d79850b9137f48e41cf98ed11b129b328cf2c433553edc31997fa2af3297848f8867217326e0a3f1dcd"
|
|
934
934
|
}
|
|
935
935
|
]
|
|
936
936
|
},
|
|
@@ -941,11 +941,11 @@
|
|
|
941
941
|
"hashes": [
|
|
942
942
|
{
|
|
943
943
|
"alg": "SHA-256",
|
|
944
|
-
"content": "
|
|
944
|
+
"content": "a06fe534a30436f45d9dfd6c48c31a0a23e69bb1af485e099780421d74fe5070"
|
|
945
945
|
},
|
|
946
946
|
{
|
|
947
947
|
"alg": "SHA3-512",
|
|
948
|
-
"content": "
|
|
948
|
+
"content": "7013e0fb0a969d472e88d589b354c08b2455a6b20e104a13d3251fa1d75b2d79bf61eb0d625fcf4a11f6d5d5322ada3a969a8c45341a7f684a8062306f881683"
|
|
949
949
|
}
|
|
950
950
|
]
|
|
951
951
|
},
|
|
@@ -986,11 +986,11 @@
|
|
|
986
986
|
"hashes": [
|
|
987
987
|
{
|
|
988
988
|
"alg": "SHA-256",
|
|
989
|
-
"content": "
|
|
989
|
+
"content": "745a5d013aa95ae317cf522c14a7121167903a2f2c402f9893d4b11bfce32aa0"
|
|
990
990
|
},
|
|
991
991
|
{
|
|
992
992
|
"alg": "SHA3-512",
|
|
993
|
-
"content": "
|
|
993
|
+
"content": "a74c353e98c4e52c87c7040adfcb940462d848cc3980c72201c9f4d5cd03fb7ad0a6aa6c594985bcc689eed1e68602ee91dbcabc5e9d97a3819f9e409f7e4690"
|
|
994
994
|
}
|
|
995
995
|
]
|
|
996
996
|
},
|
|
@@ -1091,11 +1091,11 @@
|
|
|
1091
1091
|
"hashes": [
|
|
1092
1092
|
{
|
|
1093
1093
|
"alg": "SHA-256",
|
|
1094
|
-
"content": "
|
|
1094
|
+
"content": "d4827e59ab53b0c578890a9b49477efdd74dbf9bec24748346bbffc3c1d6424c"
|
|
1095
1095
|
},
|
|
1096
1096
|
{
|
|
1097
1097
|
"alg": "SHA3-512",
|
|
1098
|
-
"content": "
|
|
1098
|
+
"content": "7dd94b35e3b368dde731dcc749b7eb51be38847b0a18b80c59b12142726253acd8841c0a6cb077d0a8531d2082c5918b772a4b860643e208f6c1ba008324f933"
|
|
1099
1099
|
}
|
|
1100
1100
|
]
|
|
1101
1101
|
},
|
|
@@ -1106,11 +1106,11 @@
|
|
|
1106
1106
|
"hashes": [
|
|
1107
1107
|
{
|
|
1108
1108
|
"alg": "SHA-256",
|
|
1109
|
-
"content": "
|
|
1109
|
+
"content": "ee834a396114c8fb409442dc704be8abe3b39f3174dd5c54367790dd4380d8c6"
|
|
1110
1110
|
},
|
|
1111
1111
|
{
|
|
1112
1112
|
"alg": "SHA3-512",
|
|
1113
|
-
"content": "
|
|
1113
|
+
"content": "4634de496b75b163d26f652bd86b3cfd7434179b99f8b07db6029bd0eb7214ca482474c99647ae776ee8edfb1802b78a4e6cf734beef74f8c5a0d038049937ad"
|
|
1114
1114
|
}
|
|
1115
1115
|
]
|
|
1116
1116
|
},
|
|
@@ -1121,11 +1121,11 @@
|
|
|
1121
1121
|
"hashes": [
|
|
1122
1122
|
{
|
|
1123
1123
|
"alg": "SHA-256",
|
|
1124
|
-
"content": "
|
|
1124
|
+
"content": "8154e051408a6b58f328865973c6e57666d89b8a507ebee919bb78ed68310885"
|
|
1125
1125
|
},
|
|
1126
1126
|
{
|
|
1127
1127
|
"alg": "SHA3-512",
|
|
1128
|
-
"content": "
|
|
1128
|
+
"content": "0cd887333d4f82b2a7cb6bd71753b9db64b1776b84a2b490bf0b66e262d52f667e29ae603afb14a291f0bd39905469775a6143b495493cd01518caf59196bef2"
|
|
1129
1129
|
}
|
|
1130
1130
|
]
|
|
1131
1131
|
},
|
|
@@ -1151,11 +1151,11 @@
|
|
|
1151
1151
|
"hashes": [
|
|
1152
1152
|
{
|
|
1153
1153
|
"alg": "SHA-256",
|
|
1154
|
-
"content": "
|
|
1154
|
+
"content": "1a3246aab91e2c51e24007f3ffa6cafba5edf366444b190a4d3160656555713e"
|
|
1155
1155
|
},
|
|
1156
1156
|
{
|
|
1157
1157
|
"alg": "SHA3-512",
|
|
1158
|
-
"content": "
|
|
1158
|
+
"content": "e1cf6956135578f1391ddd1e4776008af4dc11cfc431a7224599e058363ac0d7b4cc7d0ede816d144e38fedc5ebdd3bc39e46ff2e9e164b1a06f86cc496cbc83"
|
|
1159
1159
|
}
|
|
1160
1160
|
]
|
|
1161
1161
|
},
|
|
@@ -1241,11 +1241,11 @@
|
|
|
1241
1241
|
"hashes": [
|
|
1242
1242
|
{
|
|
1243
1243
|
"alg": "SHA-256",
|
|
1244
|
-
"content": "
|
|
1244
|
+
"content": "2079feda6c0c5e0f44384c3944c42e182793497bb868775f1bfa0a229d2a7fe3"
|
|
1245
1245
|
},
|
|
1246
1246
|
{
|
|
1247
1247
|
"alg": "SHA3-512",
|
|
1248
|
-
"content": "
|
|
1248
|
+
"content": "70ab92de7ac208d8673c833bed0b8bb0ad53bd66b7b7ae5c2beac5e5c32d0ddee3991e4b3698667b007a2122f7cdbfffcdd209310b5d082a6aeeeea19364e79c"
|
|
1249
1249
|
}
|
|
1250
1250
|
]
|
|
1251
1251
|
},
|
|
@@ -1316,11 +1316,11 @@
|
|
|
1316
1316
|
"hashes": [
|
|
1317
1317
|
{
|
|
1318
1318
|
"alg": "SHA-256",
|
|
1319
|
-
"content": "
|
|
1319
|
+
"content": "ce4e0915fd4a758891e1799055d7f21bfeb1c283950668fe125533008c551547"
|
|
1320
1320
|
},
|
|
1321
1321
|
{
|
|
1322
1322
|
"alg": "SHA3-512",
|
|
1323
|
-
"content": "
|
|
1323
|
+
"content": "e81350df04396a41caaa15f810011fecb50c7efc25dbd3b48133337295948d9c8e5839e9d744891e330b607e9c776710daea7ed1a7b04ff66b9b7b4330f5a15e"
|
|
1324
1324
|
}
|
|
1325
1325
|
]
|
|
1326
1326
|
},
|
|
@@ -1331,11 +1331,11 @@
|
|
|
1331
1331
|
"hashes": [
|
|
1332
1332
|
{
|
|
1333
1333
|
"alg": "SHA-256",
|
|
1334
|
-
"content": "
|
|
1334
|
+
"content": "fc9d13e98934b99981965e61affae0b03bffd8d8a0ee8f6fbb6cb8f33f2cadb5"
|
|
1335
1335
|
},
|
|
1336
1336
|
{
|
|
1337
1337
|
"alg": "SHA3-512",
|
|
1338
|
-
"content": "
|
|
1338
|
+
"content": "4053e54232a55090a53ff765f43bd7c389bdd8ff7d9458c123e1e297ee613f8ed007805588c3e1b6e3857db088d344077ba4d8889efb2129797708ef5f5b58f2"
|
|
1339
1339
|
}
|
|
1340
1340
|
]
|
|
1341
1341
|
},
|
|
@@ -1346,11 +1346,11 @@
|
|
|
1346
1346
|
"hashes": [
|
|
1347
1347
|
{
|
|
1348
1348
|
"alg": "SHA-256",
|
|
1349
|
-
"content": "
|
|
1349
|
+
"content": "afb6aabb94f1044694ffacf224daadfd644141d40f03ba20aa8112e3649734b9"
|
|
1350
1350
|
},
|
|
1351
1351
|
{
|
|
1352
1352
|
"alg": "SHA3-512",
|
|
1353
|
-
"content": "
|
|
1353
|
+
"content": "d613ac08b4761b55dc1660bd99de46ca9dc3f0d8d3ec0e67b6fd5987098a9b580f42d3e88134c57773c4c969bacd64ee5f48b2bb43cb1445b94e6a5afa0f3bd9"
|
|
1354
1354
|
}
|
|
1355
1355
|
]
|
|
1356
1356
|
},
|
|
@@ -1361,11 +1361,11 @@
|
|
|
1361
1361
|
"hashes": [
|
|
1362
1362
|
{
|
|
1363
1363
|
"alg": "SHA-256",
|
|
1364
|
-
"content": "
|
|
1364
|
+
"content": "87de9a8963f9dfb14228d2f67b65750d9bcd054e985bba21bacb6dd14dec0602"
|
|
1365
1365
|
},
|
|
1366
1366
|
{
|
|
1367
1367
|
"alg": "SHA3-512",
|
|
1368
|
-
"content": "
|
|
1368
|
+
"content": "06a7fd1e8cb464ab88ac62e9813b8fe96a0a2e5ad4388f52ef13856a0d4a5a6fac59d9aa8967396cbf9434b96df412f0f2845340b3db88eccc0984b69a1531aa"
|
|
1369
1369
|
}
|
|
1370
1370
|
]
|
|
1371
1371
|
},
|
|
@@ -1376,11 +1376,11 @@
|
|
|
1376
1376
|
"hashes": [
|
|
1377
1377
|
{
|
|
1378
1378
|
"alg": "SHA-256",
|
|
1379
|
-
"content": "
|
|
1379
|
+
"content": "e3a047373857e9da01b0f6558e57ae23a51fe28b6eabff4e8b7e1deb308a55d9"
|
|
1380
1380
|
},
|
|
1381
1381
|
{
|
|
1382
1382
|
"alg": "SHA3-512",
|
|
1383
|
-
"content": "
|
|
1383
|
+
"content": "d5d3270cfc1f46b6b01e052c051faa83b573958f3a79338bce87938e47c14c953c3b8da5549f2b92a6cf8acca43414800581da17dde0dedbbd82c6e2479a1f4a"
|
|
1384
1384
|
}
|
|
1385
1385
|
]
|
|
1386
1386
|
},
|
|
@@ -1421,11 +1421,11 @@
|
|
|
1421
1421
|
"hashes": [
|
|
1422
1422
|
{
|
|
1423
1423
|
"alg": "SHA-256",
|
|
1424
|
-
"content": "
|
|
1424
|
+
"content": "be6b9c21024d9a52dd5c9f57c47780257784bb61568e5f7f083217e2fe982eb4"
|
|
1425
1425
|
},
|
|
1426
1426
|
{
|
|
1427
1427
|
"alg": "SHA3-512",
|
|
1428
|
-
"content": "
|
|
1428
|
+
"content": "d503b8c2750f980eaf7a0305319dcec9baaead80f304fa231ee6308940feef2c64005cbcebde22996ce6423c06feb9f757e9e76cbc32a3d93905030428d16781"
|
|
1429
1429
|
}
|
|
1430
1430
|
]
|
|
1431
1431
|
},
|
|
@@ -1451,11 +1451,11 @@
|
|
|
1451
1451
|
"hashes": [
|
|
1452
1452
|
{
|
|
1453
1453
|
"alg": "SHA-256",
|
|
1454
|
-
"content": "
|
|
1454
|
+
"content": "a491b2b6ca35d75f7d3d27696d6ae20d1ee22ade22c507de7bfcfd4bbc4d8a8d"
|
|
1455
1455
|
},
|
|
1456
1456
|
{
|
|
1457
1457
|
"alg": "SHA3-512",
|
|
1458
|
-
"content": "
|
|
1458
|
+
"content": "a47ecd510b73942d64d5e81ad455a38bb174609c02df5f531cbc4ace198721bbf4006c126dc1d2d640e9a202ca0b302e59f58c24dc97a9d30efb6099d1ef7da4"
|
|
1459
1459
|
}
|
|
1460
1460
|
]
|
|
1461
1461
|
},
|
|
@@ -1631,11 +1631,11 @@
|
|
|
1631
1631
|
"hashes": [
|
|
1632
1632
|
{
|
|
1633
1633
|
"alg": "SHA-256",
|
|
1634
|
-
"content": "
|
|
1634
|
+
"content": "32ac5e60da442fd25a7283711c0caf23a0363c1b8e8dee5ce79c80a5f26d45c8"
|
|
1635
1635
|
},
|
|
1636
1636
|
{
|
|
1637
1637
|
"alg": "SHA3-512",
|
|
1638
|
-
"content": "
|
|
1638
|
+
"content": "ed6d8990737340ab604f7354b54b2662979b5b59f853ea53e216e9b17ab6bf73fc807f1dda5bf904ccaa4081d6ae7698f0f2f326292c7bc01d56adc694d7cace"
|
|
1639
1639
|
}
|
|
1640
1640
|
]
|
|
1641
1641
|
},
|
|
@@ -1751,11 +1751,11 @@
|
|
|
1751
1751
|
"hashes": [
|
|
1752
1752
|
{
|
|
1753
1753
|
"alg": "SHA-256",
|
|
1754
|
-
"content": "
|
|
1754
|
+
"content": "9dfc540e93aa24c5c61de5a568ac4ed94a21c04cddea458bb647c17ee3a4ec48"
|
|
1755
1755
|
},
|
|
1756
1756
|
{
|
|
1757
1757
|
"alg": "SHA3-512",
|
|
1758
|
-
"content": "
|
|
1758
|
+
"content": "30f7961d052a1c680d5eb52afa18a85a669e69591f6dabd19da3c795a4dab4f87c786d852ec08020262c742001abec1c03a45194c9c81077f263749927e6ece6"
|
|
1759
1759
|
}
|
|
1760
1760
|
]
|
|
1761
1761
|
},
|
|
@@ -1811,11 +1811,11 @@
|
|
|
1811
1811
|
"hashes": [
|
|
1812
1812
|
{
|
|
1813
1813
|
"alg": "SHA-256",
|
|
1814
|
-
"content": "
|
|
1814
|
+
"content": "4c9ec7d070014f0e1fac5958c1c995ca708df52b7f19c2a36c60573e7629d5b4"
|
|
1815
1815
|
},
|
|
1816
1816
|
{
|
|
1817
1817
|
"alg": "SHA3-512",
|
|
1818
|
-
"content": "
|
|
1818
|
+
"content": "f61247ab992bfa2c7ea073a1cf550b94b0a381363b88a23d3c716b154d840d3e28f1e58358ab87b7f264c81e6cd6357fe7d5d02e9f913f9748d62d5fa3b64116"
|
|
1819
1819
|
}
|
|
1820
1820
|
]
|
|
1821
1821
|
},
|