@dollhousemcp/mcp-server 2.0.11 → 2.0.12-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/config/ConfigManager.d.ts +34 -0
  3. package/dist/config/ConfigManager.d.ts.map +1 -1
  4. package/dist/config/ConfigManager.js +46 -1
  5. package/dist/config/env.d.ts +18 -0
  6. package/dist/config/env.d.ts.map +1 -1
  7. package/dist/config/env.js +89 -2
  8. package/dist/di/Container.d.ts +1 -0
  9. package/dist/di/Container.d.ts.map +1 -1
  10. package/dist/di/Container.js +38 -2
  11. package/dist/elements/agents/AgentManager.js +2 -2
  12. package/dist/generated/version.d.ts +2 -2
  13. package/dist/generated/version.d.ts.map +1 -1
  14. package/dist/generated/version.js +3 -3
  15. package/dist/handlers/mcp-aql/GatekeeperSession.d.ts.map +1 -1
  16. package/dist/handlers/mcp-aql/GatekeeperSession.js +3 -2
  17. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  18. package/dist/handlers/mcp-aql/MCPAQLHandler.js +11 -3
  19. package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
  20. package/dist/handlers/mcp-aql/OperationSchema.js +11 -6
  21. package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
  22. package/dist/handlers/mcp-aql/policies/ToolClassification.js +8 -1
  23. package/dist/index.js +53 -3
  24. package/dist/security/InputNormalizer.d.ts +4 -6
  25. package/dist/security/InputNormalizer.d.ts.map +1 -1
  26. package/dist/security/InputNormalizer.js +10 -16
  27. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  28. package/dist/security/audit/config/suppressions.js +26 -1
  29. package/dist/security/constants.d.ts +7 -0
  30. package/dist/security/constants.d.ts.map +1 -1
  31. package/dist/security/constants.js +10 -1
  32. package/dist/security/contentValidator.d.ts.map +1 -1
  33. package/dist/security/contentValidator.js +14 -6
  34. package/dist/security/encryption/PatternEncryptor.d.ts.map +1 -1
  35. package/dist/security/encryption/PatternEncryptor.js +18 -10
  36. package/dist/security/securityMonitor.d.ts +1 -1
  37. package/dist/security/securityMonitor.d.ts.map +1 -1
  38. package/dist/security/securityMonitor.js +1 -1
  39. package/dist/security/tokenManager.d.ts +18 -2
  40. package/dist/security/tokenManager.d.ts.map +1 -1
  41. package/dist/security/tokenManager.js +47 -15
  42. package/dist/security/validators/unicodeValidator.d.ts +4 -5
  43. package/dist/security/validators/unicodeValidator.d.ts.map +1 -1
  44. package/dist/security/validators/unicodeValidator.js +19 -20
  45. package/dist/services/VerificationNotifier.d.ts.map +1 -1
  46. package/dist/services/VerificationNotifier.js +15 -13
  47. package/dist/services/validation/GenericElementValidator.js +5 -5
  48. package/dist/web/console/IngestRoutes.d.ts +14 -2
  49. package/dist/web/console/IngestRoutes.d.ts.map +1 -1
  50. package/dist/web/console/IngestRoutes.js +69 -5
  51. package/dist/web/console/LeaderElection.d.ts +37 -3
  52. package/dist/web/console/LeaderElection.d.ts.map +1 -1
  53. package/dist/web/console/LeaderElection.js +67 -7
  54. package/dist/web/console/LeaderForwardingSink.d.ts +19 -3
  55. package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -1
  56. package/dist/web/console/LeaderForwardingSink.js +44 -9
  57. package/dist/web/console/PromotionManager.d.ts +29 -0
  58. package/dist/web/console/PromotionManager.d.ts.map +1 -0
  59. package/dist/web/console/PromotionManager.js +94 -0
  60. package/dist/web/console/SessionNames.d.ts +7 -0
  61. package/dist/web/console/SessionNames.d.ts.map +1 -1
  62. package/dist/web/console/SessionNames.js +10 -1
  63. package/dist/web/console/UnifiedConsole.d.ts +26 -1
  64. package/dist/web/console/UnifiedConsole.d.ts.map +1 -1
  65. package/dist/web/console/UnifiedConsole.js +143 -20
  66. package/dist/web/portDiscovery.d.ts +4 -3
  67. package/dist/web/portDiscovery.d.ts.map +1 -1
  68. package/dist/web/portDiscovery.js +7 -5
  69. package/dist/web/public/app.js +35 -18
  70. package/dist/web/public/consoleAuth.js +152 -0
  71. package/dist/web/public/index.html +243 -9
  72. package/dist/web/public/logs.js +1 -1
  73. package/dist/web/public/metrics.js +3 -3
  74. package/dist/web/public/permissions.js +1 -1
  75. package/dist/web/public/security.css +396 -0
  76. package/dist/web/public/security.js +393 -0
  77. package/dist/web/public/sessions.css +54 -4
  78. package/dist/web/public/sessions.js +46 -6
  79. package/dist/web/public/setup.css +439 -0
  80. package/dist/web/public/setup.js +490 -18
  81. package/dist/web/public/styles.css +10 -0
  82. package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
  83. package/dist/web/routes/permissionRoutes.js +8 -3
  84. package/dist/web/routes/setupRoutes.d.ts +4 -0
  85. package/dist/web/routes/setupRoutes.d.ts.map +1 -1
  86. package/dist/web/routes/setupRoutes.js +418 -7
  87. package/dist/web/routes.d.ts.map +1 -1
  88. package/dist/web/routes.js +9 -5
  89. package/dist/web/server.d.ts +49 -3
  90. package/dist/web/server.d.ts.map +1 -1
  91. package/dist/web/server.js +282 -82
  92. package/package.json +11 -2
  93. package/server.json +2 -2
@@ -20,7 +20,7 @@
20
20
  * // At the validation boundary (GenericElementValidator)
21
21
  * const normalized = InputNormalizer.normalize(data);
22
22
  *
23
- * if (normalized.hasCriticalIssues) {
23
+ * if (normalized.hasHighOrCriticalIssues) {
24
24
  * return ValidatorHelpers.fail(normalized.errors);
25
25
  * }
26
26
  *
@@ -33,6 +33,7 @@
33
33
  */
34
34
  import { UnicodeValidator } from './validators/unicodeValidator.js';
35
35
  import { SecurityMonitor } from './securityMonitor.js';
36
+ import { escalateSeverity } from './constants.js';
36
37
  /**
37
38
  * InputNormalizer - Recursively normalizes all string values in an object
38
39
  *
@@ -86,7 +87,7 @@ export class InputNormalizer {
86
87
  issuesByPath.set(currentPath, unicodeResult.detectedIssues);
87
88
  // Categorize by severity
88
89
  if (unicodeResult.severity) {
89
- maxSeverity = this.escalateSeverity(maxSeverity, unicodeResult.severity);
90
+ maxSeverity = escalateSeverity(maxSeverity, unicodeResult.severity);
90
91
  if (unicodeResult.severity === 'critical' || unicodeResult.severity === 'high') {
91
92
  errors.push(...pathIssues);
92
93
  }
@@ -117,11 +118,12 @@ export class InputNormalizer {
117
118
  };
118
119
  // Normalize the input
119
120
  const normalizedData = normalizeValue(input, path);
120
- // Calculate aggregate status
121
+ // Calculate aggregate status (#1782-6: separate critical-only from high+critical)
121
122
  const hasIssues = errors.length > 0 || warnings.length > 0;
122
- const hasCriticalIssues = maxSeverity === 'critical' || maxSeverity === 'high';
123
- // Log if critical issues detected
124
- if (hasCriticalIssues) {
123
+ const hasCriticalIssues = maxSeverity === 'critical';
124
+ const hasHighOrCriticalIssues = maxSeverity === 'critical' || maxSeverity === 'high';
125
+ // Log if high or critical issues detected
126
+ if (hasHighOrCriticalIssues) {
125
127
  SecurityMonitor.logSecurityEvent({
126
128
  type: 'UNICODE_VALIDATION_ERROR',
127
129
  severity: maxSeverity === 'critical' ? 'CRITICAL' : 'HIGH',
@@ -133,21 +135,13 @@ export class InputNormalizer {
133
135
  data: normalizedData,
134
136
  hasIssues,
135
137
  hasCriticalIssues,
138
+ hasHighOrCriticalIssues,
136
139
  errors,
137
140
  warnings,
138
141
  issuesByPath,
139
142
  maxSeverity
140
143
  };
141
144
  }
142
- /**
143
- * Escalate severity level (higher severity takes precedence)
144
- */
145
- static escalateSeverity(current, newSeverity) {
146
- const severityLevels = { low: 1, medium: 2, high: 3, critical: 4 };
147
- const currentLevel = current ? severityLevels[current] : 0;
148
- const newLevel = severityLevels[newSeverity];
149
- return newLevel > currentLevel ? newSeverity : (current || 'low');
150
- }
151
145
  /**
152
146
  * Quick check if input needs normalization (has suspicious Unicode)
153
147
  *
@@ -170,4 +164,4 @@ export class InputNormalizer {
170
164
  return false;
171
165
  }
172
166
  }
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXROb3JtYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L0lucHV0Tm9ybWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFzQnZEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkc7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFjLEtBQVEsRUFBRSxPQUFlLEdBQUc7UUFDeEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUNqRCxJQUFJLFdBQStELENBQUM7UUFFcEUseUNBQXlDO1FBQ3pDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYyxFQUFFLFdBQW1CLEVBQVcsRUFBRTtZQUN0RSx3QkFBd0I7WUFDeEIsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsdURBQXVEO1lBQ3ZELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFeEQsOEJBQThCO2dCQUM5QixJQUFJLGFBQWEsQ0FBQyxjQUFjLElBQUksYUFBYSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzVFLE1BQU0sVUFBVSxHQUFHLGFBQWEs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InNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW5wdXROb3JtYWxpemVyIC0gSW5kdXN0cnktc3RhbmRhcmQgaW5wdXQgbm9ybWFsaXphdGlvbiBhdCB0aGUgYm91bmRhcnlcbiAqXG4gKiBBcmNoaXRlY3R1cmUgUGF0dGVybjogRGVmZW5zZSBpbiBEZXB0aCAtIE5vcm1hbGl6ZSBPbmNlIGF0IEVudHJ5IFBvaW50XG4gKlxuICogVGhpcyB1dGlsaXR5IGVuZm9yY2VzIHRoZSBwcmluY2lwbGUgb2YgXCJub3JtYWxpemUgYXQgdGhlIGJvdW5kYXJ5XCIgZm9yIHNlY3VyaXR5OlxuICogLSBSZWN1cnNpdmVseSBub3JtYWxpemVzIEFMTCBzdHJpbmcgdmFsdWVzIGluIGlucHV0IG9iamVjdHNcbiAqIC0gVXNlcyBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSgpIGFzIHRoZSBzaW5nbGUgbm9ybWFsaXphdGlvbiBpbXBsZW1lbnRhdGlvblxuICogLSBSZXR1cm5zIG5vcm1hbGl6ZWQgb2JqZWN0ICsgYWdncmVnYXRlZCBzZWN1cml0eSBpc3N1ZXNcbiAqIC0gVmFsaWRhdG9ycyByZWNlaXZlIGNsZWFuLCBwcmUtbm9ybWFsaXplZCBkYXRhXG4gKlxuICogU2VjdXJpdHkgQmVuZWZpdHM6XG4gKiAtIFNpbmdsZSBub3JtYWxpemF0aW9uIHBvaW50IChubyBzY2F0dGVyZWQgdmFsaWRhdGVDb250ZW50IGNhbGxzKVxuICogLSBDYW4ndCBmb3JnZXQgdG8gbm9ybWFsaXplIGEgZmllbGRcbiAqIC0gU2VwYXJhdGlvbiBvZiBjb25jZXJucyAobm9ybWFsaXphdGlvbiB2cyB2YWxpZGF0aW9uKVxuICogLSBFYXNpZXIgdG8gYXVkaXQgYW5kIG1haW50YWluXG4gKlxuICogVXNhZ2U6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBBdCB0aGUgdmFsaWRhdGlvbiBib3VuZGFyeSAoR2VuZXJpY0VsZW1lbnRWYWxpZGF0b3IpXG4gKiBjb25zdCBub3JtYWxpemVkID0gSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZShkYXRhKTtcbiAqXG4gKiBpZiAobm9ybWFsaXplZC5oYXNDcml0aWNhbElzc3Vlcykge1xuICogICByZXR1cm4gVmFsaWRhdG9ySGVscGVycy5mYWlsKG5vcm1hbGl6ZWQuZXJyb3JzKTtcbiAqIH1cbiAqXG4gKiAvLyBOb3cgdmFsaWRhdGUgdGhlIG5vcm1hbGl6ZWQgZGF0YVxuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy52YWxpZGF0ZUZpZWxkcyhub3JtYWxpemVkLmRhdGEpO1xuICogYGBgXG4gKlxuICogQHNlZSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSgpIC0gQ29yZSBub3JtYWxpemF0aW9uIGltcGxlbWVudGF0aW9uXG4gKiBAc2VlIEdlbmVyaWNFbGVtZW50VmFsaWRhdG9yIC0gVXNlcyB0aGlzIGF0IHRoZSBib3VuZGFyeVxuICovXG5cbmltcG9ydCB7IFVuaWNvZGVWYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRvcnMvdW5pY29kZVZhbGlkYXRvci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuL3NlY3VyaXR5TW9uaXRvci5qcyc7XG5cbi8qKlxuICogUmVzdWx0IGZyb20gaW5wdXQgbm9ybWFsaXphdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vcm1hbGl6YXRpb25SZXN1bHQ8VCA9IHVua25vd24+IHtcbiAgLyoqIFRoZSBub3JtYWxpemVkIGRhdGEgc3RydWN0dXJlIHdpdGggYWxsIHN0cmluZ3Mgbm9ybWFsaXplZCAqL1xuICBkYXRhOiBUO1xuICAvKiogV2hldGhlciBub3JtYWxpemF0aW9uIGRldGVjdGVkIGFueSBpc3N1ZXMgKi9cbiAgaGFzSXNzdWVzOiBib29sZWFuO1xuICAvKiogV2hldGhlciBjcml0aWNhbCBpc3N1ZXMgd2VyZSBkZXRlY3RlZCB0aGF0IHNob3VsZCBmYWlsIHZhbGlkYXRpb24gKi9cbiAgaGFzQ3JpdGljYWxJc3N1ZXM6IGJvb2xlYW47XG4gIC8qKiBBbGwgZXJyb3JzIGRldGVjdGVkIGR1cmluZyBub3JtYWxpemF0aW9uIChjcml0aWNhbCBpc3N1ZXMpICovXG4gIGVycm9yczogc3RyaW5nW107XG4gIC8qKiBBbGwgd2FybmluZ3MgZGV0ZWN0ZWQgZHVyaW5nIG5vcm1hbGl6YXRpb24gKG5vbi1jcml0aWNhbCBpc3N1ZXMpICovXG4gIHdhcm5pbmdzOiBzdHJpbmdbXTtcbiAgLyoqIERldGFpbGVkIGlzc3VlcyBieSBwYXRoIChmb3IgZGVidWdnaW5nKSAqL1xuICBpc3N1ZXNCeVBhdGg6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgLyoqIEhpZ2hlc3Qgc2V2ZXJpdHkgbGV2ZWwgZGV0ZWN0ZWQgKi9cbiAgbWF4U2V2ZXJpdHk/OiAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ2NyaXRpY2FsJztcbn1cblxuLyoqXG4gKiBJbnB1dE5vcm1hbGl6ZXIgLSBSZWN1cnNpdmVseSBub3JtYWxpemVzIGFsbCBzdHJpbmcgdmFsdWVzIGluIGFuIG9iamVjdFxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjZW50cmFsaXplZCwgcmVjdXJzaXZlIG5vcm1hbGl6YXRpb24gdXRpbGl0eSB0aGF0OlxuICogLSBXYWxrcyBvYmplY3QvYXJyYXkgc3RydWN0dXJlcyByZWN1cnNpdmVseVxuICogLSBOb3JtYWxpemVzIGV2ZXJ5IHN0cmluZyB2YWx1ZSB1c2luZyBVbmljb2RlVmFsaWRhdG9yXG4gKiAtIEFnZ3JlZ2F0ZXMgc2VjdXJpdHkgaXNzdWVzIGFjcm9zcyBhbGwgZmllbGRzXG4gKiAtIFByZXNlcnZlcyBub24tc3RyaW5nIHZhbHVlcyB1bmNoYW5nZWRcbiAqIC0gVHJhY2tzIG5vcm1hbGl6YXRpb24gcGF0aCBmb3IgZGV0YWlsZWQgZXJyb3IgcmVwb3J0aW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnB1dE5vcm1hbGl6ZXIge1xuICAvKipcbiAgICogTm9ybWFsaXplIGFsbCBzdHJpbmcgdmFsdWVzIGluIGFuIG9iamVjdC9hcnJheSBzdHJ1Y3R1cmVcbiAgICpcbiAgICogQHBhcmFtIGlucHV0IC0gSW5wdXQgZGF0YSB0byBub3JtYWxpemUgKG9iamVjdCwgYXJyYXksIG9yIHByaW1pdGl2ZSlcbiAgICogQHBhcmFtIHBhdGggLSBDdXJyZW50IHBhdGggaW4gb2JqZWN0IHRyZWUgKGZvciBlcnJvciB0cmFja2luZylcbiAgICogQHJldHVybnMgTm9ybWFsaXphdGlvbiByZXN1bHQgd2l0aCBub3JtYWxpemVkIGRhdGEgYW5kIGRldGVjdGVkIGlzc3Vlc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGlucHV0ID0ge1xuICAgKiAgIG5hbWU6ICdUZXN0XFx1MjAwQk5hbWUnLCAgLy8gWmVyby13aWR0aCBzcGFjZVxuICAgKiAgIGRlc2NyaXB0aW9uOiAnQ2Fmw6knLCAgICAgIC8vIExlZ2l0aW1hdGUgVW5pY29kZVxuICAgKiAgIG5lc3RlZDoge1xuICAgKiAgICAgZmllbGQ6ICdWYWxcXHUyMDJFdWUnICAgIC8vIERpcmVjdGlvbiBvdmVycmlkZVxuICAgKiAgIH1cbiAgICogfTtcbiAgICpcbiAgICogY29uc3QgcmVzdWx0ID0gSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZShpbnB1dCk7XG4gICAqIGNvbnNvbGUubG9nKHJlc3VsdC5kYXRhLm5hbWUpOyAgLy8gJ1Rlc3ROYW1lJyAoY2xlYW5lZClcbiAgICogY29uc29sZS5sb2cocmVzdWx0Lndhcm5pbmdzKTsgICAvLyBbJ25hbWU6IFplcm8td2lkdGggY2hhcmFjdGVycyBkZXRlY3RlZCcsIC4uLl1cbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplPFQgPSB1bmtub3duPihpbnB1dDogVCwgcGF0aDogc3RyaW5nID0gJyQnKTogTm9ybWFsaXphdGlvblJlc3VsdDxUPiB7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGlzc3Vlc0J5UGF0aCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcbiAgICBsZXQgbWF4U2V2ZXJpdHk6ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCcgfCAnY3JpdGljYWwnIHwgdW5kZWZpbmVkO1xuXG4gICAgLy8gUmVjdXJzaXZlIG5vcm1hbGl6YXRpb24gaW1wbGVtZW50YXRpb25cbiAgICBjb25zdCBub3JtYWxpemVWYWx1ZSA9ICh2YWx1ZTogdW5rbm93biwgY3VycmVudFBhdGg6IHN0cmluZyk6IHVua25vd24gPT4ge1xuICAgICAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBzdHJpbmdzIC0gdGhpcyBpcyB3aGVyZSBub3JtYWxpemF0aW9uIGhhcHBlbnNcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHVuaWNvZGVSZXN1bHQgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gVHJhY2sgaXNzdWVzIGZvciB0aGlzIGZpZWxkXG4gICAgICAgIGlmICh1bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzICYmIHVuaWNvZGVSZXN1bHQuZGV0ZWN0ZWRJc3N1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHBhdGhJc3N1ZXMgPSB1bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzLm1hcChcbiAgICAgICAgICAgIGlzc3VlID0+IGAke2N1cnJlbnRQYXRofTogJHtpc3N1ZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpc3N1ZXNCeVBhdGguc2V0KGN1cnJlbnRQYXRoLCB1bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzKTtcblxuICAgICAgICAgIC8vIENhdGVnb3JpemUgYnkgc2V2ZXJpdHlcbiAgICAgICAgICBpZiAodW5pY29kZVJlc3VsdC5zZXZlcml0eSkge1xuICAgICAgICAgICAgbWF4U2V2ZXJpdHkgPSB0aGlzLmVzY2FsYXRlU2V2ZXJpdHkobWF4U2V2ZXJpdHksIHVuaWNvZGVSZXN1bHQuc2V2ZXJpdHkpO1xuXG4gICAgICAgICAgICBpZiAodW5pY29kZVJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJyB8fCB1bmljb2RlUmVzdWx0LnNldmVyaXR5ID09PSAnaGlnaCcpIHtcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goLi4ucGF0aElzc3Vlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB3YXJuaW5ncy5wdXNoKC4uLnBhdGhJc3N1ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3YXJuaW5ncy5wdXNoKC4uLnBhdGhJc3N1ZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmljb2RlUmVzdWx0Lm5vcm1hbGl6ZWRDb250ZW50O1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgYXJyYXlzIC0gcmVjdXJzaXZlbHkgbm9ybWFsaXplIGVhY2ggZWxlbWVudFxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0sIGluZGV4KSA9PlxuICAgICAgICAgIG5vcm1hbGl6ZVZhbHVlKGl0ZW0sIGAke2N1cnJlbnRQYXRofVske2luZGV4fV1gKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgb2JqZWN0cyAtIHJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZSBlYWNoIHByb3BlcnR5XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICAgICAgbm9ybWFsaXplZFtrZXldID0gbm9ybWFsaXplVmFsdWUodmFsLCBgJHtjdXJyZW50UGF0aH0uJHtrZXl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIFByZXNlcnZlIG90aGVyIHR5cGVzIHVuY2hhbmdlZCAobnVtYmVycywgYm9vbGVhbnMsIGV0Yy4pXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcblxuICAgIC8vIE5vcm1hbGl6ZSB0aGUgaW5wdXRcbiAgICBjb25zdCBub3JtYWxpemVkRGF0YSA9IG5vcm1hbGl6ZVZhbHVlKGlucHV0LCBwYXRoKSBhcyBUO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGFnZ3JlZ2F0ZSBzdGF0dXNcbiAgICBjb25zdCBoYXNJc3N1ZXMgPSBlcnJvcnMubGVuZ3RoID4gMCB8fCB3YXJuaW5ncy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGhhc0NyaXRpY2FsSXNzdWVzID0gbWF4U2V2ZXJpdHkgPT09ICdjcml0aWNhbCcgfHwgbWF4U2V2ZXJpdHkgPT09ICdoaWdoJztcblxuICAgIC8vIExvZyBpZiBjcml0aWNhbCBpc3N1ZXMgZGV0ZWN0ZWRcbiAgICBpZiAoaGFzQ3JpdGljYWxJc3N1ZXMpIHtcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VOSUNPREVfVkFMSURBVElPTl9FUlJPUicsXG4gICAgICAgIHNldmVyaXR5OiBtYXhTZXZlcml0eSA9PT0gJ2NyaXRpY2FsJyA/ICdDUklUSUNBTCcgOiAnSElHSCcsXG4gICAgICAgIHNvdXJjZTogJ0lucHV0Tm9ybWFsaXplcicsXG4gICAgICAgIGRldGFpbHM6IGBDcml0aWNhbCBVbmljb2RlIGlzc3VlcyBkZXRlY3RlZCBkdXJpbmcgbm9ybWFsaXphdGlvbjogJHtlcnJvcnMuam9pbignOyAnKX1gXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogbm9ybWFsaXplZERhdGEsXG4gICAgICBoYXNJc3N1ZXMsXG4gICAgICBoYXNDcml0aWNhbElzc3VlcyxcbiAgICAgIGVycm9ycyxcbiAgICAgIHdhcm5pbmdzLFxuICAgICAgaXNzdWVzQnlQYXRoLFxuICAgICAgbWF4U2V2ZXJpdHlcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVzY2FsYXRlIHNldmVyaXR5IGxldmVsIChoaWdoZXIgc2V2ZXJpdHkgdGFrZXMgcHJlY2VkZW5jZSlcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGVzY2FsYXRlU2V2ZXJpdHkoXG4gICAgY3VycmVudDogJ2xvdycgfCAnbWVkaXVtJyB8ICdoaWdoJyB8ICdjcml0aWNhbCcgfCB1bmRlZmluZWQsXG4gICAgbmV3U2V2ZXJpdHk6ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCcgfCAnY3JpdGljYWwnXG4gICk6ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCcgfCAnY3JpdGljYWwnIHtcbiAgICBjb25zdCBzZXZlcml0eUxldmVscyA9IHsgbG93OiAxLCBtZWRpdW06IDIsIGhpZ2g6IDMsIGNyaXRpY2FsOiA0IH07XG4gICAgY29uc3QgY3VycmVudExldmVsID0gY3VycmVudCA/IHNldmVyaXR5TGV2ZWxzW2N1cnJlbnRdIDogMDtcbiAgICBjb25zdCBuZXdMZXZlbCA9IHNldmVyaXR5TGV2ZWxzW25ld1NldmVyaXR5XTtcblxuICAgIHJldHVybiBuZXdMZXZlbCA+IGN1cnJlbnRMZXZlbCA/IG5ld1NldmVyaXR5IDogKGN1cnJlbnQgfHwgJ2xvdycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFF1aWNrIGNoZWNrIGlmIGlucHV0IG5lZWRzIG5vcm1hbGl6YXRpb24gKGhhcyBzdXNwaWNpb3VzIFVuaWNvZGUpXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gb3B0aW1pemF0aW9uIC0geW91IGNhbiBjaGVjayBpZiBub3JtYWxpemF0aW9uIGlzIG5lZWRlZFxuICAgKiBiZWZvcmUgZG9pbmcgZXhwZW5zaXZlIHJlY3Vyc2l2ZSBub3JtYWxpemF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXQgLSBJbnB1dCBkYXRhIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIFRydWUgaWYgaW5wdXQgY29udGFpbnMgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIFVuaWNvZGVcbiAgICovXG4gIHN0YXRpYyBuZWVkc05vcm1hbGl6YXRpb24oaW5wdXQ6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFVuaWNvZGVWYWxpZGF0b3IuY29udGFpbnNEYW5nZXJvdXNVbmljb2RlKGlucHV0KTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICAgIHJldHVybiBpbnB1dC5zb21lKGl0ZW0gPT4gdGhpcy5uZWVkc05vcm1hbGl6YXRpb24oaXRlbSkpO1xuICAgIH1cblxuICAgIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnB1dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuc29tZShcbiAgICAgICAgdmFsdWUgPT4gdGhpcy5uZWVkc05vcm1hbGl6YXRpb24odmFsdWUpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXROb3JtYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L0lucHV0Tm9ybWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUF3QmxEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkc7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFjLEtBQVEsRUFBRSxPQUFlLEdBQUc7UUFDeEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUNqRCxJQUFJLFdBQStELENBQUM7UUFFcEUseUNBQXlDO1FBQ3pDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYyxFQUFFLFdBQW1CLEVBQVcsRUFBRTtZQUN0RSx3QkFBd0I7WUFDeEIsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsdURBQXVEO1lBQ3ZELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFeEQsOEJBQThCO2dCQUM5QixJQUFJLGFBQWEsQ0FBQyxjQUFjLElBQUksYUFBYSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdB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QkFBdUI7WUFDdkIsTUFBTTtZQUNOLFFBQVE7WUFDUixZQUFZO1lBQ1osV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBYztRQUN0QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBZ0MsQ0FBQyxDQUFDLElBQUksQ0FDekQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQ3hDLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIElucHV0Tm9ybWFsaXplciAtIEluZHVzdHJ5LXN0YW5kYXJkIGlucHV0IG5vcm1hbGl6YXRpb24gYXQgdGhlIGJvdW5kYXJ5XG4gKlxuICogQXJjaGl0ZWN0dXJlIFBhdHRlcm46IERlZmVuc2UgaW4gRGVwdGggLSBOb3JtYWxpemUgT25jZSBhdCBFbnRyeSBQb2ludFxuICpcbiAqIFRoaXMgdXRpbGl0eSBlbmZvcmNlcyB0aGUgcHJpbmNpcGxlIG9mIFwibm9ybWFsaXplIGF0IHRoZSBib3VuZGFyeVwiIGZvciBzZWN1cml0eTpcbiAqIC0gUmVjdXJzaXZlbHkgbm9ybWFsaXplcyBBTEwgc3RyaW5nIHZhbHVlcyBpbiBpbnB1dCBvYmplY3RzXG4gKiAtIFVzZXMgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKSBhcyB0aGUgc2luZ2xlIG5vcm1hbGl6YXRpb24gaW1wbGVtZW50YXRpb25cbiAqIC0gUmV0dXJucyBub3JtYWxpemVkIG9iamVjdCArIGFnZ3JlZ2F0ZWQgc2VjdXJpdHkgaXNzdWVzXG4gKiAtIFZhbGlkYXRvcnMgcmVjZWl2ZSBjbGVhbiwgcHJlLW5vcm1hbGl6ZWQgZGF0YVxuICpcbiAqIFNlY3VyaXR5IEJlbmVmaXRzOlxuICogLSBTaW5nbGUgbm9ybWFsaXphdGlvbiBwb2ludCAobm8gc2NhdHRlcmVkIHZhbGlkYXRlQ29udGVudCBjYWxscylcbiAqIC0gQ2FuJ3QgZm9yZ2V0IHRvIG5vcm1hbGl6ZSBhIGZpZWxkXG4gKiAtIFNlcGFyYXRpb24gb2YgY29uY2VybnMgKG5vcm1hbGl6YXRpb24gdnMgdmFsaWRhdGlvbilcbiAqIC0gRWFzaWVyIHRvIGF1ZGl0IGFuZCBtYWludGFpblxuICpcbiAqIFVzYWdlOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQXQgdGhlIHZhbGlkYXRpb24gYm91bmRhcnkgKEdlbmVyaWNFbGVtZW50VmFsaWRhdG9yKVxuICogY29uc3Qgbm9ybWFsaXplZCA9IElucHV0Tm9ybWFsaXplci5ub3JtYWxpemUoZGF0YSk7XG4gKlxuICogaWYgKG5vcm1hbGl6ZWQuaGFzSGlnaE9yQ3JpdGljYWxJc3N1ZXMpIHtcbiAqICAgcmV0dXJuIFZhbGlkYXRvckhlbHBlcnMuZmFpbChub3JtYWxpemVkLmVycm9ycyk7XG4gKiB9XG4gKlxuICogLy8gTm93IHZhbGlkYXRlIHRoZSBub3JtYWxpemVkIGRhdGFcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGVGaWVsZHMobm9ybWFsaXplZC5kYXRhKTtcbiAqIGBgYFxuICpcbiAqIEBzZWUgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKSAtIENvcmUgbm9ybWFsaXphdGlvbiBpbXBsZW1lbnRhdGlvblxuICogQHNlZSBHZW5lcmljRWxlbWVudFZhbGlkYXRvciAtIFVzZXMgdGhpcyBhdCB0aGUgYm91bmRhcnlcbiAqL1xuXG5pbXBvcnQgeyBVbmljb2RlVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL3VuaWNvZGVWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgZXNjYWxhdGVTZXZlcml0eSB9IGZyb20gJy4vY29uc3RhbnRzLmpzJztcblxuLyoqXG4gKiBSZXN1bHQgZnJvbSBpbnB1dCBub3JtYWxpemF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9ybWFsaXphdGlvblJlc3VsdDxUID0gdW5rbm93bj4ge1xuICAvKiogVGhlIG5vcm1hbGl6ZWQgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBhbGwgc3RyaW5ncyBub3JtYWxpemVkICovXG4gIGRhdGE6IFQ7XG4gIC8qKiBXaGV0aGVyIG5vcm1hbGl6YXRpb24gZGV0ZWN0ZWQgYW55IGlzc3VlcyAqL1xuICBoYXNJc3N1ZXM6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIGNyaXRpY2FsLXNldmVyaXR5IGlzc3VlcyB3ZXJlIGRldGVjdGVkICovXG4gIGhhc0NyaXRpY2FsSXNzdWVzOiBib29sZWFuO1xuICAvKiogV2hldGhlciBoaWdoLW9yLWNyaXRpY2FsIGlzc3VlcyB3ZXJlIGRldGVjdGVkIHRoYXQgc2hvdWxkIGZhaWwgdmFsaWRhdGlvbiAoIzE3ODItNikgKi9cbiAgaGFzSGlnaE9yQ3JpdGljYWxJc3N1ZXM6IGJvb2xlYW47XG4gIC8qKiBBbGwgZXJyb3JzIGRldGVjdGVkIGR1cmluZyBub3JtYWxpemF0aW9uIChjcml0aWNhbCBpc3N1ZXMpICovXG4gIGVycm9yczogc3RyaW5nW107XG4gIC8qKiBBbGwgd2FybmluZ3MgZGV0ZWN0ZWQgZHVyaW5nIG5vcm1hbGl6YXRpb24gKG5vbi1jcml0aWNhbCBpc3N1ZXMpICovXG4gIHdhcm5pbmdzOiBzdHJpbmdbXTtcbiAgLyoqIERldGFpbGVkIGlzc3VlcyBieSBwYXRoIChmb3IgZGVidWdnaW5nKSAqL1xuICBpc3N1ZXNCeVBhdGg6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgLyoqIEhpZ2hlc3Qgc2V2ZXJpdHkgbGV2ZWwgZGV0ZWN0ZWQgKi9cbiAgbWF4U2V2ZXJpdHk/OiAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ2NyaXRpY2FsJztcbn1cblxuLyoqXG4gKiBJbnB1dE5vcm1hbGl6ZXIgLSBSZWN1cnNpdmVseSBub3JtYWxpemVzIGFsbCBzdHJpbmcgdmFsdWVzIGluIGFuIG9iamVjdFxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjZW50cmFsaXplZCwgcmVjdXJzaXZlIG5vcm1hbGl6YXRpb24gdXRpbGl0eSB0aGF0OlxuICogLSBXYWxrcyBvYmplY3QvYXJyYXkgc3RydWN0dXJlcyByZWN1cnNpdmVseVxuICogLSBOb3JtYWxpemVzIGV2ZXJ5IHN0cmluZyB2YWx1ZSB1c2luZyBVbmljb2RlVmFsaWRhdG9yXG4gKiAtIEFnZ3JlZ2F0ZXMgc2VjdXJpdHkgaXNzdWVzIGFjcm9zcyBhbGwgZmllbGRzXG4gKiAtIFByZXNlcnZlcyBub24tc3RyaW5nIHZhbHVlcyB1bmNoYW5nZWRcbiAqIC0gVHJhY2tzIG5vcm1hbGl6YXRpb24gcGF0aCBmb3IgZGV0YWlsZWQgZXJyb3IgcmVwb3J0aW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnB1dE5vcm1hbGl6ZXIge1xuICAvKipcbiAgICogTm9ybWFsaXplIGFsbCBzdHJpbmcgdmFsdWVzIGluIGFuIG9iamVjdC9hcnJheSBzdHJ1Y3R1cmVcbiAgICpcbiAgICogQHBhcmFtIGlucHV0IC0gSW5wdXQgZGF0YSB0byBub3JtYWxpemUgKG9iamVjdCwgYXJyYXksIG9yIHByaW1pdGl2ZSlcbiAgICogQHBhcmFtIHBhdGggLSBDdXJyZW50IHBhdGggaW4gb2JqZWN0IHRyZWUgKGZvciBlcnJvciB0cmFja2luZylcbiAgICogQHJldHVybnMgTm9ybWFsaXphdGlvbiByZXN1bHQgd2l0aCBub3JtYWxpemVkIGRhdGEgYW5kIGRldGVjdGVkIGlzc3Vlc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGlucHV0ID0ge1xuICAgKiAgIG5hbWU6ICdUZXN0XFx1MjAwQk5hbWUnLCAgLy8gWmVyby13aWR0aCBzcGFjZVxuICAgKiAgIGRlc2NyaXB0aW9uOiAnQ2Fmw6knLCAgICAgIC8vIExlZ2l0aW1hdGUgVW5pY29kZVxuICAgKiAgIG5lc3RlZDoge1xuICAgKiAgICAgZmllbGQ6ICdWYWxcXHUyMDJFdWUnICAgIC8vIERpcmVjdGlvbiBvdmVycmlkZVxuICAgKiAgIH1cbiAgICogfTtcbiAgICpcbiAgICogY29uc3QgcmVzdWx0ID0gSW5wdXROb3JtYWxpemVyLm5vcm1hbGl6ZShpbnB1dCk7XG4gICAqIGNvbnNvbGUubG9nKHJlc3VsdC5kYXRhLm5hbWUpOyAgLy8gJ1Rlc3ROYW1lJyAoY2xlYW5lZClcbiAgICogY29uc29sZS5sb2cocmVzdWx0Lndhcm5pbmdzKTsgICAvLyBbJ25hbWU6IFplcm8td2lkdGggY2hhcmFjdGVycyBkZXRlY3RlZCcsIC4uLl1cbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplPFQgPSB1bmtub3duPihpbnB1dDogVCwgcGF0aDogc3RyaW5nID0gJyQnKTogTm9ybWFsaXphdGlvblJlc3VsdDxUPiB7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGlzc3Vlc0J5UGF0aCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcbiAgICBsZXQgbWF4U2V2ZXJpdHk6ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCcgfCAnY3JpdGljYWwnIHwgdW5kZWZpbmVkO1xuXG4gICAgLy8gUmVjdXJzaXZlIG5vcm1hbGl6YXRpb24gaW1wbGVtZW50YXRpb25cbiAgICBjb25zdCBub3JtYWxpemVWYWx1ZSA9ICh2YWx1ZTogdW5rbm93biwgY3VycmVudFBhdGg6IHN0cmluZyk6IHVua25vd24gPT4ge1xuICAgICAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBzdHJpbmdzIC0gdGhpcyBpcyB3aGVyZSBub3JtYWxpemF0aW9uIGhhcHBlbnNcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHVuaWNvZGVSZXN1bHQgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gVHJhY2sgaXNzdWVzIGZvciB0aGlzIGZpZWxkXG4gICAgICAgIGlmICh1bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzICYmIHVuaWNvZGVSZXN1bHQuZGV0ZWN0ZWRJc3N1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHBhdGhJc3N1ZXMgPSB1bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzLm1hcChcbiAgICAgICAgICAgIGlzc3VlID0+IGAke2N1cnJlbnRQYXRofTogJHtpc3N1ZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpc3N1ZXNCeVBhdGguc2V0KGN1cnJlbnRQYXRoLCB1bmljb2RlUmVzdWx0LmRldGVjdGVkSXNzdWVzKTtcblxuICAgICAgICAgIC8vIENhdGVnb3JpemUgYnkgc2V2ZXJpdHlcbiAgICAgICAgICBpZiAodW5pY29kZVJlc3VsdC5zZXZlcml0eSkge1xuICAgICAgICAgICAgbWF4U2V2ZXJpdHkgPSBlc2NhbGF0ZVNldmVyaXR5KG1heFNldmVyaXR5LCB1bmljb2RlUmVzdWx0LnNldmVyaXR5KTtcblxuICAgICAgICAgICAgaWYgKHVuaWNvZGVSZXN1bHQuc2V2ZXJpdHkgPT09ICdjcml0aWNhbCcgfHwgdW5pY29kZVJlc3VsdC5zZXZlcml0eSA9PT0gJ2hpZ2gnKSB7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKC4uLnBhdGhJc3N1ZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd2FybmluZ3MucHVzaCguLi5wYXRoSXNzdWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2FybmluZ3MucHVzaCguLi5wYXRoSXNzdWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5pY29kZVJlc3VsdC5ub3JtYWxpemVkQ29udGVudDtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGFycmF5cyAtIHJlY3Vyc2l2ZWx5IG5vcm1hbGl6ZSBlYWNoIGVsZW1lbnRcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUubWFwKChpdGVtLCBpbmRleCkgPT5cbiAgICAgICAgICBub3JtYWxpemVWYWx1ZShpdGVtLCBgJHtjdXJyZW50UGF0aH1bJHtpbmRleH1dYClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIG9iamVjdHMgLSByZWN1cnNpdmVseSBub3JtYWxpemUgZWFjaCBwcm9wZXJ0eVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgICAgIG5vcm1hbGl6ZWRba2V5XSA9IG5vcm1hbGl6ZVZhbHVlKHZhbCwgYCR7Y3VycmVudFBhdGh9LiR7a2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgICAgfVxuXG4gICAgICAvLyBQcmVzZXJ2ZSBvdGhlciB0eXBlcyB1bmNoYW5nZWQgKG51bWJlcnMsIGJvb2xlYW5zLCBldGMuKVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbiAgICAvLyBOb3JtYWxpemUgdGhlIGlucHV0XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGEgPSBub3JtYWxpemVWYWx1ZShpbnB1dCwgcGF0aCkgYXMgVDtcblxuICAgIC8vIENhbGN1bGF0ZSBhZ2dyZWdhdGUgc3RhdHVzICgjMTc4Mi02OiBzZXBhcmF0ZSBjcml0aWNhbC1vbmx5IGZyb20gaGlnaCtjcml0aWNhbClcbiAgICBjb25zdCBoYXNJc3N1ZXMgPSBlcnJvcnMubGVuZ3RoID4gMCB8fCB3YXJuaW5ncy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGhhc0NyaXRpY2FsSXNzdWVzID0gbWF4U2V2ZXJpdHkgPT09ICdjcml0aWNhbCc7XG4gICAgY29uc3QgaGFzSGlnaE9yQ3JpdGljYWxJc3N1ZXMgPSBtYXhTZXZlcml0eSA9PT0gJ2NyaXRpY2FsJyB8fCBtYXhTZXZlcml0eSA9PT0gJ2hpZ2gnO1xuXG4gICAgLy8gTG9nIGlmIGhpZ2ggb3IgY3JpdGljYWwgaXNzdWVzIGRldGVjdGVkXG4gICAgaWYgKGhhc0hpZ2hPckNyaXRpY2FsSXNzdWVzKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InLFxuICAgICAgICBzZXZlcml0eTogbWF4U2V2ZXJpdHkgPT09ICdjcml0aWNhbCcgPyAnQ1JJVElDQUwnIDogJ0hJR0gnLFxuICAgICAgICBzb3VyY2U6ICdJbnB1dE5vcm1hbGl6ZXInLFxuICAgICAgICBkZXRhaWxzOiBgQ3JpdGljYWwgVW5pY29kZSBpc3N1ZXMgZGV0ZWN0ZWQgZHVyaW5nIG5vcm1hbGl6YXRpb246ICR7ZXJyb3JzLmpvaW4oJzsgJyl9YFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IG5vcm1hbGl6ZWREYXRhLFxuICAgICAgaGFzSXNzdWVzLFxuICAgICAgaGFzQ3JpdGljYWxJc3N1ZXMsXG4gICAgICBoYXNIaWdoT3JDcml0aWNhbElzc3VlcyxcbiAgICAgIGVycm9ycyxcbiAgICAgIHdhcm5pbmdzLFxuICAgICAgaXNzdWVzQnlQYXRoLFxuICAgICAgbWF4U2V2ZXJpdHlcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFF1aWNrIGNoZWNrIGlmIGlucHV0IG5lZWRzIG5vcm1hbGl6YXRpb24gKGhhcyBzdXNwaWNpb3VzIFVuaWNvZGUpXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gb3B0aW1pemF0aW9uIC0geW91IGNhbiBjaGVjayBpZiBub3JtYWxpemF0aW9uIGlzIG5lZWRlZFxuICAgKiBiZWZvcmUgZG9pbmcgZXhwZW5zaXZlIHJlY3Vyc2l2ZSBub3JtYWxpemF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXQgLSBJbnB1dCBkYXRhIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIFRydWUgaWYgaW5wdXQgY29udGFpbnMgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIFVuaWNvZGVcbiAgICovXG4gIHN0YXRpYyBuZWVkc05vcm1hbGl6YXRpb24oaW5wdXQ6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFVuaWNvZGVWYWxpZGF0b3IuY29udGFpbnNEYW5nZXJvdXNVbmljb2RlKGlucHV0KTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICAgIHJldHVybiBpbnB1dC5zb21lKGl0ZW0gPT4gdGhpcy5uZWVkc05vcm1hbGl6YXRpb24oaXRlbSkpO1xuICAgIH1cblxuICAgIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnB1dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuc29tZShcbiAgICAgICAgdmFsdWUgPT4gdGhpcy5uZWVkc05vcm1hbGl6YXRpb24odmFsdWUpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../../../src/security/audit/config/suppressions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAqCD,eAAO,MAAM,YAAY,EAAE,WAAW,EA6iCrC,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CA8B/C;AAuJD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CA+CzE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAiBA"}
1
+ {"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../../../src/security/audit/config/suppressions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAqCD,eAAO,MAAM,YAAY,EAAE,WAAW,EAskCrC,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CA8B/C;AAuJD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CA+CzE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAiBA"}