@pipeline-builder/pipeline-core 3.3.6 → 3.3.8

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/lib/index.d.ts CHANGED
@@ -45,7 +45,7 @@ export { replaceNonAlphanumeric, extractMetadataEnv } from './core/pipeline-help
45
45
  export { buildConfigFromMetadata, metadataForCodePipeline, metadataForCodeBuildStep, metadataForShellStep, metadataForBuildEnvironment, } from './core/metadata-builder';
46
46
  export * from './core/artifact-manager';
47
47
  export { ErrorCode, createLogger, } from '@pipeline-builder/api-core';
48
- export { db, getConnection, closeConnection, schema, buildPluginConditions, buildPipelineConditions, buildMessageConditions, validateMessageFilter, buildCompliancePolicyConditions, buildComplianceRuleConditions, buildComplianceExemptionConditions, buildComplianceAuditConditions, buildComplianceScanConditions, buildPublishedRuleCatalogConditions, buildComplianceRuleSubscriptionConditions, type PluginFilter, type PipelineFilter, type MessageFilter, type CompliancePolicyFilter, type ComplianceRuleFilter, type ComplianceExemptionFilter, type ComplianceAuditFilter, type ComplianceScanFilter, type ComplianceRuleSubscriptionFilter, type PluginSecret, type RuleSeverity, type RuleTarget, type RuleOperator, type RuleConditionMode, type RuleScope, type RuleCondition, type ComplianceRoleType, CrudService, type BaseEntity, drizzleRows, drizzleCount, } from '@pipeline-builder/pipeline-data';
48
+ export { db, getConnection, closeConnection, schema, buildPluginConditions, buildPipelineConditions, buildMessageConditions, validateMessageFilter, buildCompliancePolicyConditions, buildComplianceRuleConditions, buildComplianceExemptionConditions, buildComplianceAuditConditions, buildComplianceScanConditions, buildPublishedRuleCatalogConditions, buildComplianceRuleSubscriptionConditions, type PluginFilter, type PipelineFilter, type MessageFilter, type CompliancePolicyFilter, type ComplianceRuleFilter, type ComplianceExemptionFilter, type ComplianceAuditFilter, type ComplianceScanFilter, type ComplianceRuleSubscriptionFilter, type PluginSecret, type RuleSeverity, type RuleTarget, type RuleOperator, type RuleConditionMode, type RuleScope, type RuleCondition, type ComplianceRoleType, CrudService, type BaseEntity, drizzleRows, drizzleCount, runMigrations, type MigrateOptions, } from '@pipeline-builder/pipeline-data';
49
49
  export * from './pipeline/source-types';
50
50
  export * from './pipeline/step-types';
51
51
  export * from './pipeline/stage-builder';
package/lib/index.js CHANGED
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
17
  };
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.PipelineConfiguration = exports.drizzleCount = exports.drizzleRows = exports.CrudService = exports.buildComplianceRuleSubscriptionConditions = exports.buildPublishedRuleCatalogConditions = exports.buildComplianceScanConditions = exports.buildComplianceAuditConditions = exports.buildComplianceExemptionConditions = exports.buildComplianceRuleConditions = exports.buildCompliancePolicyConditions = exports.validateMessageFilter = exports.buildMessageConditions = exports.buildPipelineConditions = exports.buildPluginConditions = exports.schema = exports.closeConnection = exports.getConnection = exports.db = exports.createLogger = exports.ErrorCode = exports.metadataForBuildEnvironment = exports.metadataForShellStep = exports.metadataForCodeBuildStep = exports.metadataForCodePipeline = exports.buildConfigFromMetadata = exports.extractMetadataEnv = exports.replaceNonAlphanumeric = void 0;
19
+ exports.PipelineConfiguration = exports.runMigrations = exports.drizzleCount = exports.drizzleRows = exports.CrudService = exports.buildComplianceRuleSubscriptionConditions = exports.buildPublishedRuleCatalogConditions = exports.buildComplianceScanConditions = exports.buildComplianceAuditConditions = exports.buildComplianceExemptionConditions = exports.buildComplianceRuleConditions = exports.buildCompliancePolicyConditions = exports.validateMessageFilter = exports.buildMessageConditions = exports.buildPipelineConditions = exports.buildPluginConditions = exports.schema = exports.closeConnection = exports.getConnection = exports.db = exports.createLogger = exports.ErrorCode = exports.metadataForBuildEnvironment = exports.metadataForShellStep = exports.metadataForCodeBuildStep = exports.metadataForCodePipeline = exports.buildConfigFromMetadata = exports.extractMetadataEnv = exports.replaceNonAlphanumeric = void 0;
20
20
  /**
21
21
  * @module @pipeline-builder/pipeline-core
22
22
  *
@@ -101,6 +101,8 @@ Object.defineProperty(exports, "CrudService", { enumerable: true, get: function
101
101
  // Drizzle type helpers
102
102
  Object.defineProperty(exports, "drizzleRows", { enumerable: true, get: function () { return pipeline_data_1.drizzleRows; } });
103
103
  Object.defineProperty(exports, "drizzleCount", { enumerable: true, get: function () { return pipeline_data_1.drizzleCount; } });
104
+ // Migration runner (idempotent startup hook)
105
+ Object.defineProperty(exports, "runMigrations", { enumerable: true, get: function () { return pipeline_data_1.runMigrations; } });
104
106
  // Pipeline (CDK constructs)
105
107
  __exportStar(require("./pipeline/source-types"), exports);
106
108
  __exportStar(require("./pipeline/step-types"), exports);
@@ -111,4 +113,4 @@ var pipeline_configuration_1 = require("./pipeline/pipeline-configuration");
111
113
  Object.defineProperty(exports, "PipelineConfiguration", { enumerable: true, get: function () { return pipeline_configuration_1.PipelineConfiguration; } });
112
114
  // Template engine — synth-time scripting for pipeline config + plugin specs
113
115
  __exportStar(require("./template"), exports);
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DRztBQUVILGdCQUFnQjtBQUNoQixzREFBb0M7QUFDcEMsd0RBQXNDO0FBRXRDLDhCQUE4QjtBQUM5Qix3REFBc0M7QUFDdEMsdURBQXFDO0FBQ3JDLG9EQUFrQztBQUNsQyw4REFBNEM7QUFDNUMsc0RBQW9DO0FBQ3BDLDREQUFxRjtBQUE1RSwwSEFBQSxzQkFBc0IsT0FBQTtBQUFFLHNIQUFBLGtCQUFrQixPQUFBO0FBQ25ELDREQU1pQztBQUwvQiwySEFBQSx1QkFBdUIsT0FBQTtBQUN2QiwySEFBQSx1QkFBdUIsT0FBQTtBQUN2Qiw0SEFBQSx3QkFBd0IsT0FBQTtBQUN4Qix3SEFBQSxvQkFBb0IsT0FBQTtBQUNwQiwrSEFBQSwyQkFBMkIsT0FBQTtBQUU3QiwwREFBd0M7QUFFeEMscUVBQXFFO0FBQ3JFLHVEQUdvQztBQUZsQyxxR0FBQSxTQUFTLE9BQUE7QUFDVCx3R0FBQSxZQUFZLE9BQUE7QUFHZCwrRUFBK0U7QUFDL0UsaUVBb0R5QztBQW5EdkMsc0JBQXNCO0FBQ3RCLG1HQUFBLEVBQUUsT0FBQTtBQUNGLDhHQUFBLGFBQWEsT0FBQTtBQUNiLGdIQUFBLGVBQWUsT0FBQTtBQUVmLGtCQUFrQjtBQUNsQix1R0FBQSxNQUFNLE9BQUE7QUFFTixpQkFBaUI7QUFDakIsc0hBQUEscUJBQXFCLE9BQUE7QUFDckIsd0hBQUEsdUJBQXVCLE9BQUE7QUFDdkIsdUhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsc0hBQUEscUJBQXFCLE9BQUE7QUFDckIsZ0lBQUEsK0JBQStCLE9BQUE7QUFDL0IsOEhBQUEsNkJBQTZCLE9BQUE7QUFDN0IsbUlBQUEsa0NBQWtDLE9BQUE7QUFDbEMsK0hBQUEsOEJBQThCLE9BQUE7QUFDOUIsOEhBQUEsNkJBQTZCLE9BQUE7QUFDN0Isb0lBQUEsbUNBQW1DLE9BQUE7QUFDbkMsMElBQUEseUNBQXlDLE9BQUE7QUF5QnpDLGVBQWU7QUFDZiw0R0FBQSxXQUFXLE9BQUE7QUFHWCx1QkFBdUI7QUFDdkIsNEdBQUEsV0FBVyxPQUFBO0FBQ1gsNkdBQUEsWUFBWSxPQUFBO0FBR2QsNEJBQTRCO0FBQzVCLDBEQUF3QztBQUN4Qyx3REFBc0M7QUFDdEMsMkRBQXlDO0FBQ3pDLDhEQUE0QztBQUM1QywyREFBeUM7QUFDekMsNEVBQTBFO0FBQWpFLCtIQUFBLHFCQUFxQixPQUFBO0FBRTlCLDRFQUE0RTtBQUM1RSw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBAbW9kdWxlIEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmVcbiAqXG4gKiBBcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCBwaXBlbGluZSBkb21haW4gdHlwZXMsIGFuZCBDREsgY29uc3RydWN0cy5cbiAqXG4gKiAqKkNvbmZpZyoqXG4gKiAtIENvbmZpZyDigJQgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbiBzaW5nbGV0b24gKGVudmlyb25tZW50LWRyaXZlbilcbiAqIC0gQ29uZmlnVHlwZXMg4oCUIHR5cGVkIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlc1xuICpcbiAqICoqVHlwZXMqKlxuICogLSBQaXBlbGluZVR5cGUsIENvbXB1dGVUeXBlLCBBY2Nlc3NNb2RpZmllciwgUGx1Z2luVHlwZSDigJQgcGlwZWxpbmUgZG9tYWluIGVudW1zXG4gKiAtIE5ldHdvcmtUeXBlcywgUm9sZVR5cGVzLCBTZWN1cml0eUdyb3VwVHlwZXMg4oCUIGluZnJhc3RydWN0dXJlIHR5cGUgZGVmaW5pdGlvbnNcbiAqIC0gU291cmNlVHlwZXMsIFN0ZXBUeXBlcyDigJQgcGlwZWxpbmUgc291cmNlIGFuZCBzdGVwIGNvbmZpZ3VyYXRpb24gdHlwZXNcbiAqIC0gSWRHZW5lcmF0b3Ig4oCUIGRldGVybWluaXN0aWMgSUQgZ2VuZXJhdGlvblxuICpcbiAqICoqQ0RLIENvbnN0cnVjdHMqKlxuICogLSBQaXBlbGluZUJ1aWxkZXIg4oCUIHRvcC1sZXZlbCBDREsgcGlwZWxpbmUgY29uc3RydWN0XG4gKiAtIFN0YWdlQnVpbGRlciDigJQgcGlwZWxpbmUgc3RhZ2UgY29tcG9zaXRpb25cbiAqIC0gUGlwZWxpbmVDb25maWd1cmF0aW9uIOKAlCBwaXBlbGluZSBjb25maWcgcmVzb2x1dGlvblxuICogLSBQbHVnaW5Mb29rdXAg4oCUIHBsdWdpbiByZXNvbHV0aW9uIGZvciBwaXBlbGluZSBzdGVwc1xuICogLSBBcnRpZmFjdE1hbmFnZXIg4oCUIGJ1aWxkIGFydGlmYWN0IG1hbmFnZW1lbnRcbiAqXG4gKiAqKkhlbHBlcnMqKlxuICogLSByZXBsYWNlTm9uQWxwaGFudW1lcmljLCBleHRyYWN0TWV0YWRhdGFFbnYg4oCUIHN0cmluZyBhbmQgbWV0YWRhdGEgdXRpbGl0aWVzXG4gKiAtIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhLCBtZXRhZGF0YUZvckNvZGVQaXBlbGluZSwgZXRjLiDigJQgbWV0YWRhdGEgYnVpbGRlcnNcbiAqXG4gKiAqKlJlLWV4cG9ydHMgZnJvbSBhcGktY29yZSoqXG4gKiAtIEVycm9yQ29kZSwgY3JlYXRlTG9nZ2VyXG4gKlxuICogKipSZS1leHBvcnRzIGZyb20gcGlwZWxpbmUtZGF0YSoqXG4gKiAtIGRiLCBzY2hlbWEsIGdldENvbm5lY3Rpb24sIGNsb3NlQ29ubmVjdGlvbiDigJQgZGF0YWJhc2UgYWNjZXNzXG4gKiAtIENydWRTZXJ2aWNlLCBCYXNlRW50aXR5IOKAlCBDUlVEIHNlcnZpY2UgaW5mcmFzdHJ1Y3R1cmVcbiAqIC0gQWxsIHF1ZXJ5IGNvbmRpdGlvbiBidWlsZGVycyBhbmQgZmlsdGVyIHR5cGVzXG4gKiAtIENvbXBsaWFuY2UgZG9tYWluIHR5cGVzIChSdWxlU2V2ZXJpdHksIFJ1bGVUYXJnZXQsIGV0Yy4pXG4gKiAtIGRyaXp6bGVSb3dzLCBkcml6emxlQ291bnQg4oCUIHR5cGUgaGVscGVyc1xuICovXG5cbi8vIENvbmZpZ3VyYXRpb25cbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnL2FwcC1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcvY29uZmlnLXR5cGVzJztcblxuLy8gQ29yZSB0eXBlcyAocHVibGljIHN1cmZhY2UpXG5leHBvcnQgKiBmcm9tICcuL2NvcmUvcGlwZWxpbmUtdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL25ldHdvcmstdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL3JvbGUtdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL3NlY3VyaXR5LWdyb3VwLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS9pZC1nZW5lcmF0b3InO1xuZXhwb3J0IHsgcmVwbGFjZU5vbkFscGhhbnVtZXJpYywgZXh0cmFjdE1ldGFkYXRhRW52IH0gZnJvbSAnLi9jb3JlL3BpcGVsaW5lLWhlbHBlcnMnO1xuZXhwb3J0IHtcbiAgYnVpbGRDb25maWdGcm9tTWV0YWRhdGEsXG4gIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lLFxuICBtZXRhZGF0YUZvckNvZGVCdWlsZFN0ZXAsXG4gIG1ldGFkYXRhRm9yU2hlbGxTdGVwLFxuICBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQsXG59IGZyb20gJy4vY29yZS9tZXRhZGF0YS1idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS9hcnRpZmFjdC1tYW5hZ2VyJztcblxuLy8gUmUtZXhwb3J0IGZyb20gYXBpLWNvcmUgKG9ubHkgaXRlbXMgY29uc3VtZWQgYnkgZXh0ZXJuYWwgcGFja2FnZXMpXG5leHBvcnQge1xuICBFcnJvckNvZGUsXG4gIGNyZWF0ZUxvZ2dlcixcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vLyBSZS1leHBvcnQgZGF0YWJhc2UgbGF5ZXIgZnJvbSBwaXBlbGluZS1kYXRhIChvbmx5IGl0ZW1zIGNvbnN1bWVkIGV4dGVybmFsbHkpXG5leHBvcnQge1xuICAvLyBEYXRhYmFzZSBjb25uZWN0aW9uXG4gIGRiLFxuICBnZXRDb25uZWN0aW9uLFxuICBjbG9zZUNvbm5lY3Rpb24sXG5cbiAgLy8gU2NoZW1hICYgdGFibGVzXG4gIHNjaGVtYSxcblxuICAvLyBRdWVyeSBidWlsZGVyc1xuICBidWlsZFBsdWdpbkNvbmRpdGlvbnMsXG4gIGJ1aWxkUGlwZWxpbmVDb25kaXRpb25zLFxuICBidWlsZE1lc3NhZ2VDb25kaXRpb25zLFxuICB2YWxpZGF0ZU1lc3NhZ2VGaWx0ZXIsXG4gIGJ1aWxkQ29tcGxpYW5jZVBvbGljeUNvbmRpdGlvbnMsXG4gIGJ1aWxkQ29tcGxpYW5jZVJ1bGVDb25kaXRpb25zLFxuICBidWlsZENvbXBsaWFuY2VFeGVtcHRpb25Db25kaXRpb25zLFxuICBidWlsZENvbXBsaWFuY2VBdWRpdENvbmRpdGlvbnMsXG4gIGJ1aWxkQ29tcGxpYW5jZVNjYW5Db25kaXRpb25zLFxuICBidWlsZFB1Ymxpc2hlZFJ1bGVDYXRhbG9nQ29uZGl0aW9ucyxcbiAgYnVpbGRDb21wbGlhbmNlUnVsZVN1YnNjcmlwdGlvbkNvbmRpdGlvbnMsXG5cbiAgLy8gUXVlcnkgZmlsdGVyIHR5cGVzXG4gIHR5cGUgUGx1Z2luRmlsdGVyLFxuICB0eXBlIFBpcGVsaW5lRmlsdGVyLFxuICB0eXBlIE1lc3NhZ2VGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVBvbGljeUZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlUnVsZUZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlRXhlbXB0aW9uRmlsdGVyLFxuICB0eXBlIENvbXBsaWFuY2VBdWRpdEZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlU2NhbkZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlUnVsZVN1YnNjcmlwdGlvbkZpbHRlcixcblxuICAvLyBQbHVnaW4gdHlwZXNcbiAgdHlwZSBQbHVnaW5TZWNyZXQsXG5cbiAgLy8gQ29tcGxpYW5jZSB0eXBlc1xuICB0eXBlIFJ1bGVTZXZlcml0eSxcbiAgdHlwZSBSdWxlVGFyZ2V0LFxuICB0eXBlIFJ1bGVPcGVyYXRvcixcbiAgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSxcbiAgdHlwZSBSdWxlU2NvcGUsXG4gIHR5cGUgUnVsZUNvbmRpdGlvbixcbiAgdHlwZSBDb21wbGlhbmNlUm9sZVR5cGUsXG5cbiAgLy8gQ1JVRCBzZXJ2aWNlXG4gIENydWRTZXJ2aWNlLFxuICB0eXBlIEJhc2VFbnRpdHksXG5cbiAgLy8gRHJpenpsZSB0eXBlIGhlbHBlcnNcbiAgZHJpenpsZVJvd3MsXG4gIGRyaXp6bGVDb3VudCxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5cbi8vIFBpcGVsaW5lIChDREsgY29uc3RydWN0cylcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvc291cmNlLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvc3RlcC10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3N0YWdlLWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9waXBlbGluZS1idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvcGx1Z2luLWxvb2t1cCc7XG5leHBvcnQgeyBQaXBlbGluZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3BpcGVsaW5lL3BpcGVsaW5lLWNvbmZpZ3VyYXRpb24nO1xuXG4vLyBUZW1wbGF0ZSBlbmdpbmUg4oCUIHN5bnRoLXRpbWUgc2NyaXB0aW5nIGZvciBwaXBlbGluZSBjb25maWcgKyBwbHVnaW4gc3BlY3NcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGUnO1xuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DRztBQUVILGdCQUFnQjtBQUNoQixzREFBb0M7QUFDcEMsd0RBQXNDO0FBRXRDLDhCQUE4QjtBQUM5Qix3REFBc0M7QUFDdEMsdURBQXFDO0FBQ3JDLG9EQUFrQztBQUNsQyw4REFBNEM7QUFDNUMsc0RBQW9DO0FBQ3BDLDREQUFxRjtBQUE1RSwwSEFBQSxzQkFBc0IsT0FBQTtBQUFFLHNIQUFBLGtCQUFrQixPQUFBO0FBQ25ELDREQU1pQztBQUwvQiwySEFBQSx1QkFBdUIsT0FBQTtBQUN2QiwySEFBQSx1QkFBdUIsT0FBQTtBQUN2Qiw0SEFBQSx3QkFBd0IsT0FBQTtBQUN4Qix3SEFBQSxvQkFBb0IsT0FBQTtBQUNwQiwrSEFBQSwyQkFBMkIsT0FBQTtBQUU3QiwwREFBd0M7QUFFeEMscUVBQXFFO0FBQ3JFLHVEQUdvQztBQUZsQyxxR0FBQSxTQUFTLE9BQUE7QUFDVCx3R0FBQSxZQUFZLE9BQUE7QUFHZCwrRUFBK0U7QUFDL0UsaUVBd0R5QztBQXZEdkMsc0JBQXNCO0FBQ3RCLG1HQUFBLEVBQUUsT0FBQTtBQUNGLDhHQUFBLGFBQWEsT0FBQTtBQUNiLGdIQUFBLGVBQWUsT0FBQTtBQUVmLGtCQUFrQjtBQUNsQix1R0FBQSxNQUFNLE9BQUE7QUFFTixpQkFBaUI7QUFDakIsc0hBQUEscUJBQXFCLE9BQUE7QUFDckIsd0hBQUEsdUJBQXVCLE9BQUE7QUFDdkIsdUhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsc0hBQUEscUJBQXFCLE9BQUE7QUFDckIsZ0lBQUEsK0JBQStCLE9BQUE7QUFDL0IsOEhBQUEsNkJBQTZCLE9BQUE7QUFDN0IsbUlBQUEsa0NBQWtDLE9BQUE7QUFDbEMsK0hBQUEsOEJBQThCLE9BQUE7QUFDOUIsOEhBQUEsNkJBQTZCLE9BQUE7QUFDN0Isb0lBQUEsbUNBQW1DLE9BQUE7QUFDbkMsMElBQUEseUNBQXlDLE9BQUE7QUF5QnpDLGVBQWU7QUFDZiw0R0FBQSxXQUFXLE9BQUE7QUFHWCx1QkFBdUI7QUFDdkIsNEdBQUEsV0FBVyxPQUFBO0FBQ1gsNkdBQUEsWUFBWSxPQUFBO0FBRVosNkNBQTZDO0FBQzdDLDhHQUFBLGFBQWEsT0FBQTtBQUlmLDRCQUE0QjtBQUM1QiwwREFBd0M7QUFDeEMsd0RBQXNDO0FBQ3RDLDJEQUF5QztBQUN6Qyw4REFBNEM7QUFDNUMsMkRBQXlDO0FBQ3pDLDRFQUEwRTtBQUFqRSwrSEFBQSxxQkFBcUIsT0FBQTtBQUU5Qiw0RUFBNEU7QUFDNUUsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQG1vZHVsZSBAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlXG4gKlxuICogQXBwbGljYXRpb24gY29uZmlndXJhdGlvbiwgcGlwZWxpbmUgZG9tYWluIHR5cGVzLCBhbmQgQ0RLIGNvbnN0cnVjdHMuXG4gKlxuICogKipDb25maWcqKlxuICogLSBDb25maWcg4oCUIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gc2luZ2xldG9uIChlbnZpcm9ubWVudC1kcml2ZW4pXG4gKiAtIENvbmZpZ1R5cGVzIOKAlCB0eXBlZCBjb25maWd1cmF0aW9uIGludGVyZmFjZXNcbiAqXG4gKiAqKlR5cGVzKipcbiAqIC0gUGlwZWxpbmVUeXBlLCBDb21wdXRlVHlwZSwgQWNjZXNzTW9kaWZpZXIsIFBsdWdpblR5cGUg4oCUIHBpcGVsaW5lIGRvbWFpbiBlbnVtc1xuICogLSBOZXR3b3JrVHlwZXMsIFJvbGVUeXBlcywgU2VjdXJpdHlHcm91cFR5cGVzIOKAlCBpbmZyYXN0cnVjdHVyZSB0eXBlIGRlZmluaXRpb25zXG4gKiAtIFNvdXJjZVR5cGVzLCBTdGVwVHlwZXMg4oCUIHBpcGVsaW5lIHNvdXJjZSBhbmQgc3RlcCBjb25maWd1cmF0aW9uIHR5cGVzXG4gKiAtIElkR2VuZXJhdG9yIOKAlCBkZXRlcm1pbmlzdGljIElEIGdlbmVyYXRpb25cbiAqXG4gKiAqKkNESyBDb25zdHJ1Y3RzKipcbiAqIC0gUGlwZWxpbmVCdWlsZGVyIOKAlCB0b3AtbGV2ZWwgQ0RLIHBpcGVsaW5lIGNvbnN0cnVjdFxuICogLSBTdGFnZUJ1aWxkZXIg4oCUIHBpcGVsaW5lIHN0YWdlIGNvbXBvc2l0aW9uXG4gKiAtIFBpcGVsaW5lQ29uZmlndXJhdGlvbiDigJQgcGlwZWxpbmUgY29uZmlnIHJlc29sdXRpb25cbiAqIC0gUGx1Z2luTG9va3VwIOKAlCBwbHVnaW4gcmVzb2x1dGlvbiBmb3IgcGlwZWxpbmUgc3RlcHNcbiAqIC0gQXJ0aWZhY3RNYW5hZ2VyIOKAlCBidWlsZCBhcnRpZmFjdCBtYW5hZ2VtZW50XG4gKlxuICogKipIZWxwZXJzKipcbiAqIC0gcmVwbGFjZU5vbkFscGhhbnVtZXJpYywgZXh0cmFjdE1ldGFkYXRhRW52IOKAlCBzdHJpbmcgYW5kIG1ldGFkYXRhIHV0aWxpdGllc1xuICogLSBidWlsZENvbmZpZ0Zyb21NZXRhZGF0YSwgbWV0YWRhdGFGb3JDb2RlUGlwZWxpbmUsIGV0Yy4g4oCUIG1ldGFkYXRhIGJ1aWxkZXJzXG4gKlxuICogKipSZS1leHBvcnRzIGZyb20gYXBpLWNvcmUqKlxuICogLSBFcnJvckNvZGUsIGNyZWF0ZUxvZ2dlclxuICpcbiAqICoqUmUtZXhwb3J0cyBmcm9tIHBpcGVsaW5lLWRhdGEqKlxuICogLSBkYiwgc2NoZW1hLCBnZXRDb25uZWN0aW9uLCBjbG9zZUNvbm5lY3Rpb24g4oCUIGRhdGFiYXNlIGFjY2Vzc1xuICogLSBDcnVkU2VydmljZSwgQmFzZUVudGl0eSDigJQgQ1JVRCBzZXJ2aWNlIGluZnJhc3RydWN0dXJlXG4gKiAtIEFsbCBxdWVyeSBjb25kaXRpb24gYnVpbGRlcnMgYW5kIGZpbHRlciB0eXBlc1xuICogLSBDb21wbGlhbmNlIGRvbWFpbiB0eXBlcyAoUnVsZVNldmVyaXR5LCBSdWxlVGFyZ2V0LCBldGMuKVxuICogLSBkcml6emxlUm93cywgZHJpenpsZUNvdW50IOKAlCB0eXBlIGhlbHBlcnNcbiAqL1xuXG4vLyBDb25maWd1cmF0aW9uXG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy9hcHAtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnL2NvbmZpZy10eXBlcyc7XG5cbi8vIENvcmUgdHlwZXMgKHB1YmxpYyBzdXJmYWNlKVxuZXhwb3J0ICogZnJvbSAnLi9jb3JlL3BpcGVsaW5lLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS9uZXR3b3JrLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS9yb2xlLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS9zZWN1cml0eS1ncm91cC10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUvaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCB7IHJlcGxhY2VOb25BbHBoYW51bWVyaWMsIGV4dHJhY3RNZXRhZGF0YUVudiB9IGZyb20gJy4vY29yZS9waXBlbGluZS1oZWxwZXJzJztcbmV4cG9ydCB7XG4gIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhLFxuICBtZXRhZGF0YUZvckNvZGVQaXBlbGluZSxcbiAgbWV0YWRhdGFGb3JDb2RlQnVpbGRTdGVwLFxuICBtZXRhZGF0YUZvclNoZWxsU3RlcCxcbiAgbWV0YWRhdGFGb3JCdWlsZEVudmlyb25tZW50LFxufSBmcm9tICcuL2NvcmUvbWV0YWRhdGEtYnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUvYXJ0aWZhY3QtbWFuYWdlcic7XG5cbi8vIFJlLWV4cG9ydCBmcm9tIGFwaS1jb3JlIChvbmx5IGl0ZW1zIGNvbnN1bWVkIGJ5IGV4dGVybmFsIHBhY2thZ2VzKVxuZXhwb3J0IHtcbiAgRXJyb3JDb2RlLFxuICBjcmVhdGVMb2dnZXIsXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcblxuLy8gUmUtZXhwb3J0IGRhdGFiYXNlIGxheWVyIGZyb20gcGlwZWxpbmUtZGF0YSAob25seSBpdGVtcyBjb25zdW1lZCBleHRlcm5hbGx5KVxuZXhwb3J0IHtcbiAgLy8gRGF0YWJhc2UgY29ubmVjdGlvblxuICBkYixcbiAgZ2V0Q29ubmVjdGlvbixcbiAgY2xvc2VDb25uZWN0aW9uLFxuXG4gIC8vIFNjaGVtYSAmIHRhYmxlc1xuICBzY2hlbWEsXG5cbiAgLy8gUXVlcnkgYnVpbGRlcnNcbiAgYnVpbGRQbHVnaW5Db25kaXRpb25zLFxuICBidWlsZFBpcGVsaW5lQ29uZGl0aW9ucyxcbiAgYnVpbGRNZXNzYWdlQ29uZGl0aW9ucyxcbiAgdmFsaWRhdGVNZXNzYWdlRmlsdGVyLFxuICBidWlsZENvbXBsaWFuY2VQb2xpY3lDb25kaXRpb25zLFxuICBidWlsZENvbXBsaWFuY2VSdWxlQ29uZGl0aW9ucyxcbiAgYnVpbGRDb21wbGlhbmNlRXhlbXB0aW9uQ29uZGl0aW9ucyxcbiAgYnVpbGRDb21wbGlhbmNlQXVkaXRDb25kaXRpb25zLFxuICBidWlsZENvbXBsaWFuY2VTY2FuQ29uZGl0aW9ucyxcbiAgYnVpbGRQdWJsaXNoZWRSdWxlQ2F0YWxvZ0NvbmRpdGlvbnMsXG4gIGJ1aWxkQ29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb25Db25kaXRpb25zLFxuXG4gIC8vIFF1ZXJ5IGZpbHRlciB0eXBlc1xuICB0eXBlIFBsdWdpbkZpbHRlcixcbiAgdHlwZSBQaXBlbGluZUZpbHRlcixcbiAgdHlwZSBNZXNzYWdlRmlsdGVyLFxuICB0eXBlIENvbXBsaWFuY2VQb2xpY3lGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVJ1bGVGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZUV4ZW1wdGlvbkZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlQXVkaXRGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVNjYW5GaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb25GaWx0ZXIsXG5cbiAgLy8gUGx1Z2luIHR5cGVzXG4gIHR5cGUgUGx1Z2luU2VjcmV0LFxuXG4gIC8vIENvbXBsaWFuY2UgdHlwZXNcbiAgdHlwZSBSdWxlU2V2ZXJpdHksXG4gIHR5cGUgUnVsZVRhcmdldCxcbiAgdHlwZSBSdWxlT3BlcmF0b3IsXG4gIHR5cGUgUnVsZUNvbmRpdGlvbk1vZGUsXG4gIHR5cGUgUnVsZVNjb3BlLFxuICB0eXBlIFJ1bGVDb25kaXRpb24sXG4gIHR5cGUgQ29tcGxpYW5jZVJvbGVUeXBlLFxuXG4gIC8vIENSVUQgc2VydmljZVxuICBDcnVkU2VydmljZSxcbiAgdHlwZSBCYXNlRW50aXR5LFxuXG4gIC8vIERyaXp6bGUgdHlwZSBoZWxwZXJzXG4gIGRyaXp6bGVSb3dzLFxuICBkcml6emxlQ291bnQsXG5cbiAgLy8gTWlncmF0aW9uIHJ1bm5lciAoaWRlbXBvdGVudCBzdGFydHVwIGhvb2spXG4gIHJ1bk1pZ3JhdGlvbnMsXG4gIHR5cGUgTWlncmF0ZU9wdGlvbnMsXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGEnO1xuXG4vLyBQaXBlbGluZSAoQ0RLIGNvbnN0cnVjdHMpXG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3NvdXJjZS10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3N0ZXAtdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS9zdGFnZS1idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvcGlwZWxpbmUtYnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3BsdWdpbi1sb29rdXAnO1xuZXhwb3J0IHsgUGlwZWxpbmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9waXBlbGluZS9waXBlbGluZS1jb25maWd1cmF0aW9uJztcblxuLy8gVGVtcGxhdGUgZW5naW5lIOKAlCBzeW50aC10aW1lIHNjcmlwdGluZyBmb3IgcGlwZWxpbmUgY29uZmlnICsgcGx1Z2luIHNwZWNzXG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlJztcbiJdfQ==
@@ -199,8 +199,16 @@ class PipelineBuilder extends constructs_1.Construct {
199
199
  stageBuilder.addStages(this.pipeline, props.stages);
200
200
  }
201
201
  // ── Tags ──
202
+ // The first three are operations-essential and used by `pipeline-manager
203
+ // audit-stacks` to diff CFN stacks against the pipeline_registry table.
204
+ // `OrgId` is the canonical key for cost attribution (AWS Cost Explorer
205
+ // groups by tag key/value when activated in Billing settings).
206
+ aws_cdk_lib_1.Tags.of(this.pipeline).add('pipeline-builder', 'true');
202
207
  aws_cdk_lib_1.Tags.of(this.pipeline).add('project', this.config.project);
203
208
  aws_cdk_lib_1.Tags.of(this.pipeline).add('organization', this.config.organization);
209
+ if (props.orgId) {
210
+ aws_cdk_lib_1.Tags.of(this.pipeline).add('OrgId', props.orgId);
211
+ }
204
212
  if (props.tags) {
205
213
  for (const [key, value] of Object.entries(props.tags)) {
206
214
  aws_cdk_lib_1.Tags.of(this.pipeline).add(key, value);
@@ -304,4 +312,4 @@ class PipelineBuilder extends constructs_1.Construct {
304
312
  }
305
313
  }
306
314
  exports.PipelineBuilder = PipelineBuilder;
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9waXBlbGluZS9waXBlbGluZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMseURBQTBEO0FBQzFELDZDQUE2QztBQUM3Qyx1RUFBeUQ7QUFDekQsbUVBQXdGO0FBQ3hGLCtEQUFpRDtBQUNqRCx3RUFBMEQ7QUFDMUQseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyxxREFBNEU7QUFDNUUsMkNBQXVDO0FBQ3ZDLHFFQUFpRTtBQUNqRSxtREFBK0M7QUFDL0MscURBQWlEO0FBQ2pELG1EQUErQztBQUUvQyxxREFBNkQ7QUFDN0QsK0RBQTJEO0FBQzNELHVEQUFnRDtBQUNoRCwrREFBbUU7QUFDbkUsNkNBQWlEO0FBRWpELCtEQUErRDtBQUMvRCwyREFBbUU7QUFFbkUsdUNBQTJDO0FBRTNDLDJEQUE4RDtBQUU5RCxNQUFNLGtCQUFrQixHQUErQztJQUNyRSxNQUFNLEVBQUUsNkNBQTBCLENBQUMseUJBQXlCO0lBQzVELFNBQVMsRUFBRSw2Q0FBMEIsQ0FBQyw0QkFBNEI7SUFDbEUsT0FBTyxFQUFFLDZDQUEwQixDQUFDLDBCQUEwQjtJQUM5RCxRQUFRLEVBQUUsNkNBQTBCLENBQUMsMkJBQTJCO0lBQ2hFLFVBQVUsRUFBRSw2Q0FBMEIsQ0FBQyw2QkFBNkI7Q0FDckUsQ0FBQztBQUVGLFNBQVMsdUJBQXVCLENBQUMsS0FBYztJQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENB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LEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixLQUFLLEdBQUcsSUFBSTtnQkFDdEQsNEJBQTRCLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO2FBQzdDLENBQUM7U0FDSCxDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUc7WUFDckIsR0FBRyxDQUFDLFlBQVksRUFBRSxjQUFjLElBQUksRUFBRSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyx3QkFBd0IsSUFBSSxFQUFFLENBQUM7U0FDcEMsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM3RixHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUNwRCxnQkFBZ0IsRUFBRSxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRTtTQUM1RCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbFBELDBDQWtQQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMsIFBpcGVsaW5lVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUnO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgc25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0IHsgQ29kZVBpcGVsaW5lLCB0eXBlIENvZGVCdWlsZE9wdGlvbnMgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBQaXBlbGluZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3BpcGVsaW5lLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgUGx1Z2luTG9va3VwIH0gZnJvbSAnLi9wbHVnaW4tbG9va3VwJztcbmltcG9ydCB7IFNvdXJjZUJ1aWxkZXIgfSBmcm9tICcuL3NvdXJjZS1idWlsZGVyJztcbmltcG9ydCB7IFN0YWdlQnVpbGRlciB9IGZyb20gJy4vc3RhZ2UtYnVpbGRlcic7XG5pbXBvcnQgdHlwZSB7IFN0YWdlT3B0aW9ucywgU3ludGhPcHRpb25zIH0gZnJvbSAnLi9zdGVwLXR5cGVzJztcbmltcG9ydCB7IENvbmZpZywgQ29yZUNvbnN0YW50cyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB7IEFydGlmYWN0TWFuYWdlciB9IGZyb20gJy4uL2NvcmUvYXJ0aWZhY3QtbWFuYWdlcic7XG5pbXBvcnQgeyBVbmlxdWVJZCB9IGZyb20gJy4uL2NvcmUvaWQtZ2VuZXJhdG9yJztcbmltcG9ydCB7IG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lIH0gZnJvbSAnLi4vY29yZS9tZXRhZGF0YS1idWlsZGVyJztcbmltcG9ydCB7IHJlc29sdmVOZXR3b3JrIH0gZnJvbSAnLi4vY29yZS9uZXR3b3JrJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkRGVmYXVsdHMgfSBmcm9tICcuLi9jb3JlL25ldHdvcmstdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ29kZUJ1aWxkU3RlcCB9IGZyb20gJy4uL2NvcmUvcGlwZWxpbmUtaGVscGVycyc7XG5pbXBvcnQgeyBNZXRhZGF0YUtleXMsIFRyaWdnZXJUeXBlIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE1ldGFEYXRhVHlwZSB9IGZyb20gJy4uL2NvcmUvcGlwZWxpbmUtdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZVJvbGUgfSBmcm9tICcuLi9jb3JlL3JvbGUnO1xuaW1wb3J0IHR5cGUgeyBSb2xlQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9yb2xlLXR5cGVzJztcbmltcG9ydCB7IHJlc29sdmVTZWN1cml0eUdyb3VwIH0gZnJvbSAnLi4vY29yZS9zZWN1cml0eS1ncm91cCc7XG5cbmNvbnN0IFBJUEVMSU5FX0VWRU5UX01BUDogUmVjb3JkPHN0cmluZywgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHM+ID0ge1xuICBGQUlMRUQ6IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9GQUlMRUQsXG4gIFNVQ0NFRURFRDogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX1NVQ0NFRURFRCxcbiAgU1RBUlRFRDogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX1NUQVJURUQsXG4gIENBTkNFTEVEOiBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fQ0FOQ0VMRUQsXG4gIFNVUEVSU0VERUQ6IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9TVVBFUlNFREVELFxufTtcblxuZnVuY3Rpb24gcGFyc2VOb3RpZmljYXRpb25FdmVudHModmFsdWU6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJykubWFwKHMgPT4gcy50cmltKCkpO1xuICByZXR1cm4gWydGQUlMRUQnLCAnU1VDQ0VFREVEJ107XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgUGlwZWxpbmVCdWlsZGVyIGNvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkZXJQcm9wcyB7XG4gIC8qKiBQcm9qZWN0IGlkZW50aWZpZXIgKHdpbGwgYmUgc2FuaXRpemVkIHRvIGxvd2VyY2FzZSBhbHBoYW51bWVyaWMgd2l0aCB1bmRlcnNjb3JlcykgKi9cbiAgcmVhZG9ubHkgcHJvamVjdDogc3RyaW5nO1xuXG4gIC8qKiBPcmdhbml6YXRpb24gaWRlbnRpZmllciAod2lsbCBiZSBzYW5pdGl6ZWQgdG8gbG93ZXJjYXNlIGFscGhhbnVtZXJpYyB3aXRoIHVuZGVyc2NvcmVzKSAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb246IHN0cmluZztcblxuICAvKiogVGVuYW50IGlkZW50aWZpZXIgZm9yIHJlc29sdmluZyBwZXItb3JnIHNlY3JldHMgZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyICovXG4gIHJlYWRvbmx5IG9yZ0lkPzogc3RyaW5nO1xuXG4gIC8qKiBQaXBlbGluZSBkYXRhYmFzZSByZWNvcmQgSUQg4oCUIGluamVjdGVkIGFzIFBJUEVMSU5FX0lEIGVudiB2YXIgZm9yIGF1dG9ub21vdXMgc3ludGggKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVJZD86IHN0cmluZztcblxuICAvKiogT3B0aW9uYWwgY3VzdG9tIHBpcGVsaW5lIG5hbWUuIERlZmF1bHRzIHRvOiB7b3JnYW5pemF0aW9ufS17cHJvamVjdH0tcGlwZWxpbmUgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBHbG9iYWwgbWV0YWRhdGEgaW5oZXJpdGVkIGJ5IGFsbCBwaXBlbGluZSBzdGVwcyAqL1xuICByZWFkb25seSBnbG9iYWw/OiBNZXRhRGF0YVR5cGU7XG5cbiAgLyoqXG4gICAqIFBpcGVsaW5lLWxldmVsIENvZGVCdWlsZCBkZWZhdWx0cyBhcHBsaWVkIHRvIGFsbCBDb2RlQnVpbGQgYWN0aW9uc1xuICAgKiAoc3ludGgsIHNlbGYtbXV0YXRpb24sIGFzc2V0IHB1Ymxpc2hpbmcpIHZpYSBgY29kZUJ1aWxkRGVmYXVsdHNgLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdHM/OiBDb2RlQnVpbGREZWZhdWx0cztcblxuICAvKipcbiAgICogT3B0aW9uYWwgSUFNIHJvbGUgZm9yIHRoZSBDb2RlUGlwZWxpbmUuXG4gICAqIFdoZW4gcHJvdmlkZWQsIHJlc29sdmVzIHRvIGEgQ0RLIElSb2xlIGFuZCBpcyBwYXNzZWQgdG8gdGhlIENvZGVQaXBlbGluZSBjb25zdHJ1Y3QuXG4gICAqIFdoZW4gb21pdHRlZCwgQ0RLIGF1dG8tY3JlYXRlcyBhIHJvbGUgd2l0aCB0aGUgY29ycmVjdCBjb2RlcGlwZWxpbmUuYW1hem9uYXdzLmNvbSBwcmluY2lwYWwuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogUm9sZUNvbmZpZztcblxuICAvKiogU3ludGhlc2lzIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIHNvdXJjZSBhbmQgcGx1Z2luIGRldGFpbHMgKi9cbiAgcmVhZG9ubHkgc3ludGg6IFN5bnRoT3B0aW9ucztcblxuICAvKipcbiAgICogT3B0aW9uYWwgcGlwZWxpbmUgc3RhZ2VzLCBlYWNoIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgQ29kZUJ1aWxkIHN0ZXBzLlxuICAgKiBTdGFnZXMgYXJlIGFkZGVkIGFzIHdhdmVzIHRvIHRoZSBDb2RlUGlwZWxpbmUgYWZ0ZXIgdGhlIHN5bnRoIHN0ZXAuXG4gICAqL1xuICByZWFkb25seSBzdGFnZXM/OiBTdGFnZU9wdGlvbnNbXTtcblxuICAvKiogT3B0aW9uYWwgY3Jvbi9yYXRlIGV4cHJlc3Npb24gZm9yIHNjaGVkdWxlZCBwaXBlbGluZSBleGVjdXRpb24uICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogc3RyaW5nO1xuXG4gIC8qKiBDdXN0b20gdGFncyBhcHBsaWVkIHRvIGFsbCBwaXBlbGluZSByZXNvdXJjZXMuICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIENESyBjb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIGFuZCBjb25maWd1cmVzIGEgQ29kZVBpcGVsaW5lIGZvciBjb250aW51b3VzIGRlcGxveW1lbnQuXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIE11bHRpLXNvdXJjZSBzdXBwb3J0IChTMywgR2l0SHViLCBDb2RlU3RhcilcbiAqIC0gUGx1Z2luLWJhc2VkIGJ1aWxkIHN0ZXBzXG4gKiAtIE1ldGFkYXRhLWRyaXZlbiBjb25maWd1cmF0aW9uXG4gKiAtIEF1dG9tYXRpYyB0YWdnaW5nXG4gKiAtIEF1dG9tYXRpYyBzYW5pdGl6YXRpb24gb2YgcHJvamVjdCBhbmQgb3JnYW5pemF0aW9uIG5hbWVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5ldyBQaXBlbGluZUJ1aWxkZXIodGhpcywgJ015UGlwZWxpbmUnLCB7XG4gKiAgIHByb2plY3Q6ICdteS1hcHAnLFxuICogICBvcmdhbml6YXRpb246ICdteS1vcmcnLFxuICogICBzeW50aDoge1xuICogICAgIHNvdXJjZToge1xuICogICAgICAgdHlwZTogJ2dpdGh1YicsXG4gKiAgICAgICBvcHRpb25zOiB7IHJlcG86ICdvd25lci9yZXBvJywgYnJhbmNoOiAnbWFpbicgfVxuICogICAgIH0sXG4gKiAgICAgcGx1Z2luOiB7IG5hbWU6ICdzeW50aCcgfVxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVCdWlsZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHBpcGVsaW5lOiBDb2RlUGlwZWxpbmU7XG4gIHB1YmxpYyByZWFkb25seSBjb25maWc6IFBpcGVsaW5lQ29uZmlndXJhdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQnVpbGRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIFVzZSBQaXBlbGluZUNvbmZpZ3VyYXRpb24gZm9yIGFsbCBidXNpbmVzcyBsb2dpYyAodmFsaWRhdGlvbiwgc2FuaXRpemF0aW9uLCBtZXRhZGF0YSBtZXJnaW5nKVxuICAgIHRoaXMuY29uZmlnID0gbmV3IFBpcGVsaW5lQ29uZmlndXJhdGlvbihwcm9wcyk7XG5cbiAgICBjb25zdCBzZXJ2ZXJDb25maWcgPSBDb25maWcuZ2V0KCdzZXJ2ZXInKTtcbiAgICBjb25zdCBhd3NDb25maWcgPSBDb25maWcuZ2V0KCdhd3MnKTtcbiAgICBjb25zdCB1bmlxdWVJZCA9IG5ldyBVbmlxdWVJZCgpO1xuICAgIGNvbnN0IHBsdWdpbkxvb2t1cCA9IG5ldyBQbHVnaW5Mb29rdXAoXG4gICAgICB0aGlzLFxuICAgICAgdW5pcXVlSWQuZ2VuZXJhdGUoJ3BsdWdpbjpsb29rdXAnKSxcbiAgICAgIHtcbiAgICAgICAgb3JnYW5pemF0aW9uOiB0aGlzLmNvbmZpZy5vcmdhbml6YXRpb24sXG4gICAgICAgIHByb2plY3Q6IHRoaXMuY29uZmlnLnByb2plY3QsXG4gICAgICAgIHBsYXRmb3JtVXJsOiBzZXJ2ZXJDb25maWcucGxhdGZvcm1VcmwsXG4gICAgICAgIHVuaXF1ZUlkLFxuICAgICAgICBvcmdJZDogcHJvcHMub3JnSWQsXG4gICAgICAgIHJ1bnRpbWU6IGF3c0NvbmZpZy5sYW1iZGEucnVudGltZSxcbiAgICAgICAgdGltZW91dDogYXdzQ29uZmlnLmxhbWJkYS50aW1lb3V0LFxuICAgICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiBhd3NDb25maWcubGFtYmRhLnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnMsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgc291cmNlIGFuZCBidWlsZCBzdGVwXG4gICAgY29uc3Qgc291cmNlQnVpbGRlciA9IG5ldyBTb3VyY2VCdWlsZGVyKHRoaXMsIHRoaXMuY29uZmlnKTtcbiAgICBjb25zdCBzb3VyY2UgPSBzb3VyY2VCdWlsZGVyLmNyZWF0ZSh1bmlxdWVJZCk7XG5cbiAgICAvLyBSRVNPTFZFRF9TWU5USF9QTFVHSU49dHJ1ZSAoQ29kZVBpcGVsaW5lKTogcmVzb2x2ZSBwbHVnaW4gdmlhIGN1c3RvbSByZXNvdXJjZSBMYW1iZGFcbiAgICAvLyBSRVNPTFZFRF9TWU5USF9QTFVHSU49ZmFsc2UgKGRlZmF1bHQvQ0xJKTogdXNlIGZhbGxiYWNrIHdpdGggcGlwZWxpbmUtbWFuYWdlciBzeW50aCBjb21tYW5kc1xuICAgIGNvbnN0IHBsdWdpbiA9IGF3c0NvbmZpZy5yZXNvbHZlZFN5bnRoUGx1Z2luXG4gICAgICA/IHBsdWdpbkxvb2t1cC5wbHVnaW4odGhpcy5jb25maWcucGx1Z2luKVxuICAgICAgOiBwbHVnaW5Mb29rdXAuZmFsbGJhY2tTeW50aCgpO1xuICAgIGNvbnN0IGRlZmF1bHRDb21wdXRlVHlwZSA9IGF3c0NvbmZpZy5jb2RlQnVpbGQuY29tcHV0ZVR5cGU7XG4gICAgY29uc3QgYXJ0aWZhY3RNYW5hZ2VyID0gbmV3IEFydGlmYWN0TWFuYWdlcigpO1xuICAgIGNvbnN0IHN5bnRoQWxpYXMgPSB0aGlzLmNvbmZpZy5wbHVnaW4uYWxpYXMgPz8gdGhpcy5jb25maWcucGx1Z2luLm5hbWU7XG5cbiAgICAvLyBTY29wZSBleHBvc2VkIHRvIHBsdWdpbi1zcGVjIHRlbXBsYXRlcyBhcyBgcGlwZWxpbmUuKmAuIEJ1aWx0IG9uY2VcbiAgICAvLyBoZXJlIHNvIGJvdGggdGhlIHN5bnRoIHN0ZXAgYW5kIGV2ZXJ5IHN0YWdlIHN0ZXAgcmVzb2x2ZSBhZ2FpbnN0XG4gICAgLy8gdGhlIHNhbWUgc25hcHNob3QuXG4gICAgY29uc3QgcGlwZWxpbmVTY29wZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBwaXBlbGluZToge1xuICAgICAgICBwcm9qZWN0TmFtZTogdGhpcy5jb25maWcucHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogdGhpcy5jb25maWcucHJvamVjdCxcbiAgICAgICAgb3JnSWQ6IHRoaXMuY29uZmlnLm9yZ2FuaXphdGlvbixcbiAgICAgICAgb3JnYW5pemF0aW9uOiB0aGlzLmNvbmZpZy5vcmdhbml6YXRpb24sXG4gICAgICAgIHBpcGVsaW5lTmFtZTogdGhpcy5jb25maWcucGlwZWxpbmVOYW1lLFxuICAgICAgICBtZXRhZGF0YTogdGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkLFxuICAgICAgICB2YXJzOiAocHJvcHMgYXMgeyB2YXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSkudmFycyA/PyB7fSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHN5bnRoID0gY3JlYXRlQ29kZUJ1aWxkU3RlcCh7XG4gICAgICAuLi50aGlzLmNvbmZpZy5zeW50aEN1c3RvbWl6YXRpb24sXG4gICAgICBpZDogdW5pcXVlSWQuZ2VuZXJhdGUoJ2NkazpzeW50aCcpLFxuICAgICAgdW5pcXVlSWQsXG4gICAgICBwbHVnaW4sXG4gICAgICBpbnB1dDogc291cmNlLFxuICAgICAgbWV0YWRhdGE6IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCxcbiAgICAgIG5ldHdvcms6IHRoaXMuY29uZmlnLm5ldHdvcmssXG4gICAgICBzY29wZTogdGhpcyxcbiAgICAgIGRlZmF1bHRDb21wdXRlVHlwZSxcbiAgICAgIGFydGlmYWN0TWFuYWdlcixcbiAgICAgIHN0YWdlTmFtZTogJ25vLXN0YWdlJyxcbiAgICAgIHN0YWdlQWxpYXM6ICduby1zdGFnZS1hbGlhcycsXG4gICAgICBwbHVnaW5BbGlhczogYCR7c3ludGhBbGlhc30tYWxpYXNgLFxuICAgICAgb3JnSWQ6IHByb3BzLm9yZ0lkLFxuICAgICAgcGlwZWxpbmVTY29wZSxcbiAgICB9KTtcblxuICAgIC8vIFJlc29sdmUgcGlwZWxpbmUtbGV2ZWwgZGVmYXVsdHMgaW50byBjb2RlQnVpbGREZWZhdWx0c1xuICAgIC8vIEJ1aWxkIHRoZSBwZXItb3JnIHBsYXRmb3JtIHNlY3JldCBuYW1lIGZvciBDb2RlQnVpbGQgZW52IHZhcnNcbiAgICBjb25zdCBwbGF0Zm9ybVNlY3JldE5hbWUgPSBwcm9wcy5vcmdJZFxuICAgICAgPyBDb3JlQ29uc3RhbnRzLnNlY3JldFBhdGgocHJvcHMub3JnSWQsICdwbGF0Zm9ybScpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNvZGVCdWlsZERlZmF1bHRzID0gdGhpcy5yZXNvbHZlRGVmYXVsdHModGhpcy5jb25maWcuZGVmYXVsdHMsIHVuaXF1ZUlkLCBwcm9wcy5waXBlbGluZUlkLCBwbGF0Zm9ybVNlY3JldE5hbWUsIHNlcnZlckNvbmZpZy5wbGF0Zm9ybVVybCk7XG5cbiAgICAvLyBSZXNvbHZlIElBTSByb2xlIGlmIGV4cGxpY2l0bHkgcHJvdmlkZWQ7IG90aGVyd2lzZSBsZXQgQ0RLIGF1dG8tY3JlYXRlXG4gICAgLy8gdGhlIHBpcGVsaW5lIHJvbGUgd2l0aCB0aGUgY29ycmVjdCBjb2RlcGlwZWxpbmUuYW1hem9uYXdzLmNvbSBwcmluY2lwYWwuXG4gICAgaWYgKHByb3BzLnJvbGU/LnR5cGUgPT09ICdjb2RlQnVpbGREZWZhdWx0Jykge1xuICAgICAgY3JlYXRlTG9nZ2VyKCdQaXBlbGluZUJ1aWxkZXInKS53YXJuKFxuICAgICAgICAnY29kZUJ1aWxkRGVmYXVsdCByb2xlIHR5cGUgdXNlcyBjb2RlYnVpbGQuYW1hem9uYXdzLmNvbSB0cnVzdCBwcmluY2lwYWwg4oCUICcgK1xuICAgICAgICAndGhpcyBpcyBub3Qgc3VpdGFibGUgYXMgdGhlIHBpcGVsaW5lLWxldmVsIHJvbGUuIENvbnNpZGVyIHVzaW5nIHJvbGVBcm4vcm9sZU5hbWUgJyArXG4gICAgICAgICdvciBvbWl0dGluZyB0aGUgcm9sZSB0byBsZXQgQ0RLIGF1dG8tY3JlYXRlIG9uZSB3aXRoIGNvZGVwaXBlbGluZS5hbWF6b25hd3MuY29tLicsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCByb2xlID0gcHJvcHMucm9sZVxuICAgICAgPyByZXNvbHZlUm9sZSh0aGlzLCB1bmlxdWVJZCwgcHJvcHMucm9sZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQ3JlYXRlIENvZGVQaXBlbGluZSBjb25zdHJ1Y3RcbiAgICB0aGlzLnBpcGVsaW5lID0gbmV3IENvZGVQaXBlbGluZSh0aGlzLCB1bmlxdWVJZC5nZW5lcmF0ZSgncGlwZWxpbmVzOmNvZGVwaXBlbGluZScpLCB7XG4gICAgICAuLi4oY29kZUJ1aWxkRGVmYXVsdHMgJiYgeyBjb2RlQnVpbGREZWZhdWx0cyB9KSxcbiAgICAgIC4uLihyb2xlICYmIHsgcm9sZSB9KSxcbiAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgcGlwZWxpbmVOYW1lOiB0aGlzLmNvbmZpZy5waXBlbGluZU5hbWUsXG4gICAgICBzeW50aCxcbiAgICAgIC4uLm1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lKHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuc3RhZ2VzKSB7XG4gICAgICBjb25zdCBzdGFnZUJ1aWxkZXIgPSBuZXcgU3RhZ2VCdWlsZGVyKHtcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICAgIHBsdWdpbkxvb2t1cCxcbiAgICAgICAgdW5pcXVlSWQsXG4gICAgICAgIGdsb2JhbE1ldGFkYXRhOiB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWQsXG4gICAgICAgIGRlZmF1bHRDb21wdXRlVHlwZSxcbiAgICAgICAgYXJ0aWZhY3RNYW5hZ2VyLFxuICAgICAgICBvcmdJZDogcHJvcHMub3JnSWQsXG4gICAgICAgIHBpcGVsaW5lU2NvcGUsXG4gICAgICB9KTtcbiAgICAgIHN0YWdlQnVpbGRlci5hZGRTdGFnZXModGhpcy5waXBlbGluZSwgcHJvcHMuc3RhZ2VzKTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgVGFncyDilIDilIBcbiAgICBUYWdzLm9mKHRoaXMucGlwZWxpbmUpLmFkZCgncHJvamVjdCcsIHRoaXMuY29uZmlnLnByb2plY3QpO1xuICAgIFRhZ3Mub2YodGhpcy5waXBlbGluZSkuYWRkKCdvcmdhbml6YXRpb24nLCB0aGlzLmNvbmZpZy5vcmdhbml6YXRpb24pO1xuICAgIGlmIChwcm9wcy50YWdzKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wcy50YWdzKSkge1xuICAgICAgICBUYWdzLm9mKHRoaXMucGlwZWxpbmUpLmFkZChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCdWlsZCB0aGUgaW50ZXJuYWwgcGlwZWxpbmUgYmVmb3JlIGFjY2Vzc2luZyBpdHMgcHJvcGVydGllc1xuICAgIHRoaXMucGlwZWxpbmUuYnVpbGRQaXBlbGluZSgpO1xuICAgIGNvbnN0IGNka1BpcGVsaW5lID0gdGhpcy5waXBlbGluZS5waXBlbGluZTtcbiAgICBjb25zdCBtZXRhID0gdGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkO1xuXG4gICAgLy8g4pSA4pSAIFNOUyBOb3RpZmljYXRpb25zIOKUgOKUgFxuICAgIGNvbnN0IG5vdGlmaWNhdGlvblRvcGljQXJuID0gbWV0YVtNZXRhZGF0YUtleXMuTk9USUZJQ0FUSU9OX1RPUElDX0FSTl07XG4gICAgaWYgKHR5cGVvZiBub3RpZmljYXRpb25Ub3BpY0FybiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRvcGljID0gc25zLlRvcGljLmZyb21Ub3BpY0Fybih0aGlzLCAnTm90aWZpY2F0aW9uVG9waWMnLCBub3RpZmljYXRpb25Ub3BpY0Fybik7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25FdmVudHMgPSBwYXJzZU5vdGlmaWNhdGlvbkV2ZW50cyhtZXRhW01ldGFkYXRhS2V5cy5OT1RJRklDQVRJT05fRVZFTlRTXSlcbiAgICAgICAgLm1hcChlID0+IFBJUEVMSU5FX0VWRU5UX01BUFtlLnRvVXBwZXJDYXNlKCldKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKG5vdGlmaWNhdGlvbkV2ZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNka1BpcGVsaW5lLm5vdGlmeU9uKCdQaXBlbGluZU5vdGlmaWNhdGlvbicsIHRvcGljLCB7IGV2ZW50czogbm90aWZpY2F0aW9uRXZlbnRzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOKUgOKUgCBTY2hlZHVsZWQgRXhlY3V0aW9uIOKUgOKUgFxuICAgIGlmIChwcm9wcy5zeW50aC5zb3VyY2Uub3B0aW9ucz8udHJpZ2dlciA9PT0gVHJpZ2dlclR5cGUuU0NIRURVTEUgfHwgcHJvcHMuc2NoZWR1bGUpIHtcbiAgICAgIGNvbnN0IGV4cHIgPSBwcm9wcy5zY2hlZHVsZSB8fCAocHJvcHMuc3ludGguc291cmNlLm9wdGlvbnMgYXMgeyBzY2hlZHVsZT86IHN0cmluZyB9KT8uc2NoZWR1bGUgfHwgJ3JhdGUoMSBkYXkpJztcbiAgICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnU2NoZWR1bGVSdWxlJywge1xuICAgICAgICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLmV4cHJlc3Npb24oZXhwciksXG4gICAgICAgIHRhcmdldHM6IFtuZXcgdGFyZ2V0cy5Db2RlUGlwZWxpbmUoY2RrUGlwZWxpbmUpXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBFeGVjdXRpb24gRXZlbnQgVHJhY2tpbmcgKGZvcndhcmQgcGlwZWxpbmUgc3RhdGUgY2hhbmdlcyB0byBTTlMpIOKUgOKUgFxuICAgIGlmIChtZXRhW01ldGFkYXRhS2V5cy5FTkFCTEVfRVhFQ1VUSU9OX0VWRU5UU10gJiYgdHlwZW9mIG5vdGlmaWNhdGlvblRvcGljQXJuID09PSAnc3RyaW5nJykge1xuICAgICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdFeGVjdXRpb25FdmVudFJ1bGUnLCB7XG4gICAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAgIHNvdXJjZTogWydhd3MuY29kZXBpcGVsaW5lJ10sXG4gICAgICAgICAgZGV0YWlsVHlwZTogWydDb2RlUGlwZWxpbmUgUGlwZWxpbmUgRXhlY3V0aW9uIFN0YXRlIENoYW5nZSddLFxuICAgICAgICAgIHJlc291cmNlczogW2Nka1BpcGVsaW5lLnBpcGVsaW5lQXJuXSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLlNuc1RvcGljKFxuICAgICAgICAgIHNucy5Ub3BpYy5mcm9tVG9waWNBcm4odGhpcywgJ0V4ZWN1dGlvbkV2ZW50VG9waWMnLCBub3RpZmljYXRpb25Ub3BpY0FybiksXG4gICAgICAgICldLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8g4pSA4pSAIEFydGlmYWN0IEVuY3J5cHRpb24gKEtNUyBrZXkpIOKUgOKUgFxuICAgIGNvbnN0IGttc0tleUFybiA9IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZFtNZXRhZGF0YUtleXMuS01TX0tFWV9BUk5dO1xuICAgIGlmICh0eXBlb2Yga21zS2V5QXJuID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3Qga2V5ID0ga21zLktleS5mcm9tS2V5QXJuKHRoaXMsICdBcnRpZmFjdEtleScsIGttc0tleUFybik7XG4gICAgICBUYWdzLm9mKGtleSkuYWRkKCdwaXBlbGluZScsIHRoaXMuY29uZmlnLnBpcGVsaW5lTmFtZSk7XG4gICAgfVxuXG4gICAgLy8g4pSA4pSAIFBpcGVsaW5lIE1ldHJpY3MgJiBBbGFybXMg4pSA4pSAXG4gICAgY29uc3QgZW5hYmxlTWV0cmljcyA9IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZFtNZXRhZGF0YUtleXMuRU5BQkxFX01FVFJJQ1NdO1xuICAgIGlmIChlbmFibGVNZXRyaWNzKSB7XG4gICAgICBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnUGlwZWxpbmVGYWlsdXJlQWxhcm0nLCB7XG4gICAgICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgICAgICBuYW1lc3BhY2U6ICdBV1MvQ29kZVBpcGVsaW5lJyxcbiAgICAgICAgICBtZXRyaWNOYW1lOiAnRmFpbGVkUGlwZWxpbmVFeGVjdXRpb25Db3VudCcsXG4gICAgICAgICAgZGltZW5zaW9uc01hcDogeyBQaXBlbGluZU5hbWU6IHRoaXMuY29uZmlnLnBpcGVsaW5lTmFtZSB9LFxuICAgICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYFBpcGVsaW5lICR7dGhpcy5jb25maWcucGlwZWxpbmVOYW1lfSBleGVjdXRpb24gZmFpbGVkYCxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBDb2RlQnVpbGREZWZhdWx0cyBpbnRvIHRoZSBzaGFwZSBleHBlY3RlZCBieSBDREsncyBjb2RlQnVpbGREZWZhdWx0cy5cbiAgICogQ29tYmluZXMgbmV0d29yayBjb25maWcsIHNlY3VyaXR5IGdyb3VwcywgYW5kIHBpcGVsaW5lLWxldmVsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKiAoUElQRUxJTkVfSUQsIEVYRUNVVElPTl9JRCwgUExBVEZPUk1fQkFTRV9VUkwpIGF2YWlsYWJsZSB0byBhbGwgQ29kZUJ1aWxkIGFjdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVEZWZhdWx0cyhcbiAgICBkZWZhdWx0czogQ29kZUJ1aWxkRGVmYXVsdHMgfCB1bmRlZmluZWQsXG4gICAgaWQ6IFVuaXF1ZUlkLFxuICAgIHBpcGVsaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBwbGF0Zm9ybVNlY3JldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBwbGF0Zm9ybVVybDogc3RyaW5nLFxuICApOiBDb2RlQnVpbGRPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBuZXR3b3JrUHJvcHMgPSBkZWZhdWx0cz8ubmV0d29ya1xuICAgICAgPyByZXNvbHZlTmV0d29yayh0aGlzLCBpZCwgZGVmYXVsdHMubmV0d29yaylcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgc3RhbmRhbG9uZVNlY3VyaXR5R3JvdXBzID0gZGVmYXVsdHM/LnNlY3VyaXR5R3JvdXBzXG4gICAgICA/IHJlc29sdmVTZWN1cml0eUdyb3VwKHRoaXMsIGlkLCBkZWZhdWx0cy5zZWN1cml0eUdyb3VwcylcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gUGlwZWxpbmUtbGV2ZWwgZW52IHZhcnMgYXZhaWxhYmxlIHRvIGFsbCBDb2RlQnVpbGQgYWN0aW9uc1xuICAgIC8vIE5vdGU6ICN7Y29kZXBpcGVsaW5lLip9IHJlc29sdmVkIHZhcmlhYmxlcyBtdXN0IGdvIHRocm91Z2ggQ29kZUJ1aWxkU3RlcC5lbnZcbiAgICAvLyAoYWN0aW9uLWxldmVsKSwgbm90IGJ1aWxkRW52aXJvbm1lbnQuZW52aXJvbm1lbnRWYXJpYWJsZXMgKHByb2plY3QtbGV2ZWwpLlxuICAgIGNvbnN0IHBpcGVsaW5lRW52VmFyczogUmVjb3JkPHN0cmluZywgeyB2YWx1ZTogc3RyaW5nIH0+ID0ge1xuICAgICAgUExBVEZPUk1fQkFTRV9VUkw6IHsgdmFsdWU6IHBsYXRmb3JtVXJsIH0sXG4gICAgICAuLi4ocGlwZWxpbmVJZCAmJiB7IFBJUEVMSU5FX0lEOiB7IHZhbHVlOiBwaXBlbGluZUlkIH0gfSksXG4gICAgICAuLi4ocGxhdGZvcm1TZWNyZXROYW1lICYmIHsgUExBVEZPUk1fU0VDUkVUX05BTUU6IHsgdmFsdWU6IHBsYXRmb3JtU2VjcmV0TmFtZSB9IH0pLFxuICAgICAgLy8gRW5hYmxlIHBsdWdpbiByZXNvbHV0aW9uIHZpYSBjdXN0b20gcmVzb3VyY2UgTGFtYmRhIGluc2lkZSBDb2RlUGlwZWxpbmVcbiAgICAgIFJFU09MVkVEX1NZTlRIX1BMVUdJTjogeyB2YWx1ZTogJ3RydWUnIH0sXG4gICAgICAvLyBQcm9wYWdhdGUgVExTIHZlcmlmaWNhdGlvbiBzZXR0aW5nIHNvIGFsbCBDb2RlQnVpbGQgc3RlcHMgY2FuIHJlYWNoXG4gICAgICAvLyB0aGUgcGxhdGZvcm0gQVBJIHdoZW4gdXNpbmcgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzXG4gICAgICAuLi4ocHJvY2Vzcy5lbnYuTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCA9PT0gJzAnICYmIHtcbiAgICAgICAgTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRDogeyB2YWx1ZTogJzAnIH0sXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cHMgPSBbXG4gICAgICAuLi4obmV0d29ya1Byb3BzPy5zZWN1cml0eUdyb3VwcyA/PyBbXSksXG4gICAgICAuLi4oc3RhbmRhbG9uZVNlY3VyaXR5R3JvdXBzID8/IFtdKSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihuZXR3b3JrUHJvcHMgJiYgeyB2cGM6IG5ldHdvcmtQcm9wcy52cGMsIHN1Ym5ldFNlbGVjdGlvbjogbmV0d29ya1Byb3BzLnN1Ym5ldFNlbGVjdGlvbiB9KSxcbiAgICAgIC4uLihzZWN1cml0eUdyb3Vwcy5sZW5ndGggPiAwICYmIHsgc2VjdXJpdHlHcm91cHMgfSksXG4gICAgICBidWlsZEVudmlyb25tZW50OiB7IGVudmlyb25tZW50VmFyaWFibGVzOiBwaXBlbGluZUVudlZhcnMgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9waXBlbGluZS9waXBlbGluZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMseURBQTBEO0FBQzFELDZDQUE2QztBQUM3Qyx1RUFBeUQ7QUFDekQsbUVBQXdGO0FBQ3hGLCtEQUFpRDtBQUNqRCx3RUFBMEQ7QUFDMUQseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyxxREFBNEU7QUFDNUUsMkNBQXVDO0FBQ3ZDLHFFQUFpRTtBQUNqRSxtREFBK0M7QUFDL0MscURBQWlEO0FBQ2pELG1EQUErQztBQUUvQyxxREFBNkQ7QUFDN0QsK0RBQTJEO0FBQzNELHVEQUFnRDtBQUNoRCwrREFBbUU7QUFDbkUsNkNBQWlEO0FBRWpELCtEQUErRDtBQUMvRCwyREFBbUU7QUFFbkUsdUNBQTJDO0FBRTNDLDJEQUE4RDtBQUU5RCxNQUFNLGtCQUFrQixHQUErQztJQUNyRSxNQUFNLEVBQUUsNkNBQTBCLENBQUMseUJBQXlCO0lBQzVELFNBQVMsRUFBRSw2Q0FBMEIsQ0FBQyw0QkFBNEI7SUFDbEUsT0FBTyxFQUFFLDZDQUEwQixDQUFDLDBCQUEwQjtJQUM5RCxRQUFRLEVBQUUsNkNBQTBCLENBQUMsMkJBQTJCO0lBQ2hFLFVBQVUsRUFBRSw2Q0FBMEIsQ0FBQyw2QkFBNkI7Q0FDckUsQ0FBQztBQUVGLFNBQVMsdUJBQXVCLENBQUMsS0FBYztJQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENB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RCxpQkFBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDekMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3pELEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUNsRiwwRUFBMEU7WUFDMUUscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ3hDLHNFQUFzRTtZQUN0RSx1REFBdUQ7WUFDdkQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEtBQUssR0FBRyxJQUFJO2dCQUN0RCw0QkFBNEIsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7YUFDN0MsQ0FBQztTQUNILENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRztZQUNyQixHQUFHLENBQUMsWUFBWSxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUM7WUFDdkMsR0FBRyxDQUFDLHdCQUF3QixJQUFJLEVBQUUsQ0FBQztTQUNwQyxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzdGLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ3BELGdCQUFnQixFQUFFLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFO1NBQzVELENBQUM7SUFDSixDQUFDO0NBQ0Y7QUExUEQsMENBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IER1cmF0aW9uLCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cywgUGlwZWxpbmVUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZSc7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgeyBDb2RlUGlwZWxpbmUsIHR5cGUgQ29kZUJ1aWxkT3B0aW9ucyB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFBpcGVsaW5lQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcGlwZWxpbmUtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBQbHVnaW5Mb29rdXAgfSBmcm9tICcuL3BsdWdpbi1sb29rdXAnO1xuaW1wb3J0IHsgU291cmNlQnVpbGRlciB9IGZyb20gJy4vc291cmNlLWJ1aWxkZXInO1xuaW1wb3J0IHsgU3RhZ2VCdWlsZGVyIH0gZnJvbSAnLi9zdGFnZS1idWlsZGVyJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VPcHRpb25zLCBTeW50aE9wdGlvbnMgfSBmcm9tICcuL3N0ZXAtdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgQXJ0aWZhY3RNYW5hZ2VyIH0gZnJvbSAnLi4vY29yZS9hcnRpZmFjdC1tYW5hZ2VyJztcbmltcG9ydCB7IFVuaXF1ZUlkIH0gZnJvbSAnLi4vY29yZS9pZC1nZW5lcmF0b3InO1xuaW1wb3J0IHsgbWV0YWRhdGFGb3JDb2RlUGlwZWxpbmUgfSBmcm9tICcuLi9jb3JlL21ldGFkYXRhLWJ1aWxkZXInO1xuaW1wb3J0IHsgcmVzb2x2ZU5ldHdvcmsgfSBmcm9tICcuLi9jb3JlL25ldHdvcmsnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQnVpbGREZWZhdWx0cyB9IGZyb20gJy4uL2NvcmUvbmV0d29yay10eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb2RlQnVpbGRTdGVwIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS1oZWxwZXJzJztcbmltcG9ydCB7IE1ldGFkYXRhS2V5cywgVHJpZ2dlclR5cGUgfSBmcm9tICcuLi9jb3JlL3BpcGVsaW5lLXR5cGVzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS10eXBlcyc7XG5pbXBvcnQgeyByZXNvbHZlUm9sZSB9IGZyb20gJy4uL2NvcmUvcm9sZSc7XG5pbXBvcnQgdHlwZSB7IFJvbGVDb25maWcgfSBmcm9tICcuLi9jb3JlL3JvbGUtdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZVNlY3VyaXR5R3JvdXAgfSBmcm9tICcuLi9jb3JlL3NlY3VyaXR5LWdyb3VwJztcblxuY29uc3QgUElQRUxJTkVfRVZFTlRfTUFQOiBSZWNvcmQ8c3RyaW5nLCBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cz4gPSB7XG4gIEZBSUxFRDogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX0ZBSUxFRCxcbiAgU1VDQ0VFREVEOiBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fU1VDQ0VFREVELFxuICBTVEFSVEVEOiBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fU1RBUlRFRCxcbiAgQ0FOQ0VMRUQ6IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9DQU5DRUxFRCxcbiAgU1VQRVJTRURFRDogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX1NVUEVSU0VERUQsXG59O1xuXG5mdW5jdGlvbiBwYXJzZU5vdGlmaWNhdGlvbkV2ZW50cyh2YWx1ZTogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAocyA9PiBzLnRyaW0oKSk7XG4gIHJldHVybiBbJ0ZBSUxFRCcsICdTVUNDRUVERUQnXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBQaXBlbGluZUJ1aWxkZXIgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlclByb3BzIHtcbiAgLyoqIFByb2plY3QgaWRlbnRpZmllciAod2lsbCBiZSBzYW5pdGl6ZWQgdG8gbG93ZXJjYXNlIGFscGhhbnVtZXJpYyB3aXRoIHVuZGVyc2NvcmVzKSAqL1xuICByZWFkb25seSBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIE9yZ2FuaXphdGlvbiBpZGVudGlmaWVyICh3aWxsIGJlIHNhbml0aXplZCB0byBsb3dlcmNhc2UgYWxwaGFudW1lcmljIHdpdGggdW5kZXJzY29yZXMpICovXG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbjogc3RyaW5nO1xuXG4gIC8qKiBUZW5hbnQgaWRlbnRpZmllciBmb3IgcmVzb2x2aW5nIHBlci1vcmcgc2VjcmV0cyBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKi9cbiAgcmVhZG9ubHkgb3JnSWQ/OiBzdHJpbmc7XG5cbiAgLyoqIFBpcGVsaW5lIGRhdGFiYXNlIHJlY29yZCBJRCDigJQgaW5qZWN0ZWQgYXMgUElQRUxJTkVfSUQgZW52IHZhciBmb3IgYXV0b25vbW91cyBzeW50aCAqL1xuICByZWFkb25seSBwaXBlbGluZUlkPzogc3RyaW5nO1xuXG4gIC8qKiBPcHRpb25hbCBjdXN0b20gcGlwZWxpbmUgbmFtZS4gRGVmYXVsdHMgdG86IHtvcmdhbml6YXRpb259LXtwcm9qZWN0fS1waXBlbGluZSAqL1xuICByZWFkb25seSBwaXBlbGluZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIEdsb2JhbCBtZXRhZGF0YSBpbmhlcml0ZWQgYnkgYWxsIHBpcGVsaW5lIHN0ZXBzICovXG4gIHJlYWRvbmx5IGdsb2JhbD86IE1ldGFEYXRhVHlwZTtcblxuICAvKipcbiAgICogUGlwZWxpbmUtbGV2ZWwgQ29kZUJ1aWxkIGRlZmF1bHRzIGFwcGxpZWQgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zXG4gICAqIChzeW50aCwgc2VsZi1tdXRhdGlvbiwgYXNzZXQgcHVibGlzaGluZykgdmlhIGBjb2RlQnVpbGREZWZhdWx0c2AuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0cz86IENvZGVCdWlsZERlZmF1bHRzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBJQU0gcm9sZSBmb3IgdGhlIENvZGVQaXBlbGluZS5cbiAgICogV2hlbiBwcm92aWRlZCwgcmVzb2x2ZXMgdG8gYSBDREsgSVJvbGUgYW5kIGlzIHBhc3NlZCB0byB0aGUgQ29kZVBpcGVsaW5lIGNvbnN0cnVjdC5cbiAgICogV2hlbiBvbWl0dGVkLCBDREsgYXV0by1jcmVhdGVzIGEgcm9sZSB3aXRoIHRoZSBjb3JyZWN0IGNvZGVwaXBlbGluZS5hbWF6b25hd3MuY29tIHByaW5jaXBhbC5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBSb2xlQ29uZmlnO1xuXG4gIC8qKiBTeW50aGVzaXMgY29uZmlndXJhdGlvbiBpbmNsdWRpbmcgc291cmNlIGFuZCBwbHVnaW4gZGV0YWlscyAqL1xuICByZWFkb25seSBzeW50aDogU3ludGhPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwaXBlbGluZSBzdGFnZXMsIGVhY2ggY29udGFpbmluZyBvbmUgb3IgbW9yZSBDb2RlQnVpbGQgc3RlcHMuXG4gICAqIFN0YWdlcyBhcmUgYWRkZWQgYXMgd2F2ZXMgdG8gdGhlIENvZGVQaXBlbGluZSBhZnRlciB0aGUgc3ludGggc3RlcC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlcz86IFN0YWdlT3B0aW9uc1tdO1xuXG4gIC8qKiBPcHRpb25hbCBjcm9uL3JhdGUgZXhwcmVzc2lvbiBmb3Igc2NoZWR1bGVkIHBpcGVsaW5lIGV4ZWN1dGlvbi4gKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBzdHJpbmc7XG5cbiAgLyoqIEN1c3RvbSB0YWdzIGFwcGxpZWQgdG8gYWxsIHBpcGVsaW5lIHJlc291cmNlcy4gKi9cbiAgcmVhZG9ubHkgdGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogQ0RLIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYW5kIGNvbmZpZ3VyZXMgYSBDb2RlUGlwZWxpbmUgZm9yIGNvbnRpbnVvdXMgZGVwbG95bWVudC5cbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gTXVsdGktc291cmNlIHN1cHBvcnQgKFMzLCBHaXRIdWIsIENvZGVTdGFyKVxuICogLSBQbHVnaW4tYmFzZWQgYnVpbGQgc3RlcHNcbiAqIC0gTWV0YWRhdGEtZHJpdmVuIGNvbmZpZ3VyYXRpb25cbiAqIC0gQXV0b21hdGljIHRhZ2dpbmdcbiAqIC0gQXV0b21hdGljIHNhbml0aXphdGlvbiBvZiBwcm9qZWN0IGFuZCBvcmdhbml6YXRpb24gbmFtZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbmV3IFBpcGVsaW5lQnVpbGRlcih0aGlzLCAnTXlQaXBlbGluZScsIHtcbiAqICAgcHJvamVjdDogJ215LWFwcCcsXG4gKiAgIG9yZ2FuaXphdGlvbjogJ215LW9yZycsXG4gKiAgIHN5bnRoOiB7XG4gKiAgICAgc291cmNlOiB7XG4gKiAgICAgICB0eXBlOiAnZ2l0aHViJyxcbiAqICAgICAgIG9wdGlvbnM6IHsgcmVwbzogJ293bmVyL3JlcG8nLCBicmFuY2g6ICdtYWluJyB9XG4gKiAgICAgfSxcbiAqICAgICBwbHVnaW46IHsgbmFtZTogJ3N5bnRoJyB9XG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZUJ1aWxkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcGlwZWxpbmU6IENvZGVQaXBlbGluZTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogUGlwZWxpbmVDb25maWd1cmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCdWlsZGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gVXNlIFBpcGVsaW5lQ29uZmlndXJhdGlvbiBmb3IgYWxsIGJ1c2luZXNzIGxvZ2ljICh2YWxpZGF0aW9uLCBzYW5pdGl6YXRpb24sIG1ldGFkYXRhIG1lcmdpbmcpXG4gICAgdGhpcy5jb25maWcgPSBuZXcgUGlwZWxpbmVDb25maWd1cmF0aW9uKHByb3BzKTtcblxuICAgIGNvbnN0IHNlcnZlckNvbmZpZyA9IENvbmZpZy5nZXQoJ3NlcnZlcicpO1xuICAgIGNvbnN0IGF3c0NvbmZpZyA9IENvbmZpZy5nZXQoJ2F3cycpO1xuICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV3IFVuaXF1ZUlkKCk7XG4gICAgY29uc3QgcGx1Z2luTG9va3VwID0gbmV3IFBsdWdpbkxvb2t1cChcbiAgICAgIHRoaXMsXG4gICAgICB1bmlxdWVJZC5nZW5lcmF0ZSgncGx1Z2luOmxvb2t1cCcpLFxuICAgICAge1xuICAgICAgICBvcmdhbml6YXRpb246IHRoaXMuY29uZmlnLm9yZ2FuaXphdGlvbixcbiAgICAgICAgcHJvamVjdDogdGhpcy5jb25maWcucHJvamVjdCxcbiAgICAgICAgcGxhdGZvcm1Vcmw6IHNlcnZlckNvbmZpZy5wbGF0Zm9ybVVybCxcbiAgICAgICAgdW5pcXVlSWQsXG4gICAgICAgIG9yZ0lkOiBwcm9wcy5vcmdJZCxcbiAgICAgICAgcnVudGltZTogYXdzQ29uZmlnLmxhbWJkYS5ydW50aW1lLFxuICAgICAgICB0aW1lb3V0OiBhd3NDb25maWcubGFtYmRhLnRpbWVvdXQsXG4gICAgICAgIHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IGF3c0NvbmZpZy5sYW1iZGEucmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBzb3VyY2UgYW5kIGJ1aWxkIHN0ZXBcbiAgICBjb25zdCBzb3VyY2VCdWlsZGVyID0gbmV3IFNvdXJjZUJ1aWxkZXIodGhpcywgdGhpcy5jb25maWcpO1xuICAgIGNvbnN0IHNvdXJjZSA9IHNvdXJjZUJ1aWxkZXIuY3JlYXRlKHVuaXF1ZUlkKTtcblxuICAgIC8vIFJFU09MVkVEX1NZTlRIX1BMVUdJTj10cnVlIChDb2RlUGlwZWxpbmUpOiByZXNvbHZlIHBsdWdpbiB2aWEgY3VzdG9tIHJlc291cmNlIExhbWJkYVxuICAgIC8vIFJFU09MVkVEX1NZTlRIX1BMVUdJTj1mYWxzZSAoZGVmYXVsdC9DTEkpOiB1c2UgZmFsbGJhY2sgd2l0aCBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoIGNvbW1hbmRzXG4gICAgY29uc3QgcGx1Z2luID0gYXdzQ29uZmlnLnJlc29sdmVkU3ludGhQbHVnaW5cbiAgICAgID8gcGx1Z2luTG9va3VwLnBsdWdpbih0aGlzLmNvbmZpZy5wbHVnaW4pXG4gICAgICA6IHBsdWdpbkxvb2t1cC5mYWxsYmFja1N5bnRoKCk7XG4gICAgY29uc3QgZGVmYXVsdENvbXB1dGVUeXBlID0gYXdzQ29uZmlnLmNvZGVCdWlsZC5jb21wdXRlVHlwZTtcbiAgICBjb25zdCBhcnRpZmFjdE1hbmFnZXIgPSBuZXcgQXJ0aWZhY3RNYW5hZ2VyKCk7XG4gICAgY29uc3Qgc3ludGhBbGlhcyA9IHRoaXMuY29uZmlnLnBsdWdpbi5hbGlhcyA/PyB0aGlzLmNvbmZpZy5wbHVnaW4ubmFtZTtcblxuICAgIC8vIFNjb3BlIGV4cG9zZWQgdG8gcGx1Z2luLXNwZWMgdGVtcGxhdGVzIGFzIGBwaXBlbGluZS4qYC4gQnVpbHQgb25jZVxuICAgIC8vIGhlcmUgc28gYm90aCB0aGUgc3ludGggc3RlcCBhbmQgZXZlcnkgc3RhZ2Ugc3RlcCByZXNvbHZlIGFnYWluc3RcbiAgICAvLyB0aGUgc2FtZSBzbmFwc2hvdC5cbiAgICBjb25zdCBwaXBlbGluZVNjb3BlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIHBpcGVsaW5lOiB7XG4gICAgICAgIHByb2plY3ROYW1lOiB0aGlzLmNvbmZpZy5wcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiB0aGlzLmNvbmZpZy5wcm9qZWN0LFxuICAgICAgICBvcmdJZDogdGhpcy5jb25maWcub3JnYW5pemF0aW9uLFxuICAgICAgICBvcmdhbml6YXRpb246IHRoaXMuY29uZmlnLm9yZ2FuaXphdGlvbixcbiAgICAgICAgcGlwZWxpbmVOYW1lOiB0aGlzLmNvbmZpZy5waXBlbGluZU5hbWUsXG4gICAgICAgIG1ldGFkYXRhOiB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWQsXG4gICAgICAgIHZhcnM6IChwcm9wcyBhcyB7IHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KS52YXJzID8/IHt9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3ludGggPSBjcmVhdGVDb2RlQnVpbGRTdGVwKHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLnN5bnRoQ3VzdG9taXphdGlvbixcbiAgICAgIGlkOiB1bmlxdWVJZC5nZW5lcmF0ZSgnY2RrOnN5bnRoJyksXG4gICAgICB1bmlxdWVJZCxcbiAgICAgIHBsdWdpbixcbiAgICAgIGlucHV0OiBzb3VyY2UsXG4gICAgICBtZXRhZGF0YTogdGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkLFxuICAgICAgbmV0d29yazogdGhpcy5jb25maWcubmV0d29yayxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgZGVmYXVsdENvbXB1dGVUeXBlLFxuICAgICAgYXJ0aWZhY3RNYW5hZ2VyLFxuICAgICAgc3RhZ2VOYW1lOiAnbm8tc3RhZ2UnLFxuICAgICAgc3RhZ2VBbGlhczogJ25vLXN0YWdlLWFsaWFzJyxcbiAgICAgIHBsdWdpbkFsaWFzOiBgJHtzeW50aEFsaWFzfS1hbGlhc2AsXG4gICAgICBvcmdJZDogcHJvcHMub3JnSWQsXG4gICAgICBwaXBlbGluZVNjb3BlLFxuICAgIH0pO1xuXG4gICAgLy8gUmVzb2x2ZSBwaXBlbGluZS1sZXZlbCBkZWZhdWx0cyBpbnRvIGNvZGVCdWlsZERlZmF1bHRzXG4gICAgLy8gQnVpbGQgdGhlIHBlci1vcmcgcGxhdGZvcm0gc2VjcmV0IG5hbWUgZm9yIENvZGVCdWlsZCBlbnYgdmFyc1xuICAgIGNvbnN0IHBsYXRmb3JtU2VjcmV0TmFtZSA9IHByb3BzLm9yZ0lkXG4gICAgICA/IENvcmVDb25zdGFudHMuc2VjcmV0UGF0aChwcm9wcy5vcmdJZCwgJ3BsYXRmb3JtJylcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY29kZUJ1aWxkRGVmYXVsdHMgPSB0aGlzLnJlc29sdmVEZWZhdWx0cyh0aGlzLmNvbmZpZy5kZWZhdWx0cywgdW5pcXVlSWQsIHByb3BzLnBpcGVsaW5lSWQsIHBsYXRmb3JtU2VjcmV0TmFtZSwgc2VydmVyQ29uZmlnLnBsYXRmb3JtVXJsKTtcblxuICAgIC8vIFJlc29sdmUgSUFNIHJvbGUgaWYgZXhwbGljaXRseSBwcm92aWRlZDsgb3RoZXJ3aXNlIGxldCBDREsgYXV0by1jcmVhdGVcbiAgICAvLyB0aGUgcGlwZWxpbmUgcm9sZSB3aXRoIHRoZSBjb3JyZWN0IGNvZGVwaXBlbGluZS5hbWF6b25hd3MuY29tIHByaW5jaXBhbC5cbiAgICBpZiAocHJvcHMucm9sZT8udHlwZSA9PT0gJ2NvZGVCdWlsZERlZmF1bHQnKSB7XG4gICAgICBjcmVhdGVMb2dnZXIoJ1BpcGVsaW5lQnVpbGRlcicpLndhcm4oXG4gICAgICAgICdjb2RlQnVpbGREZWZhdWx0IHJvbGUgdHlwZSB1c2VzIGNvZGVidWlsZC5hbWF6b25hd3MuY29tIHRydXN0IHByaW5jaXBhbCDigJQgJyArXG4gICAgICAgICd0aGlzIGlzIG5vdCBzdWl0YWJsZSBhcyB0aGUgcGlwZWxpbmUtbGV2ZWwgcm9sZS4gQ29uc2lkZXIgdXNpbmcgcm9sZUFybi9yb2xlTmFtZSAnICtcbiAgICAgICAgJ29yIG9taXR0aW5nIHRoZSByb2xlIHRvIGxldCBDREsgYXV0by1jcmVhdGUgb25lIHdpdGggY29kZXBpcGVsaW5lLmFtYXpvbmF3cy5jb20uJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHJvbGUgPSBwcm9wcy5yb2xlXG4gICAgICA/IHJlc29sdmVSb2xlKHRoaXMsIHVuaXF1ZUlkLCBwcm9wcy5yb2xlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGUgQ29kZVBpcGVsaW5lIGNvbnN0cnVjdFxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgQ29kZVBpcGVsaW5lKHRoaXMsIHVuaXF1ZUlkLmdlbmVyYXRlKCdwaXBlbGluZXM6Y29kZXBpcGVsaW5lJyksIHtcbiAgICAgIC4uLihjb2RlQnVpbGREZWZhdWx0cyAmJiB7IGNvZGVCdWlsZERlZmF1bHRzIH0pLFxuICAgICAgLi4uKHJvbGUgJiYgeyByb2xlIH0pLFxuICAgICAgcGlwZWxpbmVUeXBlOiBQaXBlbGluZVR5cGUuVjIsXG4gICAgICBwaXBlbGluZU5hbWU6IHRoaXMuY29uZmlnLnBpcGVsaW5lTmFtZSxcbiAgICAgIHN5bnRoLFxuICAgICAgLi4ubWV0YWRhdGFGb3JDb2RlUGlwZWxpbmUodGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zdGFnZXMpIHtcbiAgICAgIGNvbnN0IHN0YWdlQnVpbGRlciA9IG5ldyBTdGFnZUJ1aWxkZXIoe1xuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgcGx1Z2luTG9va3VwLFxuICAgICAgICB1bmlxdWVJZCxcbiAgICAgICAgZ2xvYmFsTWV0YWRhdGE6IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCxcbiAgICAgICAgZGVmYXVsdENvbXB1dGVUeXBlLFxuICAgICAgICBhcnRpZmFjdE1hbmFnZXIsXG4gICAgICAgIG9yZ0lkOiBwcm9wcy5vcmdJZCxcbiAgICAgICAgcGlwZWxpbmVTY29wZSxcbiAgICAgIH0pO1xuICAgICAgc3RhZ2VCdWlsZGVyLmFkZFN0YWdlcyh0aGlzLnBpcGVsaW5lLCBwcm9wcy5zdGFnZXMpO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBUYWdzIOKUgOKUgFxuICAgIC8vIFRoZSBmaXJzdCB0aHJlZSBhcmUgb3BlcmF0aW9ucy1lc3NlbnRpYWwgYW5kIHVzZWQgYnkgYHBpcGVsaW5lLW1hbmFnZXJcbiAgICAvLyBhdWRpdC1zdGFja3NgIHRvIGRpZmYgQ0ZOIHN0YWNrcyBhZ2FpbnN0IHRoZSBwaXBlbGluZV9yZWdpc3RyeSB0YWJsZS5cbiAgICAvLyBgT3JnSWRgIGlzIHRoZSBjYW5vbmljYWwga2V5IGZvciBjb3N0IGF0dHJpYnV0aW9uIChBV1MgQ29zdCBFeHBsb3JlclxuICAgIC8vIGdyb3VwcyBieSB0YWcga2V5L3ZhbHVlIHdoZW4gYWN0aXZhdGVkIGluIEJpbGxpbmcgc2V0dGluZ3MpLlxuICAgIFRhZ3Mub2YodGhpcy5waXBlbGluZSkuYWRkKCdwaXBlbGluZS1idWlsZGVyJywgJ3RydWUnKTtcbiAgICBUYWdzLm9mKHRoaXMucGlwZWxpbmUpLmFkZCgncHJvamVjdCcsIHRoaXMuY29uZmlnLnByb2plY3QpO1xuICAgIFRhZ3Mub2YodGhpcy5waXBlbGluZSkuYWRkKCdvcmdhbml6YXRpb24nLCB0aGlzLmNvbmZpZy5vcmdhbml6YXRpb24pO1xuICAgIGlmIChwcm9wcy5vcmdJZCkge1xuICAgICAgVGFncy5vZih0aGlzLnBpcGVsaW5lKS5hZGQoJ09yZ0lkJywgcHJvcHMub3JnSWQpO1xuICAgIH1cbiAgICBpZiAocHJvcHMudGFncykge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMudGFncykpIHtcbiAgICAgICAgVGFncy5vZih0aGlzLnBpcGVsaW5lKS5hZGQoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGludGVybmFsIHBpcGVsaW5lIGJlZm9yZSBhY2Nlc3NpbmcgaXRzIHByb3BlcnRpZXNcbiAgICB0aGlzLnBpcGVsaW5lLmJ1aWxkUGlwZWxpbmUoKTtcbiAgICBjb25zdCBjZGtQaXBlbGluZSA9IHRoaXMucGlwZWxpbmUucGlwZWxpbmU7XG4gICAgY29uc3QgbWV0YSA9IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZDtcblxuICAgIC8vIOKUgOKUgCBTTlMgTm90aWZpY2F0aW9ucyDilIDilIBcbiAgICBjb25zdCBub3RpZmljYXRpb25Ub3BpY0FybiA9IG1ldGFbTWV0YWRhdGFLZXlzLk5PVElGSUNBVElPTl9UT1BJQ19BUk5dO1xuICAgIGlmICh0eXBlb2Ygbm90aWZpY2F0aW9uVG9waWNBcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0b3BpYyA9IHNucy5Ub3BpYy5mcm9tVG9waWNBcm4odGhpcywgJ05vdGlmaWNhdGlvblRvcGljJywgbm90aWZpY2F0aW9uVG9waWNBcm4pO1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uRXZlbnRzID0gcGFyc2VOb3RpZmljYXRpb25FdmVudHMobWV0YVtNZXRhZGF0YUtleXMuTk9USUZJQ0FUSU9OX0VWRU5UU10pXG4gICAgICAgIC5tYXAoZSA9PiBQSVBFTElORV9FVkVOVF9NQVBbZS50b1VwcGVyQ2FzZSgpXSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIGlmIChub3RpZmljYXRpb25FdmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjZGtQaXBlbGluZS5ub3RpZnlPbignUGlwZWxpbmVOb3RpZmljYXRpb24nLCB0b3BpYywgeyBldmVudHM6IG5vdGlmaWNhdGlvbkV2ZW50cyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDilIDilIAgU2NoZWR1bGVkIEV4ZWN1dGlvbiDilIDilIBcbiAgICBpZiAocHJvcHMuc3ludGguc291cmNlLm9wdGlvbnM/LnRyaWdnZXIgPT09IFRyaWdnZXJUeXBlLlNDSEVEVUxFIHx8IHByb3BzLnNjaGVkdWxlKSB7XG4gICAgICBjb25zdCBleHByID0gcHJvcHMuc2NoZWR1bGUgfHwgKHByb3BzLnN5bnRoLnNvdXJjZS5vcHRpb25zIGFzIHsgc2NoZWR1bGU/OiBzdHJpbmcgfSk/LnNjaGVkdWxlIHx8ICdyYXRlKDEgZGF5KSc7XG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ1NjaGVkdWxlUnVsZScsIHtcbiAgICAgICAgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZS5leHByZXNzaW9uKGV4cHIpLFxuICAgICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuQ29kZVBpcGVsaW5lKGNka1BpcGVsaW5lKV0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgRXhlY3V0aW9uIEV2ZW50IFRyYWNraW5nIChmb3J3YXJkIHBpcGVsaW5lIHN0YXRlIGNoYW5nZXMgdG8gU05TKSDilIDilIBcbiAgICBpZiAobWV0YVtNZXRhZGF0YUtleXMuRU5BQkxFX0VYRUNVVElPTl9FVkVOVFNdICYmIHR5cGVvZiBub3RpZmljYXRpb25Ub3BpY0FybiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnRXhlY3V0aW9uRXZlbnRSdWxlJywge1xuICAgICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgICBzb3VyY2U6IFsnYXdzLmNvZGVwaXBlbGluZSddLFxuICAgICAgICAgIGRldGFpbFR5cGU6IFsnQ29kZVBpcGVsaW5lIFBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtjZGtQaXBlbGluZS5waXBlbGluZUFybl0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhcmdldHM6IFtuZXcgdGFyZ2V0cy5TbnNUb3BpYyhcbiAgICAgICAgICBzbnMuVG9waWMuZnJvbVRvcGljQXJuKHRoaXMsICdFeGVjdXRpb25FdmVudFRvcGljJywgbm90aWZpY2F0aW9uVG9waWNBcm4pLFxuICAgICAgICApXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBBcnRpZmFjdCBFbmNyeXB0aW9uIChLTVMga2V5KSDilIDilIBcbiAgICBjb25zdCBrbXNLZXlBcm4gPSB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWRbTWV0YWRhdGFLZXlzLktNU19LRVlfQVJOXTtcbiAgICBpZiAodHlwZW9mIGttc0tleUFybiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGtleSA9IGttcy5LZXkuZnJvbUtleUFybih0aGlzLCAnQXJ0aWZhY3RLZXknLCBrbXNLZXlBcm4pO1xuICAgICAgVGFncy5vZihrZXkpLmFkZCgncGlwZWxpbmUnLCB0aGlzLmNvbmZpZy5waXBlbGluZU5hbWUpO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBQaXBlbGluZSBNZXRyaWNzICYgQWxhcm1zIOKUgOKUgFxuICAgIGNvbnN0IGVuYWJsZU1ldHJpY3MgPSB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWRbTWV0YWRhdGFLZXlzLkVOQUJMRV9NRVRSSUNTXTtcbiAgICBpZiAoZW5hYmxlTWV0cmljcykge1xuICAgICAgbmV3IGNsb3Vkd2F0Y2guQWxhcm0odGhpcywgJ1BpcGVsaW5lRmFpbHVyZUFsYXJtJywge1xuICAgICAgICBtZXRyaWM6IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICAgICAgbmFtZXNwYWNlOiAnQVdTL0NvZGVQaXBlbGluZScsXG4gICAgICAgICAgbWV0cmljTmFtZTogJ0ZhaWxlZFBpcGVsaW5lRXhlY3V0aW9uQ291bnQnLFxuICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHsgUGlwZWxpbmVOYW1lOiB0aGlzLmNvbmZpZy5waXBlbGluZU5hbWUgfSxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgfSksXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGBQaXBlbGluZSAke3RoaXMuY29uZmlnLnBpcGVsaW5lTmFtZX0gZXhlY3V0aW9uIGZhaWxlZGAsXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgQ29kZUJ1aWxkRGVmYXVsdHMgaW50byB0aGUgc2hhcGUgZXhwZWN0ZWQgYnkgQ0RLJ3MgY29kZUJ1aWxkRGVmYXVsdHMuXG4gICAqIENvbWJpbmVzIG5ldHdvcmsgY29uZmlnLCBzZWN1cml0eSBncm91cHMsIGFuZCBwaXBlbGluZS1sZXZlbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICogKFBJUEVMSU5FX0lELCBFWEVDVVRJT05fSUQsIFBMQVRGT1JNX0JBU0VfVVJMKSBhdmFpbGFibGUgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlRGVmYXVsdHMoXG4gICAgZGVmYXVsdHM6IENvZGVCdWlsZERlZmF1bHRzIHwgdW5kZWZpbmVkLFxuICAgIGlkOiBVbmlxdWVJZCxcbiAgICBwaXBlbGluZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcGxhdGZvcm1TZWNyZXROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcGxhdGZvcm1Vcmw6IHN0cmluZyxcbiAgKTogQ29kZUJ1aWxkT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbmV0d29ya1Byb3BzID0gZGVmYXVsdHM/Lm5ldHdvcmtcbiAgICAgID8gcmVzb2x2ZU5ldHdvcmsodGhpcywgaWQsIGRlZmF1bHRzLm5ldHdvcmspXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHN0YW5kYWxvbmVTZWN1cml0eUdyb3VwcyA9IGRlZmF1bHRzPy5zZWN1cml0eUdyb3Vwc1xuICAgICAgPyByZXNvbHZlU2VjdXJpdHlHcm91cCh0aGlzLCBpZCwgZGVmYXVsdHMuc2VjdXJpdHlHcm91cHMpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIFBpcGVsaW5lLWxldmVsIGVudiB2YXJzIGF2YWlsYWJsZSB0byBhbGwgQ29kZUJ1aWxkIGFjdGlvbnNcbiAgICAvLyBOb3RlOiAje2NvZGVwaXBlbGluZS4qfSByZXNvbHZlZCB2YXJpYWJsZXMgbXVzdCBnbyB0aHJvdWdoIENvZGVCdWlsZFN0ZXAuZW52XG4gICAgLy8gKGFjdGlvbi1sZXZlbCksIG5vdCBidWlsZEVudmlyb25tZW50LmVudmlyb25tZW50VmFyaWFibGVzIChwcm9qZWN0LWxldmVsKS5cbiAgICBjb25zdCBwaXBlbGluZUVudlZhcnM6IFJlY29yZDxzdHJpbmcsIHsgdmFsdWU6IHN0cmluZyB9PiA9IHtcbiAgICAgIFBMQVRGT1JNX0JBU0VfVVJMOiB7IHZhbHVlOiBwbGF0Zm9ybVVybCB9LFxuICAgICAgLi4uKHBpcGVsaW5lSWQgJiYgeyBQSVBFTElORV9JRDogeyB2YWx1ZTogcGlwZWxpbmVJZCB9IH0pLFxuICAgICAgLi4uKHBsYXRmb3JtU2VjcmV0TmFtZSAmJiB7IFBMQVRGT1JNX1NFQ1JFVF9OQU1FOiB7IHZhbHVlOiBwbGF0Zm9ybVNlY3JldE5hbWUgfSB9KSxcbiAgICAgIC8vIEVuYWJsZSBwbHVnaW4gcmVzb2x1dGlvbiB2aWEgY3VzdG9tIHJlc291cmNlIExhbWJkYSBpbnNpZGUgQ29kZVBpcGVsaW5lXG4gICAgICBSRVNPTFZFRF9TWU5USF9QTFVHSU46IHsgdmFsdWU6ICd0cnVlJyB9LFxuICAgICAgLy8gUHJvcGFnYXRlIFRMUyB2ZXJpZmljYXRpb24gc2V0dGluZyBzbyBhbGwgQ29kZUJ1aWxkIHN0ZXBzIGNhbiByZWFjaFxuICAgICAgLy8gdGhlIHBsYXRmb3JtIEFQSSB3aGVuIHVzaW5nIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlc1xuICAgICAgLi4uKHByb2Nlc3MuZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPT09ICcwJyAmJiB7XG4gICAgICAgIE5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ6IHsgdmFsdWU6ICcwJyB9LFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBzID0gW1xuICAgICAgLi4uKG5ldHdvcmtQcm9wcz8uc2VjdXJpdHlHcm91cHMgPz8gW10pLFxuICAgICAgLi4uKHN0YW5kYWxvbmVTZWN1cml0eUdyb3VwcyA/PyBbXSksXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi4obmV0d29ya1Byb3BzICYmIHsgdnBjOiBuZXR3b3JrUHJvcHMudnBjLCBzdWJuZXRTZWxlY3Rpb246IG5ldHdvcmtQcm9wcy5zdWJuZXRTZWxlY3Rpb24gfSksXG4gICAgICAuLi4oc2VjdXJpdHlHcm91cHMubGVuZ3RoID4gMCAmJiB7IHNlY3VyaXR5R3JvdXBzIH0pLFxuICAgICAgYnVpbGRFbnZpcm9ubWVudDogeyBlbnZpcm9ubWVudFZhcmlhYmxlczogcGlwZWxpbmVFbnZWYXJzIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -25,13 +25,13 @@
25
25
  "typescript": "5.9.3"
26
26
  },
27
27
  "dependencies": {
28
- "@pipeline-builder/api-core": "3.3.5",
29
- "@pipeline-builder/pipeline-data": "3.3.5",
28
+ "@pipeline-builder/api-core": "3.3.7",
30
29
  "aws-cdk-lib": "2.251.0",
31
30
  "axios": "1.13.5",
32
31
  "constructs": "10.5.1",
33
32
  "jsonwebtoken": "9.0.3",
34
- "uuid": "13.0.0"
33
+ "uuid": "13.0.0",
34
+ "@pipeline-builder/pipeline-data": "3.3.8"
35
35
  },
36
36
  "keywords": [
37
37
  "aws",
@@ -61,6 +61,13 @@
61
61
  "engines": {
62
62
  "node": ">= 24.14.0"
63
63
  },
64
+ "devEngines": {
65
+ "packageManager": {
66
+ "name": "pnpm",
67
+ "version": ">=10",
68
+ "onFail": "ignore"
69
+ }
70
+ },
64
71
  "main": "lib/index.js",
65
72
  "license": "Apache-2.0",
66
73
  "homepage": "https://mwashburn160.github.io/pipeline-builder/",
@@ -68,7 +75,7 @@
68
75
  "access": "public",
69
76
  "registry": "https://registry.npmjs.org/"
70
77
  },
71
- "version": "3.3.6",
78
+ "version": "3.3.8",
72
79
  "bugs": {
73
80
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
74
81
  },