@oculum/scanner 1.0.0 → 1.0.1

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/index.d.ts CHANGED
@@ -14,6 +14,8 @@ export interface ScanOptions {
14
14
  scanMode?: ScanMode | ScanModeConfig;
15
15
  /** Scan depth (cheap/validated/deep) - controls AI usage */
16
16
  scanDepth?: ScanDepth;
17
+ /** Suppress console.log output (for interactive CLI mode) */
18
+ quiet?: boolean;
17
19
  }
18
20
  export interface ScanProgress {
19
21
  status: 'fetching' | 'layer1' | 'layer2' | 'layer3' | 'validating' | 'complete' | 'failed';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,aAAa,EACb,cAAc,EACd,cAAc,EAEd,QAAQ,EACR,cAAc,EACd,SAAS,EACV,MAAM,SAAS,CAAA;AAkHhB,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAA;IACpC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAA;IAC1F,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;AA8C/D;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvD,OAAO,GAAE,WAAgB,EACzB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAkOrB;AA+WD;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,eAAe,EAAE,aAAa,EAAE,GAAG;IACpF,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,iBAAiB,EAAE,OAAO,CAAA;CAC3B,CAMA;AAGD,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAC1F,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,aAAa,EACb,cAAc,EACd,cAAc,EAEd,QAAQ,EACR,cAAc,EACd,SAAS,EACV,MAAM,SAAS,CAAA;AAkHhB,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAA;IACpC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAA;IAC1F,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;AA8C/D;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvD,OAAO,GAAE,WAAgB,EACzB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,UAAU,CAAC,CA0OrB;AA6WD;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,eAAe,EAAE,aAAa,EAAE,GAAG;IACpF,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,iBAAiB,EAAE,OAAO,CAAA;CAC3B,CAMA;AAGD,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAC1F,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -137,9 +137,16 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
137
137
  const scanModeConfig = resolveScanModeConfig(options);
138
138
  const isIncremental = scanModeConfig.mode === 'incremental';
139
139
  const depth = scanModeConfig.scanDepth || 'cheap';
140
- console.log(`[Scanner] repo=${repoInfo.name} mode=${scanModeConfig.mode} depth=${depth} files=${files.length}`);
140
+ const quiet = options.quiet ?? false;
141
+ // Conditional logging helper - suppresses output in quiet mode (interactive CLI)
142
+ const log = (message) => {
143
+ if (!quiet) {
144
+ console.log(message);
145
+ }
146
+ };
147
+ log(`[Scanner] repo=${repoInfo.name} mode=${scanModeConfig.mode} depth=${depth} files=${files.length}`);
141
148
  if (isIncremental && scanModeConfig.changedFiles) {
142
- console.log(`[Scanner] repo=${repoInfo.name} incremental_files=${scanModeConfig.changedFiles.length}`);
149
+ log(`[Scanner] repo=${repoInfo.name} incremental_files=${scanModeConfig.changedFiles.length}`);
143
150
  }
144
151
  // Report progress helper
145
152
  const reportProgress = (status, message, vulnerabilitiesFound = allVulnerabilities.length) => {
@@ -162,13 +169,13 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
162
169
  // Detect global auth middleware before scanning (always on all files for context)
163
170
  const middlewareConfig = (0, middleware_detector_1.detectGlobalAuthMiddleware)(files);
164
171
  if (middlewareConfig.hasAuthMiddleware) {
165
- console.log(`[Scanner] repo=${repoInfo.name} auth_middleware=${middlewareConfig.authType || 'unknown'} file=${middlewareConfig.middlewareFile}`);
172
+ log(`[Scanner] repo=${repoInfo.name} auth_middleware=${middlewareConfig.authType || 'unknown'} file=${middlewareConfig.middlewareFile}`);
166
173
  }
167
174
  // Build imported auth registry for cross-file middleware detection
168
175
  const fileAuthImports = (0, imported_auth_detector_1.buildFileAuthImports)(files);
169
176
  const filesWithImportedAuth = Array.from(fileAuthImports.values()).filter(f => f.usesImportedAuth).length;
170
177
  if (filesWithImportedAuth > 0) {
171
- console.log(`[Scanner] repo=${repoInfo.name} files_with_imported_auth=${filesWithImportedAuth}`);
178
+ log(`[Scanner] repo=${repoInfo.name} files_with_imported_auth=${filesWithImportedAuth}`);
172
179
  }
173
180
  // Layer 1: Surface Scan
174
181
  reportProgress('layer1', 'Running surface scan (patterns, entropy, config)...');
@@ -179,7 +186,7 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
179
186
  ...layer1Result,
180
187
  vulnerabilities: (0, urls_1.aggregateLocalhostFindings)(layer1Result.vulnerabilities)
181
188
  };
182
- console.log(`[Layer1] repo=${repoInfo.name} findings_raw=${layer1RawCount} findings_deduped=${layer1Result.vulnerabilities.length}`);
189
+ log(`[Layer1] repo=${repoInfo.name} findings_raw=${layer1RawCount} findings_deduped=${layer1Result.vulnerabilities.length}`);
183
190
  // Layer 2: Structural Scan
184
191
  reportProgress('layer2', 'Running structural scan (variables, logic gates)...', layer1Result.vulnerabilities.length);
185
192
  const layer2Result = await (0, layer2_1.runLayer2Scan)(files, { middlewareConfig, fileAuthImports });
@@ -188,7 +195,7 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
188
195
  .filter(([, count]) => count > 0)
189
196
  .map(([name, count]) => `${name}:${count}`)
190
197
  .join(',');
191
- console.log(`[Layer2] repo=${repoInfo.name} findings_raw=${Object.values(layer2Result.stats.raw).reduce((a, b) => a + b, 0)} findings_deduped=${layer2Result.vulnerabilities.length} heuristic_breakdown={${heuristicBreakdown}}`);
198
+ log(`[Layer2] repo=${repoInfo.name} findings_raw=${Object.values(layer2Result.stats.raw).reduce((a, b) => a + b, 0)} findings_deduped=${layer2Result.vulnerabilities.length} heuristic_breakdown={${heuristicBreakdown}}`);
192
199
  // Combine Layer 1 and Layer 2 findings
193
200
  const layer12Findings = [...layer1Result.vulnerabilities, ...layer2Result.vulnerabilities];
194
201
  // Aggregate noisy findings BEFORE tier filtering to reduce noise
@@ -199,8 +206,8 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
199
206
  // This is the key integration point for the detector tier system
200
207
  const tierFiltered = filterByTierAndDepth(aggregatedFindings, depth);
201
208
  // Log tier breakdown
202
- console.log(`[Scanner] repo=${repoInfo.name} tier_breakdown=${(0, tiers_1.formatTierStats)(tierFiltered.tierStats)}`);
203
- console.log(`[Scanner] repo=${repoInfo.name} depth=${depth} tier_routing: surface=${tierFiltered.toSurface.length} validate=${tierFiltered.toValidate.length} hidden=${tierFiltered.hidden.length}`);
209
+ log(`[Scanner] repo=${repoInfo.name} tier_breakdown=${(0, tiers_1.formatTierStats)(tierFiltered.tierStats)}`);
210
+ log(`[Scanner] repo=${repoInfo.name} depth=${depth} tier_routing: surface=${tierFiltered.toSurface.length} validate=${tierFiltered.toValidate.length} hidden=${tierFiltered.hidden.length}`);
204
211
  // For cheap scans: Tier A surfaces directly, Tier B/C are hidden
205
212
  // For validated/deep: Tier A surfaces, Tier B goes through AI validation, Tier C hidden
206
213
  // Some Tier A findings still need AI validation (entropy, secrets, AI-specific)
@@ -221,7 +228,7 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
221
228
  autoDismissBySeverity[d.finding.severity] = (autoDismissBySeverity[d.finding.severity] || 0) + 1;
222
229
  }
223
230
  if (autoDismissed.length > 0) {
224
- console.log(`[Layer2] repo=${repoInfo.name} auto_dismissed_total=${autoDismissed.length} by_severity={info:${autoDismissBySeverity.info},low:${autoDismissBySeverity.low},medium:${autoDismissBySeverity.medium},high:${autoDismissBySeverity.high}}`);
231
+ log(`[Layer2] repo=${repoInfo.name} auto_dismissed_total=${autoDismissed.length} by_severity={info:${autoDismissBySeverity.info},low:${autoDismissBySeverity.low},medium:${autoDismissBySeverity.medium},high:${autoDismissBySeverity.high}}`);
225
232
  }
226
233
  // Apply per-file cap to validation candidates (cost control)
227
234
  // Use scan mode config for max files
@@ -242,15 +249,15 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
242
249
  validatedFindings = validationResult.vulnerabilities;
243
250
  const { stats: validationStats } = validationResult;
244
251
  capturedValidationStats = validationStats; // Capture for return
245
- console.log(`[AI Validation] repo=${repoInfo.name} depth=${depth} candidates=${findingsToValidate.length} capped_from=${requiresValidation.length} auto_dismissed=${autoDismissed.length} kept=${validationStats.confirmedFindings} rejected=${validationStats.dismissedFindings} downgraded=${validationStats.downgradedFindings}`);
246
- console.log(`[AI Validation] cost_estimate: input_tokens=${validationStats.estimatedInputTokens} output_tokens=${validationStats.estimatedOutputTokens} cost=$${validationStats.estimatedCost.toFixed(4)} api_calls=${validationStats.apiCalls}`);
252
+ log(`[AI Validation] repo=${repoInfo.name} depth=${depth} candidates=${findingsToValidate.length} capped_from=${requiresValidation.length} auto_dismissed=${autoDismissed.length} kept=${validationStats.confirmedFindings} rejected=${validationStats.dismissedFindings} downgraded=${validationStats.downgradedFindings}`);
253
+ log(`[AI Validation] cost_estimate: input_tokens=${validationStats.estimatedInputTokens} output_tokens=${validationStats.estimatedOutputTokens} cost=$${validationStats.estimatedCost.toFixed(4)} api_calls=${validationStats.apiCalls}`);
247
254
  // Add back findings that weren't validated (not in changed files)
248
255
  const notValidated = cappedValidation.filter(v => !findingsToValidate.includes(v));
249
256
  validatedFindings.push(...notValidated);
250
257
  }
251
258
  }
252
259
  else if (scanModeConfig.skipAIValidation) {
253
- console.log(`[AI Validation] repo=${repoInfo.name} depth=${depth} skipped=true reason=scan_mode_config`);
260
+ log(`[AI Validation] repo=${repoInfo.name} depth=${depth} skipped=true reason=scan_mode_config`);
254
261
  }
255
262
  // Combine validated and non-validated findings
256
263
  allVulnerabilities.push(...validatedFindings, ...noValidationNeeded);
@@ -280,10 +287,10 @@ async function runScan(files, repoInfo, options = {}, onProgress) {
280
287
  },
281
288
  });
282
289
  allVulnerabilities.push(...layer3Result.vulnerabilities);
283
- console.log(`[Layer3] repo=${repoInfo.name} depth=${depth} files_analyzed=${layer3Result.aiAnalyzed} findings=${layer3Result.vulnerabilities.length}`);
290
+ log(`[Layer3] repo=${repoInfo.name} depth=${depth} files_analyzed=${layer3Result.aiAnalyzed} findings=${layer3Result.vulnerabilities.length}`);
284
291
  }
285
292
  else if (scanModeConfig.skipLayer3) {
286
- console.log(`[Layer3] repo=${repoInfo.name} depth=${depth} skipped=true reason=scan_mode_config`);
293
+ log(`[Layer3] repo=${repoInfo.name} depth=${depth} skipped=true reason=scan_mode_config`);
287
294
  }
288
295
  // Deduplicate vulnerabilities
289
296
  const uniqueVulnerabilities = deduplicateVulnerabilities(allVulnerabilities);
@@ -422,9 +429,7 @@ function capValidationCandidatesPerFile(vulnerabilities, maxPerFile = MAX_VALIDA
422
429
  // Take top N per file
423
430
  const capped = sorted.slice(0, maxPerFile);
424
431
  result.push(...capped);
425
- if (sorted.length > maxPerFile) {
426
- console.log(`[Scanner] Capped ${filePath}: ${sorted.length} → ${maxPerFile} validation candidates`);
427
- }
432
+ // Note: Capping log removed to support quiet mode - this is debug info only
428
433
  }
429
434
  return result;
430
435
  }
@@ -530,7 +535,7 @@ function resolveContradictions(vulnerabilities, middlewareConfig) {
530
535
  : isClientCallingProtectedAPI
531
536
  ? 'client component calling protected API'
532
537
  : 'route is protected';
533
- console.log(`[Contradiction] Dropping "${vuln.title}" (${vuln.severity}) - ${reason}`);
538
+ // Note: Contradiction log removed to support quiet mode - this is debug info only
534
539
  continue; // Skip this finding
535
540
  }
536
541
  // Keep lower severity auth findings as-is
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAwMH,0BAuOC;AAkXD,gFAUC;AA9xBD,mCAAgG;AAChG,qCAAwC;AACxC,qCAAwC;AACxC,qCAAwC;AACxC,kDAAwG;AACxG,wCAA0D;AAC1D,qEAAuJ;AACvJ,uEAAgE;AAChE,2EAAqE;AACrE,kDAAkD;AAClD,mCAQgB;AAEhB,sEAAsE;AACtE,MAAM,kCAAkC,GAAG,EAAE,CAAA;AAc7C;;GAEG;AACH,SAAS,cAAc,CAAC,eAAgC;IACtD,MAAM,MAAM,GAAuB;QACjC,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,EAAE;KACjB,CAAA;IAED,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1D,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,oBAAoB,CAC3B,eAAgC,EAChC,KAAgB;IAWhB,MAAM,UAAU,GAAG,cAAc,CAAC,eAAe,CAAC,CAAA;IAClD,MAAM,SAAS,GAAG,IAAA,wBAAgB,EAChC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CACrE,CAAA;IAED,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,2CAA2C;YAC3C,OAAO;gBACL,SAAS,EAAE,UAAU,CAAC,IAAI;gBAC1B,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC;gBAC/D,SAAS;aACV,CAAA;QAEH,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM;YACT,uDAAuD;YACvD,yEAAyE;YACzE,MAAM,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACzD,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,QAAQ,KAAK,qBAAqB;gBACpC,CAAC,CAAC,QAAQ,KAAK,kBAAkB;gBACjC,CAAC,CAAC,CAAC,QAAQ,KAAK,eAAe,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAC1D,CAAA;YACD,MAAM,0BAA0B,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC5D,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACrC,CAAA;YAED,OAAO;gBACL,SAAS,EAAE,0BAA0B;gBACrC,UAAU,EAAE,CAAC,GAAG,uBAAuB,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC;gBACnE,MAAM,EAAE,UAAU,CAAC,YAAY;gBAC/B,SAAS;aACV,CAAA;IACL,CAAC;AACH,CAAC;AAyBD;;;;;;;;GAQG;AACH,SAAS,qBAAqB,CAAC,OAAoB;IACjD,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAA;IAEvC,sBAAsB;IACtB,MAAM,IAAI,GAAa,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM;QAC7C,CAAC,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc;YACrD,CAAC,CAAC,cAAc,CAAC,IAAI,CAAA;IAEvB,MAAM,QAAQ,GAAG,0BAAkB,CAAC,IAAI,CAAC,CAAA;IAEzC,kDAAkD;IAClD,IAAI,MAAM,GAAmB;QAC3B,GAAG,QAAQ;QACX,IAAI;QACJ,GAAG,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAA;IAED,sCAAsC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAA;IAC1C,MAAM,CAAC,SAAS,GAAG,KAAK,CAAA;IAExB,wEAAwE;IACxE,MAAM,iBAAiB,GAAG,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,gBAAgB,KAAK,SAAS,CAAA;IAC7G,MAAM,iBAAiB,GAAG,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,UAAU,KAAK,SAAS,CAAA;IAEvG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,CAAC,gBAAgB,GAAG,KAAK,KAAK,OAAO,CAAA;IAC7C,CAAC;IACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,CAAC,UAAU,GAAG,KAAK,KAAK,MAAM,CAAA;IACtC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,OAAO,CAC3B,KAAiB,EACjB,QAAuD,EACvD,UAAuB,EAAE,EACzB,UAA6B;IAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC5B,MAAM,kBAAkB,GAAoB,EAAE,CAAA;IAE9C,kCAAkC;IAClC,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACrD,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,KAAK,aAAa,CAAA;IAC3D,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,IAAI,OAAO,CAAA;IAEjD,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,SAAS,cAAc,CAAC,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IAC/G,IAAI,aAAa,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,sBAAsB,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;IACxG,CAAC;IAED,yBAAyB;IACzB,MAAM,cAAc,GAAG,CACrB,MAA8B,EAC9B,OAAe,EACf,uBAA+B,kBAAkB,CAAC,MAAM,EACxD,EAAE;QACF,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC;gBACT,MAAM;gBACN,OAAO;gBACP,cAAc,EAAE,KAAK,CAAC,MAAM;gBAC5B,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,oBAAoB;aACrB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAA;IAED,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,UAAU,GAAG,aAAa,IAAI,cAAc,CAAC,YAAY;QAC7D,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACxG,CAAC,CAAC,KAAK,CAAA;IAET,IAAI,CAAC;QACH,kFAAkF;QAClF,MAAM,gBAAgB,GAAG,IAAA,gDAA0B,EAAC,KAAK,CAAC,CAAA;QAC1D,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,oBAAoB,gBAAgB,CAAC,QAAQ,IAAI,SAAS,SAAS,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAA;QAClJ,CAAC;QAED,mEAAmE;QACnE,MAAM,eAAe,GAAG,IAAA,6CAAoB,EAAC,KAAK,CAAC,CAAA;QACnD,MAAM,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAA;QACzG,IAAI,qBAAqB,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,6BAA6B,qBAAqB,EAAE,CAAC,CAAA;QAClG,CAAC;QAED,wBAAwB;QACxB,cAAc,CAAC,QAAQ,EAAE,qDAAqD,CAAC,CAAA;QAC/E,IAAI,YAAY,GAAG,MAAM,IAAA,sBAAa,EAAC,KAAK,CAAC,CAAA;QAE7C,wCAAwC;QACxC,MAAM,cAAc,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAA;QAC1D,YAAY,GAAG;YACb,GAAG,YAAY;YACf,eAAe,EAAE,IAAA,iCAA0B,EAAC,YAAY,CAAC,eAAe,CAAC;SAC1E,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,IAAI,iBAAiB,cAAc,qBAAqB,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAA;QAEpI,2BAA2B;QAC3B,cAAc,CAAC,QAAQ,EAAE,qDAAqD,EAAE,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACpH,MAAM,YAAY,GAAG,MAAM,IAAA,sBAAa,EAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC,CAAA;QAEtF,yCAAyC;QACzC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;aAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;aAC1C,IAAI,CAAC,GAAG,CAAC,CAAA;QACZ,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,IAAI,iBAAiB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,qBAAqB,YAAY,CAAC,eAAe,CAAC,MAAM,yBAAyB,kBAAkB,GAAG,CAAC,CAAA;QAElO,uCAAuC;QACvC,MAAM,eAAe,GAAG,CAAC,GAAG,YAAY,CAAC,eAAe,EAAE,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;QAE1F,iEAAiE;QACjE,MAAM,sBAAsB,GAAG,eAAe,CAAC,MAAM,CAAA;QACrD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAA;QAClE,MAAM,eAAe,GAAG,sBAAsB,GAAG,kBAAkB,CAAC,MAAM,CAAA;QAE1E,iDAAiD;QACjD,iEAAiE;QACjE,MAAM,YAAY,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;QAEpE,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,mBAAmB,IAAA,uBAAe,EAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACxG,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,IAAI,UAAU,KAAK,0BAA0B,YAAY,CAAC,SAAS,CAAC,MAAM,aAAa,YAAY,CAAC,UAAU,CAAC,MAAM,WAAW,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAEpM,iEAAiE;QACjE,wFAAwF;QAExF,gFAAgF;QAChF,MAAM,oBAAoB,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7D,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,QAAQ,KAAK,qBAAqB,IAAQ,2BAA2B;YACvE,CAAC,CAAC,QAAQ,KAAK,qBAAqB,IAAQ,iCAAiC;YAC7E,CAAC,CAAC,QAAQ,KAAK,wBAAwB,CAAK,mCAAmC;SAChF,CAAA;QAED,wEAAwE;QACxE,MAAM,kBAAkB,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAEhG,mEAAmE;QACnE,MAAM,kBAAkB,GAAG,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,GAAG,oBAAoB,CAAC,CAAA;QAEhF,wEAAwE;QACxE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAA,iCAAqB,EAAC,kBAAkB,CAAC,CAAA;QAE5G,6CAA6C;QAC7C,MAAM,qBAAqB,GAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAA;QAC1G,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QAClG,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,IAAI,yBAAyB,aAAa,CAAC,MAAM,sBAAsB,qBAAqB,CAAC,IAAI,QAAQ,qBAAqB,CAAC,GAAG,WAAW,qBAAqB,CAAC,MAAM,SAAS,qBAAqB,CAAC,IAAI,GAAG,CAAC,CAAA;QACxP,CAAC;QAED,6DAA6D;QAC7D,qCAAqC;QACrC,MAAM,kBAAkB,GAAG,cAAc,CAAC,oBAAoB,IAAI,kCAAkC,CAAA;QACpG,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;QAE7F,qFAAqF;QACrF,IAAI,iBAAiB,GAAG,gBAAgB,CAAA;QACxC,IAAI,uBAAuB,GAAgC,SAAS,CAAA;QACpE,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAA;QAEpH,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,YAAY,EAAE,2DAA2D,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAElH,iEAAiE;YACjE,MAAM,kBAAkB,GAAG,aAAa,IAAI,cAAc,CAAC,YAAY;gBACrE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3H,CAAC,CAAC,gBAAgB,CAAA;YAEpB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,gBAAgB,GAAG,MAAM,IAAA,kCAAsB,EAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;gBACrF,iBAAiB,GAAG,gBAAgB,CAAC,eAAe,CAAA;gBACpD,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAA;gBACnD,uBAAuB,GAAG,eAAe,CAAA,CAAC,qBAAqB;gBAE/D,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,CAAC,IAAI,UAAU,KAAK,eAAe,kBAAkB,CAAC,MAAM,gBAAgB,kBAAkB,CAAC,MAAM,mBAAmB,aAAa,CAAC,MAAM,SAAS,eAAe,CAAC,iBAAiB,aAAa,eAAe,CAAC,iBAAiB,eAAe,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAA;gBACpU,OAAO,CAAC,GAAG,CAAC,+CAA+C,eAAe,CAAC,oBAAoB,kBAAkB,eAAe,CAAC,qBAAqB,UAAU,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAEjP,kEAAkE;gBAClE,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;gBAClF,iBAAiB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,CAAC,gBAAgB,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,CAAC,IAAI,UAAU,KAAK,uCAAuC,CAAC,CAAA;QAC1G,CAAC;QAED,+CAA+C;QAC/C,kBAAkB,CAAC,IAAI,CAAC,GAAG,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,CAAA;QAEpE,+CAA+C;QAC/C,uDAAuD;QACvD,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA;QAEhF,IAAI,eAAe,EAAE,CAAC;YACpB,cAAc,CAAC,QAAQ,EAAE,iCAAiC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;YAEtF,oDAAoD;YACpD,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAA;YACzD,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,IAAI,EAAE,CAAA;YAE1D,0CAA0C;YAC1C,MAAM,iBAAiB,GAAG,IAAA,wCAAiB,EAAC,KAAK,CAAC,CAAA;YAElD,MAAM,YAAY,GAAG,MAAM,IAAA,sBAAa,EAAC,cAAc,EAAE;gBACvD,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,cAAc;gBACxB,cAAc,EAAE;oBACd,gBAAgB,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBACrD,iBAAiB,EAAE,IAAI;wBACvB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;wBACnC,cAAc,EAAE,gBAAgB,CAAC,cAAc;qBAChD,CAAC,CAAC,CAAC,SAAS;oBACb,WAAW,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;wBAClD,kBAAkB,EAAE,IAAI;wBACxB,OAAO,EAAE,iBAAiB,CAAC,OAAO;qBACnC,CAAC,CAAC,CAAC,SAAS;iBACd;aACF,CAAC,CAAA;YACF,kBAAkB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;YACxD,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,IAAI,UAAU,KAAK,mBAAmB,YAAY,CAAC,UAAU,aAAa,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAA;QACxJ,CAAC;aAAM,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,IAAI,UAAU,KAAK,uCAAuC,CAAC,CAAA;QACnG,CAAC;QAED,8BAA8B;QAC9B,MAAM,qBAAqB,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,CAAA;QAE5E,kGAAkG;QAClG,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;QAE9F,mBAAmB;QACnB,MAAM,qBAAqB,GAAG,cAAc,CAAC,uBAAuB,CAAC,CAAA;QAErE,2BAA2B;QAC3B,MAAM,cAAc,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CAAA;QACnE,MAAM,cAAc,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CAAA;QACnE,MAAM,iBAAiB,GAAG,cAAc,CAAC,QAAQ,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,CAAA;QAEhF,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAE1E,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,OAAO,EAAE,QAAQ,CAAC,GAAG;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,YAAY,EAAE,CAAC,EAAE,4BAA4B;YAC7C,eAAe,EAAE,qBAAqB;YACtC,cAAc;YACd,cAAc;YACd,iBAAiB;YACjB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACpC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,eAAe,EAAE,uBAAuB;SACzC,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,QAAQ,EAAE,gBAAgB,KAAK,EAAE,CAAC,CAAA;QACjD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,eAAgC;IAC9D,4CAA4C;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAA;IAEjD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,wFAAwF;QACxF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACxE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAA;QAE5D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACtC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAA;IAElC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,wCAAwC;QACxC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;YACrB,SAAQ;QACV,CAAC;QAED,2DAA2D;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACtE,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;QAE7C,0DAA0D;QAC1D,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,WAAW,CAAC,MAAM,SAAS;YAC1E,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1B,uCAAuC;QACvC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAC9C,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAC/D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QAEpB,4BAA4B;QAC5B,MAAM,UAAU,GAAkB;YAChC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,aAAa;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,mBAAmB;YAC/C,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,6BAA6B;YACzD,QAAQ,EAAE,eAAe;YACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,aAAa;YACxF,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,aAAa,KAAK,CAAC,MAAM,0BAA0B,WAAW,EAAE;YACjG,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;SACjD,CAAA;QAED,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,8BAA8B,CACrC,eAAgC,EAChC,aAAqB,kCAAkC;IAEvD,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAA;IACjD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAChD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAA;IAElC,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,yFAAyF;QACzF,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,iGAAiG;YACjG,MAAM,YAAY,GAAG,CAAC,CAAgB,EAAU,EAAE;gBAChD,MAAM,IAAI,GAAG,IAAA,0BAAkB,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;gBACpD,IAAI,IAAI,KAAK,aAAa;oBAAE,OAAO,EAAE,CAAA,CAAE,8CAA8C;gBACrF,IAAI,IAAI,KAAK,MAAM;oBAAE,OAAO,CAAC,CAAA,CAAW,wCAAwC;gBAChF,OAAO,CAAC,CAAA,CAAiC,wCAAwC;YACnF,CAAC,CAAA;YACD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;YAClD,IAAI,QAAQ,KAAK,CAAC;gBAAE,OAAO,QAAQ,CAAA;YAEnC,0DAA0D;YAC1D,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YACxE,IAAI,YAAY,KAAK,CAAC;gBAAE,OAAO,YAAY,CAAA;YAE3C,6DAA6D;YAC7D,MAAM,gBAAgB,GAAG,CAAC,CAAgB,EAAU,EAAE;gBACpD,IAAI,CAAC,CAAC,QAAQ,KAAK,kBAAkB;oBAAE,OAAO,EAAE,CAAA;gBAChD,IAAI,CAAC,CAAC,QAAQ,KAAK,qBAAqB;oBAAE,OAAO,CAAC,CAAA;gBAClD,IAAI,CAAC,CAAC,QAAQ,KAAK,eAAe;oBAAE,OAAO,CAAC,CAAA;gBAC5C,IAAI,CAAC,CAAC,QAAQ,KAAK,cAAc;oBAAE,OAAO,CAAC,CAAA;gBAC3C,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY;oBAAE,OAAO,CAAC,CAAA;gBACzC,OAAO,CAAC,CAAA;YACV,CAAC,CAAA;YACD,OAAO,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;QAEF,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;QAEtB,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,KAAK,MAAM,CAAC,MAAM,MAAM,UAAU,wBAAwB,CAAC,CAAA;QACrG,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,0BAA0B,CAAC,eAAgC;IAClE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC7C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAA;IAEpD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,oDAAoD;QACpD,0EAA0E;QAC1E,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC;YACrE,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAE9D,iEAAiE;YACjE,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,cAAc,CAAA;YAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACN,uDAAuD;gBACvD,0BAA0B;gBAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;oBAC3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC;YACD,SAAQ;QACV,CAAC;QAED,8CAA8C;QAC9C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAE9B,wDAAwD;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrB,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrB,CAAC;aAAM,IACL,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/D,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EACrE,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAC5B,eAAgC,EAChC,gBAAuC;IAEvC,yDAAyD;IACzD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAA;IACjD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAChD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,MAAM,GAAoB,EAAE,CAAA;IAElC,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,6CAA6C;QAC7C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAA;QACzE,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAA;QAE1E,wDAAwD;QACxD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC7C,CAAC,CAAC,QAAQ,KAAK,MAAM;YACrB,CAAC,CAAC,CAAC,eAAe,KAAK,sBAAsB;gBAC5C,CAAC,CAAC,eAAe,KAAK,uBAAuB;gBAC7C,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC;gBAC3C,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CACvC,CAAA;QAED,kGAAkG;QAClG,4EAA4E;QAC5E,MAAM,SAAS,GAAG,IAAA,0CAAoB,EAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,mBAAmB,GAAG,SAAS,IAAI,gBAAgB,EAAE,iBAAiB;YAC1E,CAAC,CAAC,IAAA,kDAA4B,EAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,WAAW;YACvE,CAAC,CAAC,KAAK,CAAA;QAET,wEAAwE;QACxE,kFAAkF;QAClF,MAAM,2BAA2B,GAC/B,gBAAgB,EAAE,iBAAiB;YACnC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACjC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAElE,mFAAmF;QACnF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,IAAI,2BAA2B,EAAE,CAAC;YACpF,mCAAmC;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAA;YAE9B,yEAAyE;YACzE,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YAE/E,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;gBACrC,4EAA4E;gBAC5E,gDAAgD;gBAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;oBAC7D,MAAM,MAAM,GAAG,mBAAmB;wBAChC,CAAC,CAAC,mCAAmC;wBACrC,CAAC,CAAC,2BAA2B;4BAC3B,CAAC,CAAC,wCAAwC;4BAC1C,CAAC,CAAC,oBAAoB,CAAA;oBAC1B,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,QAAQ,OAAO,MAAM,EAAE,CAAC,CAAA;oBACtF,SAAQ,CAAC,oBAAoB;gBAC/B,CAAC;gBAED,0CAA0C;gBAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;QAC9B,CAAC;QAED,6BAA6B;QAC7B,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC5C,CAAC,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtE,CAAA;QACD,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC/C,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CACzE,CAAA;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,yEAAyE;YACzE,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC5C,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC9C,CAAA;YACD,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1C,CAAC,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CACjD,CAAA;YAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,4DAA4D;gBAC5D,kDAAkD;gBAClD,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAA;gBAC7B,qCAAqC;gBACrC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC;wBACV,GAAG,IAAI;wBACP,QAAQ,EAAE,KAAK;wBACf,eAAe,EAAE,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,2DAA2D,CAAC,IAAI,EAAE;qBACjH,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,eAAgC;IACtD,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACxE,IAAI,YAAY,KAAK,CAAC;YAAE,OAAO,YAAY,CAAA;QAE3C,+BAA+B;QAC/B,OAAO,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,KAAK,GAA2B;QACpC,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;KACR,CAAA;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACxC,MAAM,KAAK,GAA2B;QACpC,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,GAAG,EAAE,CAAC;KACP,CAAA;IACD,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,eAAgC;IAC7D,MAAM,MAAM,GAAmB,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;IAEnF,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;QACzB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,eAAgC;IAC7D,MAAM,MAAM,GAAmB,EAAE,CAAA;IAEjC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAiC,CAAA;QACvD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,kCAAkC,CAAC,eAAgC;IAKjF,MAAM,cAAc,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAA;IAC7D,MAAM,cAAc,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAA;IAC7D,MAAM,iBAAiB,GAAG,cAAc,CAAC,QAAQ,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,CAAA;IAEhF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAA;AAC9D,CAAC;AAED,gCAAgC;AAChC,0CAAuB;AACvB,mCAAwC;AAA/B,uGAAA,aAAa,OAAA;AACtB,mCAAwC;AAA/B,uGAAA,aAAa,OAAA;AACtB,mCAAwC;AAA/B,uGAAA,aAAa,OAAA;AACtB,2EAA0F;AAAjF,8HAAA,mBAAmB,OAAA;AAC5B,gDAA0G;AAAjG,mHAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layer1/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAQvD,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,UAAU,CAAA;AAMjB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAA;IAChB,uDAAuD;IACvD,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,aAAa,EAAE,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAgG5E;AA8BD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layer1/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAQvD,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,UAAU,CAAA;AAMjB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAA;IAChB,uDAAuD;IACvD,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,aAAa,EAAE,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,KAAK,EAAE,WAAW,CAAA;CACnB;AAkDD,wBAAsB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CA8D5E;AA8BD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA"}
@@ -16,6 +16,46 @@ const urls_1 = require("./urls");
16
16
  const weak_crypto_1 = require("./weak-crypto");
17
17
  const tiers_1 = require("../tiers");
18
18
  const path_exclusions_1 = require("../utils/path-exclusions");
19
+ // Process a single file through all Layer 1 detectors
20
+ function processFileLayer1(file) {
21
+ const stats = {
22
+ known_secrets: 0,
23
+ weak_crypto: 0,
24
+ sensitive_urls: 0,
25
+ entropy: 0,
26
+ config_audit: 0,
27
+ file_flags: 0,
28
+ ai_comments: 0,
29
+ };
30
+ const entropyFindings = (0, entropy_1.detectHighEntropyStrings)(file.content, file.path);
31
+ const patternFindings = (0, patterns_1.detectKnownPatterns)(file.content, file.path);
32
+ const configFindings = (0, config_audit_1.auditConfiguration)(file.content, file.path);
33
+ const fileFlags = (0, file_flags_1.detectDangerousFiles)(file.content, file.path);
34
+ const commentFindings = (0, comments_1.detectAICommentPatterns)(file.content, file.path);
35
+ const urlFindings = (0, urls_1.detectSensitiveURLs)(file.content, file.path);
36
+ const cryptoFindings = (0, weak_crypto_1.detectWeakCrypto)(file.content, file.path);
37
+ stats.entropy = entropyFindings.length;
38
+ stats.known_secrets = patternFindings.length;
39
+ stats.config_audit = configFindings.length;
40
+ stats.file_flags = fileFlags.length;
41
+ stats.ai_comments = commentFindings.length;
42
+ stats.sensitive_urls = urlFindings.length;
43
+ stats.weak_crypto = cryptoFindings.length;
44
+ return {
45
+ findings: [
46
+ ...entropyFindings,
47
+ ...patternFindings,
48
+ ...configFindings,
49
+ ...fileFlags,
50
+ ...commentFindings,
51
+ ...urlFindings,
52
+ ...cryptoFindings,
53
+ ],
54
+ stats,
55
+ };
56
+ }
57
+ // Parallel batch size for Layer 1 processing
58
+ const LAYER1_PARALLEL_BATCH_SIZE = 50;
19
59
  async function runLayer1Scan(files) {
20
60
  const startTime = Date.now();
21
61
  const vulnerabilities = [];
@@ -29,40 +69,23 @@ async function runLayer1Scan(files) {
29
69
  file_flags: 0,
30
70
  ai_comments: 0,
31
71
  };
32
- for (const file of files) {
33
- // Run all Layer 1 detectors and track raw counts
34
- const entropyFindings = (0, entropy_1.detectHighEntropyStrings)(file.content, file.path);
35
- const patternFindings = (0, patterns_1.detectKnownPatterns)(file.content, file.path);
36
- const configFindings = (0, config_audit_1.auditConfiguration)(file.content, file.path);
37
- const fileFlags = (0, file_flags_1.detectDangerousFiles)(file.content, file.path);
38
- const commentFindings = (0, comments_1.detectAICommentPatterns)(file.content, file.path);
39
- const urlFindings = (0, urls_1.detectSensitiveURLs)(file.content, file.path);
40
- const cryptoFindings = (0, weak_crypto_1.detectWeakCrypto)(file.content, file.path);
41
- rawStats.entropy += entropyFindings.length;
42
- rawStats.known_secrets += patternFindings.length;
43
- rawStats.config_audit += configFindings.length;
44
- rawStats.file_flags += fileFlags.length;
45
- rawStats.ai_comments += commentFindings.length;
46
- rawStats.sensitive_urls += urlFindings.length;
47
- rawStats.weak_crypto += cryptoFindings.length;
48
- vulnerabilities.push(...entropyFindings, ...patternFindings, ...configFindings, ...fileFlags, ...commentFindings, ...urlFindings, ...cryptoFindings);
72
+ // Process files in parallel batches for better performance on large codebases
73
+ for (let i = 0; i < files.length; i += LAYER1_PARALLEL_BATCH_SIZE) {
74
+ const batch = files.slice(i, i + LAYER1_PARALLEL_BATCH_SIZE);
75
+ const results = await Promise.all(batch.map(file => Promise.resolve(processFileLayer1(file))));
76
+ for (const result of results) {
77
+ vulnerabilities.push(...result.findings);
78
+ // Accumulate stats
79
+ for (const [key, value] of Object.entries(result.stats)) {
80
+ rawStats[key] += value;
81
+ }
82
+ }
49
83
  }
50
84
  // Deduplicate findings (same line might be caught by multiple detectors)
51
85
  const dedupedVulnerabilities = deduplicateFindings(vulnerabilities);
52
86
  // Apply path exclusions to filter out findings in test/seed/example files
53
87
  const { kept: uniqueVulnerabilities, suppressed } = (0, path_exclusions_1.filterFindingsByPath)(dedupedVulnerabilities);
54
- // Log suppressed findings
55
- if (suppressed.length > 0) {
56
- const byReason = {};
57
- for (const s of suppressed) {
58
- const reason = s.reason || 'unknown';
59
- byReason[reason] = (byReason[reason] || 0) + 1;
60
- }
61
- console.log(`[Layer 1] Suppressed ${suppressed.length} findings in test/seed/example files:`);
62
- for (const [reason, count] of Object.entries(byReason)) {
63
- console.log(` - ${reason}: ${count}`);
64
- }
65
- }
88
+ // Track suppressed findings (debug info available in stats)
66
89
  // Compute deduped counts per category
67
90
  const dedupedStats = {};
68
91
  for (const vuln of uniqueVulnerabilities) {
@@ -71,15 +94,7 @@ async function runLayer1Scan(files) {
71
94
  }
72
95
  // Compute tier breakdown (all Layer 1 findings have layer: 1)
73
96
  const tierStats = (0, tiers_1.computeTierStats)(uniqueVulnerabilities.map(v => ({ category: v.category, layer: 1 })));
74
- // Log heuristic breakdown with tier info
75
- console.log('[Layer 1] Heuristic breakdown (raw findings before dedupe):');
76
- for (const [name, count] of Object.entries(rawStats)) {
77
- if (count > 0) {
78
- const tier = (0, tiers_1.getLayer1DetectorTier)(name);
79
- console.log(` - ${name}: ${count} (${tier})`);
80
- }
81
- }
82
- console.log(`[Layer 1] Tier breakdown (after dedupe): ${(0, tiers_1.formatTierStats)(tierStats)}`);
97
+ // Heuristic breakdown available in stats.raw and stats.tiers for debugging
83
98
  return {
84
99
  vulnerabilities: uniqueVulnerabilities,
85
100
  filesScanned: files.length,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layer1/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layer1/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layer2/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAuBtE,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC9C,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAA;IAChB,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,aAAa,EAAE,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAuNvB;AAoKD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layer2/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAuBtE,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC9C,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAA;IAChB,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,aAAa,EAAE,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,KAAK,EAAE,WAAW,CAAA;CACnB;AAmHD,wBAAsB,aAAa,CACjC,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CA+IvB;AAoKD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA"}
@@ -29,6 +29,90 @@ const ai_endpoint_protection_1 = require("./ai-endpoint-protection");
29
29
  const ai_schema_validation_1 = require("./ai-schema-validation");
30
30
  // Tier system imports
31
31
  const tiers_1 = require("../tiers");
32
+ // Process a single file through all Layer 2 detectors
33
+ function processFileLayer2(file, options, authHelperContext) {
34
+ const stats = {
35
+ variables: 0,
36
+ logicGates: 0,
37
+ dangerousFunctions: 0,
38
+ riskyImports: 0,
39
+ authAntipatterns: 0,
40
+ frameworkIssues: 0,
41
+ aiFingerprints: 0,
42
+ dataExposure: 0,
43
+ byokPatterns: 0,
44
+ promptHygiene: 0,
45
+ executionSinks: 0,
46
+ agentTools: 0,
47
+ ragSafety: 0,
48
+ endpointProtection: 0,
49
+ schemaValidation: 0,
50
+ };
51
+ // Skip non-code files
52
+ if (!isCodeFile(file.path)) {
53
+ return { findings: [], stats };
54
+ }
55
+ // Run all detectors
56
+ const variableFindings = (0, variables_1.detectSensitiveVariables)(file.content, file.path);
57
+ const logicFindings = (0, logic_gates_1.detectLogicGates)(file.content, file.path);
58
+ const dangerousFuncFindings = (0, dangerous_functions_1.detectDangerousFunctions)(file.content, file.path);
59
+ const riskyImportFindings = (0, risky_imports_1.detectRiskyImports)(file.content, file.path);
60
+ const authFindings = (0, auth_antipatterns_1.detectAuthAntipatterns)(file.content, file.path, {
61
+ middlewareConfig: options.middlewareConfig,
62
+ authHelpers: authHelperContext,
63
+ fileAuthImports: options.fileAuthImports,
64
+ });
65
+ const frameworkFindings = (0, framework_checks_1.detectFrameworkIssues)(file.content, file.path);
66
+ const aiFindings = (0, ai_fingerprinting_1.detectAIFingerprints)(file.content, file.path);
67
+ const dataExposureFindings = (0, data_exposure_1.detectDataExposure)(file.content, file.path);
68
+ const byokFindings = (0, byok_patterns_1.detectBYOKPatterns)(file.content, file.path, options.middlewareConfig);
69
+ const promptHygieneFindings = (0, ai_prompt_hygiene_1.detectAIPromptHygiene)(file.content, file.path);
70
+ const executionSinkFindings = (0, ai_execution_sinks_1.detectAIExecutionSinks)(file.content, file.path);
71
+ const agentToolFindings = (0, ai_agent_tools_1.detectAIAgentTools)(file.content, file.path);
72
+ const ragSafetyFindings = (0, ai_rag_safety_1.detectRAGSafetyIssues)(file.content, file.path);
73
+ const endpointProtectionFindings = (0, ai_endpoint_protection_1.detectAIEndpointProtection)(file.content, file.path, {
74
+ middlewareConfig: options.middlewareConfig,
75
+ });
76
+ const schemaValidationFindings = (0, ai_schema_validation_1.detectAISchemaValidation)(file.content, file.path);
77
+ // Update stats
78
+ stats.variables = variableFindings.length;
79
+ stats.logicGates = logicFindings.length;
80
+ stats.dangerousFunctions = dangerousFuncFindings.length;
81
+ stats.riskyImports = riskyImportFindings.length;
82
+ stats.authAntipatterns = authFindings.length;
83
+ stats.frameworkIssues = frameworkFindings.length;
84
+ stats.aiFingerprints = aiFindings.length;
85
+ stats.dataExposure = dataExposureFindings.length;
86
+ stats.byokPatterns = byokFindings.length;
87
+ stats.promptHygiene = promptHygieneFindings.length;
88
+ stats.executionSinks = executionSinkFindings.length;
89
+ stats.agentTools = agentToolFindings.length;
90
+ stats.ragSafety = ragSafetyFindings.length;
91
+ stats.endpointProtection = endpointProtectionFindings.length;
92
+ stats.schemaValidation = schemaValidationFindings.length;
93
+ return {
94
+ findings: [
95
+ ...variableFindings,
96
+ ...logicFindings,
97
+ ...dangerousFuncFindings,
98
+ ...riskyImportFindings,
99
+ ...authFindings,
100
+ ...frameworkFindings,
101
+ ...aiFindings,
102
+ ...dataExposureFindings,
103
+ ...byokFindings,
104
+ ...promptHygieneFindings,
105
+ ...executionSinkFindings,
106
+ ...agentToolFindings,
107
+ ...ragSafetyFindings,
108
+ ...endpointProtectionFindings,
109
+ ...schemaValidationFindings,
110
+ ],
111
+ stats,
112
+ };
113
+ }
114
+ // Parallel batch size for Layer 2 processing
115
+ const LAYER2_PARALLEL_BATCH_SIZE = 50;
32
116
  async function runLayer2Scan(files, options = {}) {
33
117
  const startTime = Date.now();
34
118
  const vulnerabilities = [];
@@ -45,57 +129,22 @@ async function runLayer2Scan(files, options = {}) {
45
129
  promptHygiene: 0,
46
130
  executionSinks: 0,
47
131
  agentTools: 0,
48
- // M5: New AI-era detectors
49
132
  ragSafety: 0,
50
133
  endpointProtection: 0,
51
134
  schemaValidation: 0,
52
135
  };
53
136
  // Detect auth helpers once for all files (if not already provided)
54
137
  const authHelperContext = options.authHelperContext || (0, auth_helper_detector_1.detectAuthHelpers)(files);
55
- for (const file of files) {
56
- // Only scan code files for Layer 2 (skip configs, etc.)
57
- if (isCodeFile(file.path)) {
58
- // Existing scanners
59
- const variableFindings = (0, variables_1.detectSensitiveVariables)(file.content, file.path);
60
- const logicFindings = (0, logic_gates_1.detectLogicGates)(file.content, file.path);
61
- // New Layer 2 scanners
62
- const dangerousFuncFindings = (0, dangerous_functions_1.detectDangerousFunctions)(file.content, file.path);
63
- const riskyImportFindings = (0, risky_imports_1.detectRiskyImports)(file.content, file.path);
64
- const authFindings = (0, auth_antipatterns_1.detectAuthAntipatterns)(file.content, file.path, {
65
- middlewareConfig: options.middlewareConfig,
66
- authHelpers: authHelperContext,
67
- fileAuthImports: options.fileAuthImports,
68
- });
69
- const frameworkFindings = (0, framework_checks_1.detectFrameworkIssues)(file.content, file.path);
70
- const aiFindings = (0, ai_fingerprinting_1.detectAIFingerprints)(file.content, file.path);
71
- const dataExposureFindings = (0, data_exposure_1.detectDataExposure)(file.content, file.path);
72
- const byokFindings = (0, byok_patterns_1.detectBYOKPatterns)(file.content, file.path, options.middlewareConfig);
73
- // Story B: AI-specific detection (prompt hygiene, execution sinks, agent tools)
74
- const promptHygieneFindings = (0, ai_prompt_hygiene_1.detectAIPromptHygiene)(file.content, file.path);
75
- const executionSinkFindings = (0, ai_execution_sinks_1.detectAIExecutionSinks)(file.content, file.path);
76
- const agentToolFindings = (0, ai_agent_tools_1.detectAIAgentTools)(file.content, file.path);
77
- // M5: New AI-era detectors
78
- const ragSafetyFindings = (0, ai_rag_safety_1.detectRAGSafetyIssues)(file.content, file.path);
79
- const endpointProtectionFindings = (0, ai_endpoint_protection_1.detectAIEndpointProtection)(file.content, file.path, {
80
- middlewareConfig: options.middlewareConfig,
81
- });
82
- const schemaValidationFindings = (0, ai_schema_validation_1.detectAISchemaValidation)(file.content, file.path);
83
- stats.variables += variableFindings.length;
84
- stats.logicGates += logicFindings.length;
85
- stats.dangerousFunctions += dangerousFuncFindings.length;
86
- stats.riskyImports += riskyImportFindings.length;
87
- stats.authAntipatterns += authFindings.length;
88
- stats.frameworkIssues += frameworkFindings.length;
89
- stats.aiFingerprints += aiFindings.length;
90
- stats.dataExposure += dataExposureFindings.length;
91
- stats.byokPatterns += byokFindings.length;
92
- stats.promptHygiene += promptHygieneFindings.length;
93
- stats.executionSinks += executionSinkFindings.length;
94
- stats.agentTools += agentToolFindings.length;
95
- stats.ragSafety += ragSafetyFindings.length;
96
- stats.endpointProtection += endpointProtectionFindings.length;
97
- stats.schemaValidation += schemaValidationFindings.length;
98
- vulnerabilities.push(...variableFindings, ...logicFindings, ...dangerousFuncFindings, ...riskyImportFindings, ...authFindings, ...frameworkFindings, ...aiFindings, ...dataExposureFindings, ...byokFindings, ...promptHygieneFindings, ...executionSinkFindings, ...agentToolFindings, ...ragSafetyFindings, ...endpointProtectionFindings, ...schemaValidationFindings);
138
+ // Process files in parallel batches for better performance on large codebases
139
+ for (let i = 0; i < files.length; i += LAYER2_PARALLEL_BATCH_SIZE) {
140
+ const batch = files.slice(i, i + LAYER2_PARALLEL_BATCH_SIZE);
141
+ const results = await Promise.all(batch.map(file => Promise.resolve(processFileLayer2(file, options, authHelperContext))));
142
+ for (const result of results) {
143
+ vulnerabilities.push(...result.findings);
144
+ // Accumulate stats
145
+ for (const [key, value] of Object.entries(result.stats)) {
146
+ stats[key] += value;
147
+ }
99
148
  }
100
149
  }
101
150
  // Deduplicate findings
@@ -120,17 +169,7 @@ async function runLayer2Scan(files, options = {}) {
120
169
  ];
121
170
  }
122
171
  const { kept: uniqueVulnerabilities, suppressed } = (0, path_exclusions_1.filterFindingsByPath)(dedupedVulnerabilities, Object.keys(exclusionConfig).length > 0 ? exclusionConfig : undefined);
123
- // Log suppressed findings
124
- if (suppressed.length > 0) {
125
- console.log(`[Layer 2] Suppressed ${suppressed.length} findings in test/seed/example files:`);
126
- const byReason = new Map();
127
- for (const { reason } of suppressed) {
128
- byReason.set(reason || 'unknown', (byReason.get(reason || 'unknown') || 0) + 1);
129
- }
130
- for (const [reason, count] of byReason) {
131
- console.log(` - ${reason}: ${count}`);
132
- }
133
- }
172
+ // Track suppressed findings (debug info available in stats)
134
173
  // Build raw stats map for logging
135
174
  const rawStats = {
136
175
  sensitive_variables: stats.variables,
@@ -182,16 +221,7 @@ async function runLayer2Scan(files, options = {}) {
182
221
  ai_endpoint_protection: 'ai_endpoint_protection',
183
222
  ai_schema_validation: 'ai_schema_validation',
184
223
  };
185
- // Log heuristic breakdown (raw findings before dedupe) with tier info
186
- console.log('[Layer 2] Heuristic breakdown (raw findings before dedupe):');
187
- for (const [name, count] of Object.entries(rawStats)) {
188
- if (count > 0) {
189
- const detectorName = detectorNameMap[name];
190
- const tier = detectorName ? (0, tiers_1.getLayer2DetectorTier)(detectorName) : 'unknown';
191
- console.log(` - ${name}: ${count} (${tier})`);
192
- }
193
- }
194
- console.log(`[Layer 2] Tier breakdown (after dedupe): ${(0, tiers_1.formatTierStats)(tierStats)}`);
224
+ // Heuristic breakdown available in stats.raw and stats.tiers for debugging
195
225
  return {
196
226
  vulnerabilities: uniqueVulnerabilities,
197
227
  filesScanned: files.filter(f => isCodeFile(f.path)).length,