@aws-cdk/aws-imagebuilder-alpha 2.237.0-alpha.0 → 2.238.0-alpha.0
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/.jsii +163 -163
- package/.jsii.tabl.json.gz +0 -0
- package/lib/amazon-managed-component.d.ts +2 -2
- package/lib/amazon-managed-component.js +2 -2
- package/lib/amazon-managed-image.d.ts +3 -2
- package/lib/amazon-managed-image.js +2 -2
- package/lib/amazon-managed-workflow.d.ts +3 -2
- package/lib/amazon-managed-workflow.js +2 -2
- package/lib/base-image.d.ts +3 -3
- package/lib/base-image.js +4 -4
- package/lib/component.d.ts +4 -4
- package/lib/component.js +8 -8
- package/lib/container-recipe.d.ts +9 -9
- package/lib/container-recipe.js +5 -5
- package/lib/distribution-configuration.d.ts +5 -5
- package/lib/distribution-configuration.js +3 -3
- package/lib/image-pipeline.d.ts +7 -7
- package/lib/image-pipeline.js +2 -2
- package/lib/image-recipe.d.ts +5 -5
- package/lib/image-recipe.js +2 -2
- package/lib/image.d.ts +7 -7
- package/lib/image.js +2 -2
- package/lib/infrastructure-configuration.d.ts +4 -4
- package/lib/infrastructure-configuration.js +2 -2
- package/lib/lifecycle-policy.d.ts +2 -2
- package/lib/lifecycle-policy.js +2 -2
- package/lib/os-version.js +1 -1
- package/lib/private/image-and-pipeline-props-helper.d.ts +4 -4
- package/lib/private/image-and-pipeline-props-helper.js +1 -1
- package/lib/private/policy-helper.d.ts +5 -5
- package/lib/private/policy-helper.js +1 -1
- package/lib/recipe-base.d.ts +5 -5
- package/lib/recipe-base.js +2 -2
- package/lib/workflow.d.ts +3 -3
- package/lib/workflow.js +5 -5
- package/package.json +6 -6
|
@@ -89,7 +89,7 @@ var RepositoryService;
|
|
|
89
89
|
* A container repository used to distribute container images in EC2 Image Builder
|
|
90
90
|
*/
|
|
91
91
|
class Repository {
|
|
92
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Repository", version: "2.
|
|
92
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Repository", version: "2.238.0-alpha.0" };
|
|
93
93
|
/**
|
|
94
94
|
* The ECR repository to use as the target container repository
|
|
95
95
|
*
|
|
@@ -136,7 +136,7 @@ let DistributionConfiguration = (() => {
|
|
|
136
136
|
DistributionConfiguration = _classThis = _classDescriptor.value;
|
|
137
137
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
138
138
|
}
|
|
139
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration", version: "2.
|
|
139
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration", version: "2.238.0-alpha.0" };
|
|
140
140
|
/** Uniquely identifies this class. */
|
|
141
141
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.DistributionConfiguration';
|
|
142
142
|
/**
|
|
@@ -427,4 +427,4 @@ let DistributionConfiguration = (() => {
|
|
|
427
427
|
return DistributionConfiguration = _classThis;
|
|
428
428
|
})();
|
|
429
429
|
exports.DistributionConfiguration = DistributionConfiguration;
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaXN0cmlidXRpb24tY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFHbkMsMkNBQTJDO0FBQzNDLG1FQUE0RTtBQUc1RSw0RUFBdUU7QUFDdkUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUcxRSxNQUFNLGlDQUFpQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkRBQTJELENBQUMsQ0FBQztBQUVsSCxxREFBcUQ7QUFDckQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUEwVWhDOztHQUVHO0FBQ0gsTUFBZSw2QkFBOEIsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVcvRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUM7WUFDakQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FDSjtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLE9BQXVCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsMkNBQTJDLENBQUMsQ0FBQztLQUN6RTtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxnQ0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBSzVCO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixVQUFVOztJQUM5Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUEyQjtRQUMv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QUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDaEg7UUFFTywrQkFBK0IsQ0FDckMsZUFBZ0M7WUFFaEMsTUFBTSwwQkFBMEIsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FDbkUsQ0FBQyx5QkFBeUIsRUFBa0UsRUFBRSxDQUFDLENBQUM7Z0JBQzlGLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxVQUFVO2dCQUNsRCxRQUFRLEVBQUUseUJBQXlCLENBQUMsUUFBUTtnQkFDNUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxhQUFhO2FBQ2pFLENBQUMsQ0FDSCxDQUFDO1lBRUYsT0FBTywwQkFBMEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDcEY7O1lBcldVLHVEQUF5Qjs7Ozs7QUFBekIsOERBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmNvbnN0IERJU1RSSUJVVElPTl9DT05GSUdVUkFUSU9OX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbicpO1xuXG4vLyBGYXN0IExhdW5jaCByZXF1aXJlcyBhdCBsZWFzdCA2IHBhcmFsbGVsIGxhdW5jaGVzLlxuY29uc3QgTUlOX1BBUkFMTEVMX0xBVU5DSEVTID0gNjtcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBEaXN0cmlidXRpb24gQ29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBUaGUgbGF1bmNoIHBlcm1pc3Npb25zIGZvciB0aGUgQU1JLCBkZWZpbmluZyB3aGljaCBwcmluY2lwYWxzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgQU1JXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW1pTGF1bmNoUGVybWlzc2lvbiB7XG4gIC8qKlxuICAgKiBUaGUgQVJOcyBmb3IgdGhlIEFXUyBPcmdhbml6YXRpb25zIG9yZ2FuaXphdGlvbmFsIHVuaXRzIHRvIHNoYXJlIHRoZSBBTUkgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb25hbFVuaXRBcm5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBBUk5zIGZvciB0aGUgQVdTIE9yZ2FuaXphdGlvbiB0aGF0IHlvdSB3YW50IHRvIHNoYXJlIHRoZSBBTUkgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb25Bcm5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbWFrZSB0aGUgQU1JIHB1YmxpYy4gQmxvY2sgcHVibGljIGFjY2VzcyBmb3IgQU1JcyBtdXN0IGJlIGRpc2FibGVkIHRvIG1ha2UgdGhlIEFNSSBwdWJsaWMuXG4gICAqXG4gICAqIFdBUk5JTkc6IE1ha2luZyBhbiBBTUkgcHVibGljIGV4cG9zZXMgaXQgdG8gYW55IEFXUyBhY2NvdW50IGdsb2JhbGx5LlxuICAgKiAgRW5zdXJlIHRoZSBBTUkgZG9lcyBub3QgY29udGFpbjpcbiAgICogIC0gU2Vuc2l0aXZlIGRhdGEgb3IgY3JlZGVudGlhbHNcbiAgICogIC0gUHJvcHJpZXRhcnkgc29mdHdhcmUgb3IgY29uZmlndXJhdGlvbnNcbiAgICogIC0gSW50ZXJuYWwgbmV0d29yayBpbmZvcm1hdGlvbiBvciBzZWN1cml0eSBzZXR0aW5nc1xuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBibG9ja2luZyBwdWJsaWMgYWNjZXNzIGZvciBBTUlzLCBzZWU6IFtVbmRlcnN0YW5kIGJsb2NrIHB1YmxpYyBhY2Nlc3MgZm9yIEFNSXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9ibG9jay1wdWJsaWMtYWNjZXNzLXRvLWFtaXMuaHRtbClcbiAgICpcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlzUHVibGljVXNlckdyb3VwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEFXUyBhY2NvdW50IElEcyB0byBzaGFyZSB0aGUgQU1JIHdpdGhcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudElkcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBTU00gcGFyYW1ldGVycyB0byBjcmVhdGUgb3IgdXBkYXRlIGZvciB0aGUgZGlzdHJpYnV0ZWQgQU1Jc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTTVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgYWNjb3VudCBJRCB0aGF0IHdpbGwgb3duIHRoZSBTU00gcGFyYW1ldGVyIGluIHRoZSBnaXZlbiByZWdpb24uIFRoaXMgbXVzdCBiZSBvbmUgb2YgdGhlIHRhcmdldCBhY2NvdW50c1xuICAgKiB0aGF0IHdhcyBpbmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBBTUkgZGlzdHJpYnV0aW9uIHRhcmdldCBhY2NvdW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgY3VycmVudCBhY2NvdW50IGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGFtaUFjY291bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIHR5cGUgb2YgdGhlIFNTTSBwYXJhbWV0ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgc3NtLlBhcmFtZXRlckRhdGFUeXBlLkFXU19FQzJfSU1BR0VcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFUeXBlPzogc3NtLlBhcmFtZXRlckRhdGFUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgU1NNIHBhcmFtZXRlciB0byBjcmVhdGUgb3IgdXBkYXRlXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXI6IHNzbS5JU3RyaW5nUGFyYW1ldGVyO1xufVxuXG4vKipcbiAqIFRoZSBsYXVuY2ggdGVtcGxhdGUgdG8gYXBwbHkgdGhlIGRpc3RyaWJ1dGVkIEFNSSB0b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgbGF1bmNoIHRlbXBsYXRlIHRvIGFwcGx5IHRoZSBkaXN0cmlidXRlZCBBTUkgdG8uIEEgbmV3IGxhdW5jaCB0ZW1wbGF0ZSB2ZXJzaW9uIHdpbGwgYmUgY3JlYXRlZCBmb3IgdGhlXG4gICAqIHByb3ZpZGVkIGxhdW5jaCB0ZW1wbGF0ZSB3aXRoIHRoZSBkaXN0cmlidXRlZCBBTUkgYXBwbGllZC5cbiAgICpcbiAgICogKk5vdGU6KiBUaGUgbGF1bmNoIHRlbXBsYXRlIHNob3VsZCBleHBvc2UgYSBgbGF1bmNoVGVtcGxhdGVJZGAuIFRlbXBsYXRlc1xuICAgKiBpbXBvcnRlZCBieSBuYW1lIG9ubHkgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hUZW1wbGF0ZTogZWMyLklMYXVuY2hUZW1wbGF0ZTtcblxuICAvKipcbiAgICogVGhlIEFXUyBhY2NvdW50IElEIHRoYXQgb3ducyB0aGUgbGF1bmNoIHRlbXBsYXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBjdXJyZW50IGFjY291bnQgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNldCB0aGUgbmV3IGxhdW5jaCB0ZW1wbGF0ZSB2ZXJzaW9uIHRoYXQgaXMgY3JlYXRlZCBhcyB0aGUgZGVmYXVsdCBsYXVuY2ggdGVtcGxhdGUgdmVyc2lvbi4gQWZ0ZXJcbiAgICogY3JlYXRpb24gb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZSB2ZXJzaW9uIGNvbnRhaW5pbmcgdGhlIGRpc3RyaWJ1dGVkIEFNSSwgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNldCBhcyB0aGVcbiAgICogZGVmYXVsdCB2ZXJzaW9uIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RGVmYXVsdFZlcnNpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBFQzIgRmFzdCBMYXVuY2ggY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIHRoZSBXaW5kb3dzIEFNSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhc3RMYXVuY2hDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIGZhc3QgbGF1bmNoIGZvciB0aGUgQU1JXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxhdW5jaCB0ZW1wbGF0ZSB0aGF0IHRoZSBmYXN0LWxhdW5jaCBlbmFibGVkIFdpbmRvd3MgQU1JIHVzZXMgd2hlbiBpdCBsYXVuY2hlcyBXaW5kb3dzIGluc3RhbmNlcyB0byBjcmVhdGVcbiAgICogcHJlLXByb3Zpc2lvbmVkIHNuYXBzaG90c1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hUZW1wbGF0ZT86IGVjMi5JTGF1bmNoVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBpbnN0YW5jZXMgdGhhdCBhcmUgbGF1bmNoZWQgZm9yIGNyZWF0aW5nIHJlc291cmNlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBBIG1heGltdW0gb2YgNiBpbnN0YW5jZXMgYXJlIGxhdW5jaGVkIGluIHBhcmFsbGVsXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9FbmFibGVGYXN0TGF1bmNoLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IG1heFBhcmFsbGVsTGF1bmNoZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcHJlLXByb3Zpc2lvbmVkIHNuYXBzaG90cyB0byBrZWVwIG9uIGhhbmQgZm9yIGEgZmFzdC1sYXVuY2ggZW5hYmxlZCBXaW5kb3dzIEFNSVxuICAgKlxuICAgKiBAZGVmYXVsdCAxMCBzbmFwc2hvdHMgYXJlIGtlcHQgcHJlLXByb3Zpc2lvbmVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9FbmFibGVGYXN0TGF1bmNoLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFNuYXBzaG90Q291bnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHJlZ2lvbmFsIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB0byB1c2UgZm9yIGFuIEFNSSBidWlsZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFtaURpc3RyaWJ1dGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHJlZ2lvbiB0byBkaXN0cmlidXRlIEFNSXMgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGN1cnJlbnQgcmVnaW9uIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGRpc3RyaWJ1dGVkIEFNSXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgQU1JXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFtaURlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB0byBlbmNyeXB0IHRoZSBkaXN0cmlidXRlZCBBTUkgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlLbXNLZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIGxhdW5jaCBwZXJtaXNzaW9ucyBmb3IgdGhlIEFNSSwgZGVmaW5pbmcgd2hpY2ggcHJpbmNpcGFscyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIEFNSVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlMYXVuY2hQZXJtaXNzaW9uPzogQW1pTGF1bmNoUGVybWlzc2lvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgZGlzdHJpYnV0ZWQgQU1Jc1xuICAgKlxuICAgKiBAZGVmYXVsdCBBIG5hbWUgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIGltYWdlIHJlY2lwZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBhbWlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBJRHMgdG8gY29weSB0aGUgb3V0cHV0IEFNSSB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlUYXJnZXRBY2NvdW50SWRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBTU00gcGFyYW1ldGVycyB0byBjcmVhdGUgb3IgdXBkYXRlIGZvciB0aGUgZGlzdHJpYnV0ZWQgQU1Jc1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBzc21QYXJhbWV0ZXJzPzogU1NNUGFyYW1ldGVyQ29uZmlndXJhdGlvbnNbXTtcblxuICAvKipcbiAgICogVGhlIGxhdW5jaCB0ZW1wbGF0ZXMgdG8gYXBwbHkgdGhlIGRpc3RyaWJ1dGVkIEFNSSB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hUZW1wbGF0ZXM/OiBMYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGZhc3QgbGF1bmNoIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSBmb3IgZW5hYmxpbmcgRUMyIEZhc3QgTGF1bmNoIG9uIHRoZSBkaXN0cmlidXRlZCBXaW5kb3dzIEFNSVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9FbmFibGVGYXN0TGF1bmNoLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGZhc3RMYXVuY2hDb25maWd1cmF0aW9ucz86IEZhc3RMYXVuY2hDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBMaWNlbnNlIE1hbmFnZXIgbGljZW5zZSBjb25maWd1cmF0aW9uIEFSTnMgdG8gYXBwbHkgdG8gdGhlIGRpc3RyaWJ1dGVkIEFNSXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZUNvbmZpZ3VyYXRpb25Bcm5zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIHJlZ2lvbmFsIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB0byB1c2UgZm9yIGEgY29udGFpbmVyIGJ1aWxkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyRGlzdHJpYnV0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgcmVnaW9uIHRvIGRpc3RyaWJ1dGUgY29udGFpbmVycyB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgY3VycmVudCByZWdpb24gaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gcmVwb3NpdG9yeSB0byBkaXN0cmlidXRlIHRoZSBvdXRwdXQgY29udGFpbmVyIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSB0YXJnZXQgcmVwb3NpdG9yeSBpbiB0aGUgY29udGFpbmVyIHJlY2lwZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJSZXBvc2l0b3J5OiBSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnRhaW5lciBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFkZGl0aW9uYWwgdGFncyB0byBhcHBseSB0byB0aGUgZGlzdHJpYnV0ZWQgY29udGFpbmVyIGltYWdlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJUYWdzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBEaXN0cmlidXRpb24gQ29uZmlndXJhdGlvbiByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB0YXJnZXQgcmVnaW9ucyBhbmQgYXNzb2NpYXRlZCBBTUkgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHdoZXJlIHRoZSBidWlsdCBBTUkgd2lsbCBiZSBkaXN0cmlidXRlZC4gQU1JXG4gICAqIGRpc3RyaWJ1dGlvbnMgbWF5IGFsc28gYmUgYWRkZWQgd2l0aCB0aGUgYGFkZEFtaURpc3RyaWJ1dGlvbnNgIG1ldGhvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZSBpZiBjb250YWluZXIgZGlzdHJpYnV0aW9ucyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYXQgbGVhc3Qgb25lIEFNSSBvciBjb250YWluZXIgZGlzdHJpYnV0aW9uIG11c3RcbiAgICogICAgICAgICAgYmUgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGFtaURpc3RyaWJ1dGlvbnM/OiBBbWlEaXN0cmlidXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdGFyZ2V0IHJlZ2lvbnMgYW5kIGFzc29jaWF0ZWQgY29udGFpbmVyIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB3aGVyZSB0aGUgYnVpbHQgY29udGFpbmVyIHdpbGwgYmVcbiAgICogZGlzdHJpYnV0ZWQuIENvbnRhaW5lciBkaXN0cmlidXRpb25zIG1heSBhbHNvIGJlIGFkZGVkIHdpdGggdGhlIGBhZGRDb250YWluZXJEaXN0cmlidXRpb25zYCBtZXRob2QuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmUgaWYgQU1JIGRpc3RyaWJ1dGlvbnMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGF0IGxlYXN0IG9uZSBBTUkgb3IgY29udGFpbmVyIGRpc3RyaWJ1dGlvbiBtdXN0IGJlXG4gICAqICAgICAgICAgIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEaXN0cmlidXRpb25zPzogQ29udGFpbmVyRGlzdHJpYnV0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgQSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgRGlzdHJpYnV0aW9uIENvbmZpZ3VyYXRpb25cbiAqL1xuYWJzdHJhY3QgY2xhc3MgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0RGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbicpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNlcnZpY2UgaW4gd2hpY2ggYSBjb250YWluZXIgc2hvdWxkIGJlIHJlZ2lzdGVyZWRcbiAqL1xuZXhwb3J0IGVudW0gUmVwb3NpdG9yeVNlcnZpY2Uge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjb250YWluZXIgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gRUNSXG4gICAqL1xuICBFQ1IgPSAnRUNSJyxcbn1cblxuLyoqXG4gKiBBIGNvbnRhaW5lciByZXBvc2l0b3J5IHVzZWQgdG8gZGlzdHJpYnV0ZSBjb250YWluZXIgaW1hZ2VzIGluIEVDMiBJbWFnZSBCdWlsZGVyXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXBvc2l0b3J5IHtcbiAgLyoqXG4gICAqIFRoZSBFQ1IgcmVwb3NpdG9yeSB0byB1c2UgYXMgdGhlIHRhcmdldCBjb250YWluZXIgcmVwb3NpdG9yeVxuICAgKlxuICAgKiBAcGFyYW0gcmVwb3NpdG9yeSBUaGUgRUNSIHJlcG9zaXRvcnkgdG8gdXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FY3IocmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5KTogUmVwb3NpdG9yeSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVwb3NpdG9yeSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVwb3NpdG9yeU5hbWU6IHN0cmluZyA9IHJlcG9zaXRvcnkucmVwb3NpdG9yeU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2UgPSBSZXBvc2l0b3J5U2VydmljZS5FQ1I7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIHJlcG9zaXRvcnkgd2hlcmUgdGhlIG91dHB1dCBjb250YWluZXIgaW1hZ2UgaXMgc3RvcmVkXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSByZXBvc2l0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBpbiB3aGljaCB0aGUgY29udGFpbmVyIHJlcG9zaXRvcnkgaXMgaG9zdGVkXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBzZXJ2aWNlOiBSZXBvc2l0b3J5U2VydmljZTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIERpc3RyaWJ1dGlvbiBDb25maWd1cmF0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1kaXN0cmlidXRpb24tc2V0dGluZ3MuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiBleHRlbmRzIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25CYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24nO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4oXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZyxcbiAgKTogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4gPSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lID0gZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZ2l2ZW4gaXRzIG5hbWUuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nXG4gICAqIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmcsXG4gICk6IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQsXG4gICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbih4OiBhbnkpOiB4IGlzIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBESVNUUklCVVRJT05fQ09ORklHVVJBVElPTl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgYW1pRGlzdHJpYnV0aW9uc0J5UmVnaW9uOiB7IFtyZWdpb246IHN0cmluZ106IEFtaURpc3RyaWJ1dGlvbiB9ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyRGlzdHJpYnV0aW9uc0J5UmVnaW9uOiB7XG4gICAgW3JlZ2lvbjogc3RyaW5nXTogQ29udGFpbmVyRGlzdHJpYnV0aW9uO1xuICB9ID0ge307XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5kaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgRElTVFJJQlVUSU9OX0NPTkZJR1VSQVRJT05fU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKCk7XG5cbiAgICB0aGlzLmFkZEFtaURpc3RyaWJ1dGlvbnMoLi4uKHByb3BzLmFtaURpc3RyaWJ1dGlvbnMgPz8gW10pKTtcbiAgICB0aGlzLmFkZENvbnRhaW5lckRpc3RyaWJ1dGlvbnMoLi4uKHByb3BzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnMgPz8gW10pKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGRpc3RyaWJ1dGlvbnM6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyRGlzdHJpYnV0aW9ucygpIH0pLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ck5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBBTUkgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gYW1pRGlzdHJpYnV0aW9ucyBUaGUgbGlzdCBvZiBBTUkgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIGFwcGx5XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkQW1pRGlzdHJpYnV0aW9ucyguLi5hbWlEaXN0cmlidXRpb25zOiBBbWlEaXN0cmlidXRpb25bXSk6IHZvaWQge1xuICAgIGFtaURpc3RyaWJ1dGlvbnMuZm9yRWFjaCgoYW1pRGlzdHJpYnV0aW9uKSA9PiB7XG4gICAgICBjb25zdCByZWdpb24gPSBhbWlEaXN0cmlidXRpb24ucmVnaW9uID8/IGNkay5TdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgICBpZiAodGhpcy5hbWlEaXN0cmlidXRpb25zQnlSZWdpb25bcmVnaW9uXSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBgZHVwbGljYXRlIEFNSSBkaXN0cmlidXRpb24gZm91bmQgZm9yIHJlZ2lvbiBcIiR7cmVnaW9ufVwiOyBvbmx5IG9uZSBBTUkgZGlzdHJpYnV0aW9uIHBlciByZWdpb24gaXMgYWxsb3dlZGAsXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hbWlEaXN0cmlidXRpb25zQnlSZWdpb25bcmVnaW9uXSA9IGFtaURpc3RyaWJ1dGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGNvbnRhaW5lciBkaXN0cmlidXRpb24gc2V0dGluZ3MgdG8gdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJEaXN0cmlidXRpb25zIFRoZSBsaXN0IG9mIGNvbnRhaW5lciBkaXN0cmlidXRpb24gc2V0dGluZ3MgdG8gYXBwbHlcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRDb250YWluZXJEaXN0cmlidXRpb25zKC4uLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnM6IENvbnRhaW5lckRpc3RyaWJ1dGlvbltdKTogdm9pZCB7XG4gICAgY29udGFpbmVyRGlzdHJpYnV0aW9ucy5mb3JFYWNoKChjb250YWluZXJEaXN0cmlidXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IGNvbnRhaW5lckRpc3RyaWJ1dGlvbi5yZWdpb24gPz8gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbltyZWdpb25dKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGBkdXBsaWNhdGUgQ29udGFpbmVyIGRpc3RyaWJ1dGlvbiBmb3VuZCBmb3IgcmVnaW9uIFwiJHtyZWdpb259XCI7IG9ubHkgb25lIENvbnRhaW5lciBkaXN0cmlidXRpb24gcGVyIHJlZ2lvbiBpcyBhbGxvd2VkYCxcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbltyZWdpb25dID0gY29udGFpbmVyRGlzdHJpYnV0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKCkge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucGh5c2ljYWxOYW1lKSkge1xuICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgdmFsaWRhdGUgdW5yZXNvbHZlZCB0b2tlbnMsIGdpdmVuIHRoZWlyIGFjdHVhbCB2YWx1ZSBpcyByZW5kZXJlZCBhdCBkZXBsb3ltZW50IHRpbWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnICcpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIG11c3QgYmUgbG93ZXJjYXNlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIEFNSSBhbmQgY29udGFpbmVyIGRpc3RyaWJ1dGlvbnMgcHJvdmlkZWQgYXMgaW5wdXQgdG8gdGhlIGNvbnN0cnVjdCwgaW50byB0aGUgYERpc3RyaWJ1dGlvbltdYCBzdHJ1Y3R1cmVcbiAgICogdGhhdCBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uIGV4cGVjdHMgdG8gcmVjZWl2ZS4gRGlzdHJpYnV0aW9ucyBwcm92aWRlZCB0byBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uIG11c3RcbiAgICogbWFwIHRvIGEgdW5pcXVlIHJlZ2lvbiBwZXIgZW50cnkgaW4gdGhlIGxpc3QgLSB0aGlzIHJlbmRlciBmdW5jdGlvbiBhbHNvIGhhbmRsZXMgY29tYmluaW5nIEFNSSBhbmQgY29udGFpbmVyXG4gICAqIGRpc3RyaWJ1dGlvbnMgaW4gdGhlIHNhbWUgcmVnaW9uIGludG8gYSBzaW5nbGUgZW50cnkuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVuZGVyZWQgYXQgc3ludGhlc2lzIHRpbWUsIGFzIHVzZXJzIGNhbiBhZGQgYWRkaXRpb25hbCBBTUkgYW5kIGNvbnRhaW5lciBkaXN0cmlidXRpb25zIHdpdGhcbiAgICogYGFkZEFtaURpc3RyaWJ1dGlvbnNgIGFuZCBgYWRkQ29udGFpbmVyRGlzdHJpYnV0aW9uc2AsIGFmdGVyIHRoZSBjb25zdHJ1Y3QgaGFzIGJlZW4gaW5zdGFudGlhdGVkLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJEaXN0cmlidXRpb25zKCk6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uRGlzdHJpYnV0aW9uUHJvcGVydHlbXSB7XG4gICAgaWYgKFxuICAgICAgIU9iamVjdC5rZXlzKHRoaXMuYW1pRGlzdHJpYnV0aW9uc0J5UmVnaW9uKS5sZW5ndGggJiZcbiAgICAgICFPYmplY3Qua2V5cyh0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbikubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignWW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgQU1JIG9yIGNvbnRhaW5lciBkaXN0cmlidXRpb24nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXN0cmlidXRpb25CeVJlZ2lvbjogeyBbcmVnaW9uOiBzdHJpbmddOiBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uLkRpc3RyaWJ1dGlvblByb3BlcnR5IH0gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW3JlZ2lvbiwgZGlzdHJpYnV0aW9uXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmFtaURpc3RyaWJ1dGlvbnNCeVJlZ2lvbikpIHtcbiAgICAgIGRpc3RyaWJ1dGlvbkJ5UmVnaW9uW3JlZ2lvbl0gPSB7XG4gICAgICAgIHJlZ2lvbixcbiAgICAgICAgYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZEFtaURpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pLFxuICAgICAgICBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbnM6IHRoaXMuYnVpbGRGYXN0TGF1bmNoQ29uZmlndXJhdGlvbnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uczogdGhpcy5idWlsZExhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnM6IHRoaXMuYnVpbGRTc21QYXJhbWV0ZXJDb25maWd1cmF0aW9ucyhkaXN0cmlidXRpb24pLFxuICAgICAgICBsaWNlbnNlQ29uZmlndXJhdGlvbkFybnM6IHRoaXMuYnVpbGRMaWNlbnNlQ29uZmlndXJhdGlvbkFybnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcmVnaW9uLCBjb250YWluZXJEaXN0cmlidXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY29udGFpbmVyRGlzdHJpYnV0aW9uc0J5UmVnaW9uKSkge1xuICAgICAgZGlzdHJpYnV0aW9uQnlSZWdpb25bcmVnaW9uXSA9IHtcbiAgICAgICAgLi4uKGRpc3RyaWJ1dGlvbkJ5UmVnaW9uW3JlZ2lvbl0gPz8ge30pLFxuICAgICAgICByZWdpb24sXG4gICAgICAgIGNvbnRhaW5lckRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRDb250YWluZXJEaXN0cmlidXRpb24oY29udGFpbmVyRGlzdHJpYnV0aW9uKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9ucyA9IE9iamVjdC52YWx1ZXMoZGlzdHJpYnV0aW9uQnlSZWdpb24pO1xuXG4gICAgZGlzdHJpYnV0aW9ucy5mb3JFYWNoKChkaXN0cmlidXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHsgcmVnaW9uOiBfLCAuLi5kaXN0cmlidXRpb25XaXRob3V0UmVnaW9uIH0gPSBkaXN0cmlidXRpb247XG4gICAgICBpZiAoIU9iamVjdC5lbnRyaWVzKGRpc3RyaWJ1dGlvbldpdGhvdXRSZWdpb24pLnNvbWUoKFtfXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBgYXQgbGVhc3Qgb25lIGRpc3RyaWJ1dGlvbiBwcm9wZXJ0eSBtdXN0IGJlIHNldCBmb3IgcmVnaW9uIFwiJHtkaXN0cmlidXRpb24ucmVnaW9ufVwiYCxcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQW1pRGlzdHJpYnV0aW9uKGFtaURpc3RyaWJ1dGlvbjogQW1pRGlzdHJpYnV0aW9uKTogb2JqZWN0IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsYXVuY2hQZXJtaXNzaW9ucyA9IHRoaXMuYnVpbGRBbWlMYXVuY2hQZXJtaXNzaW9ucyhhbWlEaXN0cmlidXRpb24pO1xuICAgIGNvbnN0IGFtaURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi4oT2JqZWN0LmtleXMoYW1pRGlzdHJpYnV0aW9uLmFtaVRhZ3MgPz8ge30pLmxlbmd0aCAmJiB7IEFtaVRhZ3M6IGFtaURpc3RyaWJ1dGlvbi5hbWlUYWdzIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlEZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHsgRGVzY3JpcHRpb246IGFtaURpc3RyaWJ1dGlvbi5hbWlEZXNjcmlwdGlvbiB9KSxcbiAgICAgIC4uLihhbWlEaXN0cmlidXRpb24uYW1pS21zS2V5ICE9PSB1bmRlZmluZWQgJiYgeyBLbXNLZXlJZDogYW1pRGlzdHJpYnV0aW9uLmFtaUttc0tleS5rZXlBcm4gfSksXG4gICAgICAuLi4obGF1bmNoUGVybWlzc2lvbnMgJiYgeyBMYXVuY2hQZXJtaXNzaW9uQ29uZmlndXJhdGlvbjogbGF1bmNoUGVybWlzc2lvbnMgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaU5hbWUgIT09IHVuZGVmaW5lZCAmJiB7IE5hbWU6IGFtaURpc3RyaWJ1dGlvbi5hbWlOYW1lIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlUYXJnZXRBY2NvdW50SWRzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBUYXJnZXRBY2NvdW50SWRzOiBhbWlEaXN0cmlidXRpb24uYW1pVGFyZ2V0QWNjb3VudElkcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbikubGVuZ3RoID8gYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb250YWluZXJEaXN0cmlidXRpb24oY29udGFpbmVyRGlzdHJpYnV0aW9uOiBDb250YWluZXJEaXN0cmlidXRpb24pOiBvYmplY3QgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB7XG4gICAgICBDb250YWluZXJUYWdzOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyVGFncyxcbiAgICAgIERlc2NyaXB0aW9uOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyRGVzY3JpcHRpb24sXG4gICAgICBUYXJnZXRSZXBvc2l0b3J5OiB7XG4gICAgICAgIFJlcG9zaXRvcnlOYW1lOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyUmVwb3NpdG9yeS5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgU2VydmljZTogY29udGFpbmVyRGlzdHJpYnV0aW9uLmNvbnRhaW5lclJlcG9zaXRvcnkuc2VydmljZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRBbWlMYXVuY2hQZXJtaXNzaW9ucyhhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbik6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5pc1B1YmxpY1VzZXJHcm91cCkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoXG4gICAgICAgICdBTUkgaXMgY29uZmlndXJlZCBmb3IgcHVibGljIGFjY2VzcywgbWFraW5nIGl0IGF2YWlsYWJsZSB0byBhbnkgQVdTIGFjY291bnQgZ2xvYmFsbHkuICcgK1xuICAgICAgICAgICdFbnN1cmUgbm8gc2Vuc2l0aXZlIGRhdGEsIGNyZWRlbnRpYWxzLCBvciBwcm9wcmlldGFyeSBjb25maWd1cmF0aW9ucyBhcmUgaW5jbHVkZWQuICcgK1xuICAgICAgICAgIFwiUmV2aWV3IHlvdXIgb3JnYW5pemF0aW9uJ3Mgc2VjdXJpdHkgcG9saWNpZXMgYmVmb3JlIGRlcGxveWluZyBwdWJsaWMgQU1Jcy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbGF1bmNoUGVybWlzc2lvbnMgPSB7XG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/Lm9yZ2FuaXphdGlvbmFsVW5pdEFybnMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIE9yZ2FuaXphdGlvbmFsVW5pdEFybnM6IGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5vcmdhbml6YXRpb25hbFVuaXRBcm5zLFxuICAgICAgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/Lm9yZ2FuaXphdGlvbkFybnMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIE9yZ2FuaXphdGlvbkFybnM6IGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5vcmdhbml6YXRpb25Bcm5zLFxuICAgICAgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/LmlzUHVibGljVXNlckdyb3VwICYmIHtcbiAgICAgICAgVXNlckdyb3VwczogWydhbGwnXSxcbiAgICAgIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5hY2NvdW50SWRzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBVc2VySWRzOiBhbWlEaXN0cmlidXRpb24uYW1pTGF1bmNoUGVybWlzc2lvbj8uYWNjb3VudElkcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobGF1bmNoUGVybWlzc2lvbnMpLmxlbmd0aCA/IGxhdW5jaFBlcm1pc3Npb25zIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZhc3RMYXVuY2hDb25maWd1cmF0aW9ucyhcbiAgICBhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbixcbiAgKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5GYXN0TGF1bmNoQ29uZmlndXJhdGlvblByb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZhc3RMYXVuY2hDb25maWd1cmF0aW9ucyA9IGFtaURpc3RyaWJ1dGlvbi5mYXN0TGF1bmNoQ29uZmlndXJhdGlvbnM/Lm1hcChcbiAgICAgIChmYXN0TGF1bmNoQ29uZmlndXJhdGlvbik6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uRmFzdExhdW5jaENvbmZpZ3VyYXRpb25Qcm9wZXJ0eSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5tYXhQYXJhbGxlbExhdW5jaGVzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5tYXhQYXJhbGxlbExhdW5jaGVzKSAmJlxuICAgICAgICAgIGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLm1heFBhcmFsbGVsTGF1bmNoZXMgPCBNSU5fUEFSQUxMRUxfTEFVTkNIRVNcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBgeW91IG11c3Qgc3BlY2lmeSBhIG1heGltdW0gcGFyYWxsZWwgbGF1bmNoIGNvdW50IG9mIGF0IGxlYXN0ICR7TUlOX1BBUkFMTEVMX0xBVU5DSEVTfWAsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXVuY2hUZW1wbGF0ZSA9IGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLmxhdW5jaFRlbXBsYXRlO1xuICAgICAgICBjb25zdCB1c2VGYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGVJZCA9IGxhdW5jaFRlbXBsYXRlPy5sYXVuY2hUZW1wbGF0ZUlkICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5GYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uUHJvcGVydHkgPSB7XG4gICAgICAgICAgLi4uKHVzZUZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZUlkICYmIHtcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IGxhdW5jaFRlbXBsYXRlPy5sYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLighdXNlRmFzdExhdW5jaExhdW5jaFRlbXBsYXRlSWQgJiYge1xuICAgICAgICAgICAgbGF1bmNoVGVtcGxhdGVOYW1lOiBsYXVuY2hUZW1wbGF0ZT8ubGF1bmNoVGVtcGxhdGVOYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihsYXVuY2hUZW1wbGF0ZT8udmVyc2lvbk51bWJlciAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlVmVyc2lvbjogbGF1bmNoVGVtcGxhdGU/LnZlcnNpb25OdW1iZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbmFibGVkOiBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5lbmFibGVkLFxuICAgICAgICAgIG1heFBhcmFsbGVsTGF1bmNoZXM6IGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLm1heFBhcmFsbGVsTGF1bmNoZXMsXG4gICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZSkubGVuZ3RoICYmIHsgbGF1bmNoVGVtcGxhdGU6IGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZSB9KSxcbiAgICAgICAgICAuLi4oZmFzdExhdW5jaENvbmZpZ3VyYXRpb24udGFyZ2V0U25hcHNob3RDb3VudCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgIHNuYXBzaG90Q29uZmlndXJhdGlvbjogeyB0YXJnZXRSZXNvdXJjZUNvdW50OiBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi50YXJnZXRTbmFwc2hvdENvdW50IH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gZmFzdExhdW5jaENvbmZpZ3VyYXRpb25zPy5sZW5ndGggPyBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbnMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucyhcbiAgICBhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbixcbiAgKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5MYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25zID0gYW1pRGlzdHJpYnV0aW9uLmxhdW5jaFRlbXBsYXRlcz8ubWFwKFxuICAgICAgKGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbik6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uUHJvcGVydHkgPT4ge1xuICAgICAgICBpZiAoIWxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbi5sYXVuY2hUZW1wbGF0ZS5sYXVuY2hUZW1wbGF0ZUlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAnWW91IG11c3QgcmVmZXJlbmNlIGxhdW5jaCB0ZW1wbGF0ZXMgYnkgSUQgaW4gbGF1bmNoIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb25zJyxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWNjb3VudElkOiBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24uYWNjb3VudElkLFxuICAgICAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbi5sYXVuY2hUZW1wbGF0ZS5sYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgICAgIHNldERlZmF1bHRWZXJzaW9uOiBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24uc2V0RGVmYXVsdFZlcnNpb24sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucz8ubGVuZ3RoID8gbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaWNlbnNlQ29uZmlndXJhdGlvbkFybnMoYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGFtaURpc3RyaWJ1dGlvbi5saWNlbnNlQ29uZmlndXJhdGlvbkFybnM/Lmxlbmd0aCA/IGFtaURpc3RyaWJ1dGlvbi5saWNlbnNlQ29uZmlndXJhdGlvbkFybnMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnMoXG4gICAgYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24sXG4gICk6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uU3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvblByb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNzbVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zID0gYW1pRGlzdHJpYnV0aW9uLnNzbVBhcmFtZXRlcnM/Lm1hcChcbiAgICAgIChzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5Tc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uUHJvcGVydHkgPT4gKHtcbiAgICAgICAgYW1pQWNjb3VudElkOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLmFtaUFjY291bnQsXG4gICAgICAgIGRhdGFUeXBlOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLmRhdGFUeXBlLFxuICAgICAgICBwYXJhbWV0ZXJOYW1lOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLnBhcmFtZXRlci5wYXJhbWV0ZXJOYW1lLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHJldHVybiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9ucz8ubGVuZ3RoID8gc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnMgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaXN0cmlidXRpb24tY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFHbkMsMkNBQTJDO0FBQzNDLG1FQUE0RTtBQUc1RSw0RUFBdUU7QUFDdkUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUcxRSxNQUFNLGlDQUFpQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkRBQTJELENBQUMsQ0FBQztBQUVsSCxxREFBcUQ7QUFDckQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUEwVWhDOztHQUVHO0FBQ0gsTUFBZSw2QkFBOEIsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVcvRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUM7WUFDakQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FDSjtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLE9BQXVCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsMkNBQTJDLENBQUMsQ0FBQztLQUN6RTtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxnQ0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBSzVCO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixVQUFVOztJQUM5Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUEyQjtRQUMv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QUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDaEg7UUFFTywrQkFBK0IsQ0FDckMsZUFBZ0M7WUFFaEMsTUFBTSwwQkFBMEIsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FDbkUsQ0FBQyx5QkFBeUIsRUFBa0UsRUFBRSxDQUFDLENBQUM7Z0JBQzlGLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxVQUFVO2dCQUNsRCxRQUFRLEVBQUUseUJBQXlCLENBQUMsUUFBUTtnQkFDNUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxhQUFhO2FBQ2pFLENBQUMsQ0FDSCxDQUFDO1lBRUYsT0FBTywwQkFBMEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDcEY7O1lBcldVLHVEQUF5Qjs7Ozs7QUFBekIsOERBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHR5cGUgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgdHlwZSAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB0eXBlICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5jb25zdCBESVNUUklCVVRJT05fQ09ORklHVVJBVElPTl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24nKTtcblxuLy8gRmFzdCBMYXVuY2ggcmVxdWlyZXMgYXQgbGVhc3QgNiBwYXJhbGxlbCBsYXVuY2hlcy5cbmNvbnN0IE1JTl9QQVJBTExFTF9MQVVOQ0hFUyA9IDY7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgRGlzdHJpYnV0aW9uIENvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG59XG5cbi8qKlxuICogVGhlIGxhdW5jaCBwZXJtaXNzaW9ucyBmb3IgdGhlIEFNSSwgZGVmaW5pbmcgd2hpY2ggcHJpbmNpcGFscyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIEFNSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFtaUxhdW5jaFBlcm1pc3Npb24ge1xuICAvKipcbiAgICogVGhlIEFSTnMgZm9yIHRoZSBBV1MgT3JnYW5pemF0aW9ucyBvcmdhbml6YXRpb25hbCB1bml0cyB0byBzaGFyZSB0aGUgQU1JIHdpdGhcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uYWxVbml0QXJucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOcyBmb3IgdGhlIEFXUyBPcmdhbml6YXRpb24gdGhhdCB5b3Ugd2FudCB0byBzaGFyZSB0aGUgQU1JIHdpdGhcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uQXJucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG1ha2UgdGhlIEFNSSBwdWJsaWMuIEJsb2NrIHB1YmxpYyBhY2Nlc3MgZm9yIEFNSXMgbXVzdCBiZSBkaXNhYmxlZCB0byBtYWtlIHRoZSBBTUkgcHVibGljLlxuICAgKlxuICAgKiBXQVJOSU5HOiBNYWtpbmcgYW4gQU1JIHB1YmxpYyBleHBvc2VzIGl0IHRvIGFueSBBV1MgYWNjb3VudCBnbG9iYWxseS5cbiAgICogIEVuc3VyZSB0aGUgQU1JIGRvZXMgbm90IGNvbnRhaW46XG4gICAqICAtIFNlbnNpdGl2ZSBkYXRhIG9yIGNyZWRlbnRpYWxzXG4gICAqICAtIFByb3ByaWV0YXJ5IHNvZnR3YXJlIG9yIGNvbmZpZ3VyYXRpb25zXG4gICAqICAtIEludGVybmFsIG5ldHdvcmsgaW5mb3JtYXRpb24gb3Igc2VjdXJpdHkgc2V0dGluZ3NcbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYmxvY2tpbmcgcHVibGljIGFjY2VzcyBmb3IgQU1Jcywgc2VlOiBbVW5kZXJzdGFuZCBibG9jayBwdWJsaWMgYWNjZXNzIGZvciBBTUlzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvYmxvY2stcHVibGljLWFjY2Vzcy10by1hbWlzLmh0bWwpXG4gICAqXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc1B1YmxpY1VzZXJHcm91cD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgYWNjb3VudCBJRHMgdG8gc2hhcmUgdGhlIEFNSSB3aXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRJZHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUaGUgU1NNIHBhcmFtZXRlcnMgdG8gY3JlYXRlIG9yIHVwZGF0ZSBmb3IgdGhlIGRpc3RyaWJ1dGVkIEFNSXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU01QYXJhbWV0ZXJDb25maWd1cmF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIGFjY291bnQgSUQgdGhhdCB3aWxsIG93biB0aGUgU1NNIHBhcmFtZXRlciBpbiB0aGUgZ2l2ZW4gcmVnaW9uLiBUaGlzIG11c3QgYmUgb25lIG9mIHRoZSB0YXJnZXQgYWNjb3VudHNcbiAgICogdGhhdCB3YXMgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2YgQU1JIGRpc3RyaWJ1dGlvbiB0YXJnZXQgYWNjb3VudHNcbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGN1cnJlbnQgYWNjb3VudCBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBhbWlBY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YSB0eXBlIG9mIHRoZSBTU00gcGFyYW1ldGVyXG4gICAqXG4gICAqIEBkZWZhdWx0IHNzbS5QYXJhbWV0ZXJEYXRhVHlwZS5BV1NfRUMyX0lNQUdFXG4gICAqL1xuICByZWFkb25seSBkYXRhVHlwZT86IHNzbS5QYXJhbWV0ZXJEYXRhVHlwZTtcblxuICAvKipcbiAgICogVGhlIFNTTSBwYXJhbWV0ZXIgdG8gY3JlYXRlIG9yIHVwZGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbn1cblxuLyoqXG4gKiBUaGUgbGF1bmNoIHRlbXBsYXRlIHRvIGFwcGx5IHRoZSBkaXN0cmlidXRlZCBBTUkgdG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIGxhdW5jaCB0ZW1wbGF0ZSB0byBhcHBseSB0aGUgZGlzdHJpYnV0ZWQgQU1JIHRvLiBBIG5ldyBsYXVuY2ggdGVtcGxhdGUgdmVyc2lvbiB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoZVxuICAgKiBwcm92aWRlZCBsYXVuY2ggdGVtcGxhdGUgd2l0aCB0aGUgZGlzdHJpYnV0ZWQgQU1JIGFwcGxpZWQuXG4gICAqXG4gICAqICpOb3RlOiogVGhlIGxhdW5jaCB0ZW1wbGF0ZSBzaG91bGQgZXhwb3NlIGEgYGxhdW5jaFRlbXBsYXRlSWRgLiBUZW1wbGF0ZXNcbiAgICogaW1wb3J0ZWQgYnkgbmFtZSBvbmx5IGFyZSBub3Qgc3VwcG9ydGVkLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoVGVtcGxhdGU6IGVjMi5JTGF1bmNoVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgYWNjb3VudCBJRCB0aGF0IG93bnMgdGhlIGxhdW5jaCB0ZW1wbGF0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgY3VycmVudCBhY2NvdW50IGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBzZXQgdGhlIG5ldyBsYXVuY2ggdGVtcGxhdGUgdmVyc2lvbiB0aGF0IGlzIGNyZWF0ZWQgYXMgdGhlIGRlZmF1bHQgbGF1bmNoIHRlbXBsYXRlIHZlcnNpb24uIEFmdGVyXG4gICAqIGNyZWF0aW9uIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUgdmVyc2lvbiBjb250YWluaW5nIHRoZSBkaXN0cmlidXRlZCBBTUksIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQgYXMgdGhlXG4gICAqIGRlZmF1bHQgdmVyc2lvbiBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNldERlZmF1bHRWZXJzaW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgRUMyIEZhc3QgTGF1bmNoIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciB0aGUgV2luZG93cyBBTUlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYXN0TGF1bmNoQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBmYXN0IGxhdW5jaCBmb3IgdGhlIEFNSVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsYXVuY2ggdGVtcGxhdGUgdGhhdCB0aGUgZmFzdC1sYXVuY2ggZW5hYmxlZCBXaW5kb3dzIEFNSSB1c2VzIHdoZW4gaXQgbGF1bmNoZXMgV2luZG93cyBpbnN0YW5jZXMgdG8gY3JlYXRlXG4gICAqIHByZS1wcm92aXNpb25lZCBzbmFwc2hvdHNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoVGVtcGxhdGU/OiBlYzIuSUxhdW5jaFRlbXBsYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgaW5zdGFuY2VzIHRoYXQgYXJlIGxhdW5jaGVkIGZvciBjcmVhdGluZyByZXNvdXJjZXNcbiAgICpcbiAgICogQGRlZmF1bHQgQSBtYXhpbXVtIG9mIDYgaW5zdGFuY2VzIGFyZSBsYXVuY2hlZCBpbiBwYXJhbGxlbFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRW5hYmxlRmFzdExhdW5jaC5odG1sXG4gICAqL1xuICByZWFkb25seSBtYXhQYXJhbGxlbExhdW5jaGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHByZS1wcm92aXNpb25lZCBzbmFwc2hvdHMgdG8ga2VlcCBvbiBoYW5kIGZvciBhIGZhc3QtbGF1bmNoIGVuYWJsZWQgV2luZG93cyBBTUlcbiAgICpcbiAgICogQGRlZmF1bHQgMTAgc25hcHNob3RzIGFyZSBrZXB0IHByZS1wcm92aXNpb25lZFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRW5hYmxlRmFzdExhdW5jaC5odG1sXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRTbmFwc2hvdENvdW50PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSByZWdpb25hbCBkaXN0cmlidXRpb24gc2V0dGluZ3MgdG8gdXNlIGZvciBhbiBBTUkgYnVpbGRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlEaXN0cmlidXRpb24ge1xuICAvKipcbiAgICogVGhlIHRhcmdldCByZWdpb24gdG8gZGlzdHJpYnV0ZSBBTUlzIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBjdXJyZW50IHJlZ2lvbiBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSBkaXN0cmlidXRlZCBBTUlzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFtaVRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIEFNSVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlEZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdG8gZW5jcnlwdCB0aGUgZGlzdHJpYnV0ZWQgQU1JIHdpdGhcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pS21zS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXVuY2ggcGVybWlzc2lvbnMgZm9yIHRoZSBBTUksIGRlZmluaW5nIHdoaWNoIHByaW5jaXBhbHMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBBTUlcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pTGF1bmNoUGVybWlzc2lvbj86IEFtaUxhdW5jaFBlcm1pc3Npb247XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIGRpc3RyaWJ1dGVkIEFNSXNcbiAgICpcbiAgICogQGRlZmF1bHQgQSBuYW1lIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSBpbWFnZSByZWNpcGUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFjY291bnQgSURzIHRvIGNvcHkgdGhlIG91dHB1dCBBTUkgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pVGFyZ2V0QWNjb3VudElkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgU1NNIHBhcmFtZXRlcnMgdG8gY3JlYXRlIG9yIHVwZGF0ZSBmb3IgdGhlIGRpc3RyaWJ1dGVkIEFNSXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc3NtUGFyYW1ldGVycz86IFNTTVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zW107XG5cbiAgLyoqXG4gICAqIFRoZSBsYXVuY2ggdGVtcGxhdGVzIHRvIGFwcGx5IHRoZSBkaXN0cmlidXRlZCBBTUkgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoVGVtcGxhdGVzPzogTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBmYXN0IGxhdW5jaCBjb25maWd1cmF0aW9ucyB0byB1c2UgZm9yIGVuYWJsaW5nIEVDMiBGYXN0IExhdW5jaCBvbiB0aGUgZGlzdHJpYnV0ZWQgV2luZG93cyBBTUlcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRW5hYmxlRmFzdExhdW5jaC5odG1sXG4gICAqL1xuICByZWFkb25seSBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbnM/OiBGYXN0TGF1bmNoQ29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgTGljZW5zZSBNYW5hZ2VyIGxpY2Vuc2UgY29uZmlndXJhdGlvbiBBUk5zIHRvIGFwcGx5IHRvIHRoZSBkaXN0cmlidXRlZCBBTUlzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VDb25maWd1cmF0aW9uQXJucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSByZWdpb25hbCBkaXN0cmlidXRpb24gc2V0dGluZ3MgdG8gdXNlIGZvciBhIGNvbnRhaW5lciBidWlsZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckRpc3RyaWJ1dGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHJlZ2lvbiB0byBkaXN0cmlidXRlIGNvbnRhaW5lcnMgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGN1cnJlbnQgcmVnaW9uIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc3RpbmF0aW9uIHJlcG9zaXRvcnkgdG8gZGlzdHJpYnV0ZSB0aGUgb3V0cHV0IGNvbnRhaW5lciB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgdGFyZ2V0IHJlcG9zaXRvcnkgaW4gdGhlIGNvbnRhaW5lciByZWNpcGUgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUmVwb3NpdG9yeTogUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjb250YWluZXIgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGRpdGlvbmFsIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGRpc3RyaWJ1dGVkIGNvbnRhaW5lciBpbWFnZXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyVGFncz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgRGlzdHJpYnV0aW9uIENvbmZpZ3VyYXRpb24gcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdGFyZ2V0IHJlZ2lvbnMgYW5kIGFzc29jaWF0ZWQgQU1JIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB3aGVyZSB0aGUgYnVpbHQgQU1JIHdpbGwgYmUgZGlzdHJpYnV0ZWQuIEFNSVxuICAgKiBkaXN0cmlidXRpb25zIG1heSBhbHNvIGJlIGFkZGVkIHdpdGggdGhlIGBhZGRBbWlEaXN0cmlidXRpb25zYCBtZXRob2QuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmUgaWYgY29udGFpbmVyIGRpc3RyaWJ1dGlvbnMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGF0IGxlYXN0IG9uZSBBTUkgb3IgY29udGFpbmVyIGRpc3RyaWJ1dGlvbiBtdXN0XG4gICAqICAgICAgICAgIGJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBhbWlEaXN0cmlidXRpb25zPzogQW1pRGlzdHJpYnV0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHRhcmdldCByZWdpb25zIGFuZCBhc3NvY2lhdGVkIGNvbnRhaW5lciBkaXN0cmlidXRpb24gc2V0dGluZ3Mgd2hlcmUgdGhlIGJ1aWx0IGNvbnRhaW5lciB3aWxsIGJlXG4gICAqIGRpc3RyaWJ1dGVkLiBDb250YWluZXIgZGlzdHJpYnV0aW9ucyBtYXkgYWxzbyBiZSBhZGRlZCB3aXRoIHRoZSBgYWRkQ29udGFpbmVyRGlzdHJpYnV0aW9uc2AgbWV0aG9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lIGlmIEFNSSBkaXN0cmlidXRpb25zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhdCBsZWFzdCBvbmUgQU1JIG9yIGNvbnRhaW5lciBkaXN0cmlidXRpb24gbXVzdCBiZVxuICAgKiAgICAgICAgICBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyRGlzdHJpYnV0aW9ucz86IENvbnRhaW5lckRpc3RyaWJ1dGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIERpc3RyaWJ1dGlvbiBDb25maWd1cmF0aW9uXG4gKi9cbmFic3RyYWN0IGNsYXNzIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25CYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm5dLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24nKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzZXJ2aWNlIGluIHdoaWNoIGEgY29udGFpbmVyIHNob3VsZCBiZSByZWdpc3RlcmVkXG4gKi9cbmV4cG9ydCBlbnVtIFJlcG9zaXRvcnlTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgY29udGFpbmVyIHNob3VsZCBiZSByZWdpc3RlcmVkIGluIEVDUlxuICAgKi9cbiAgRUNSID0gJ0VDUicsXG59XG5cbi8qKlxuICogQSBjb250YWluZXIgcmVwb3NpdG9yeSB1c2VkIHRvIGRpc3RyaWJ1dGUgY29udGFpbmVyIGltYWdlcyBpbiBFQzIgSW1hZ2UgQnVpbGRlclxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVwb3NpdG9yeSB7XG4gIC8qKlxuICAgKiBUaGUgRUNSIHJlcG9zaXRvcnkgdG8gdXNlIGFzIHRoZSB0YXJnZXQgY29udGFpbmVyIHJlcG9zaXRvcnlcbiAgICpcbiAgICogQHBhcmFtIHJlcG9zaXRvcnkgVGhlIEVDUiByZXBvc2l0b3J5IHRvIHVzZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRWNyKHJlcG9zaXRvcnk6IGVjci5JUmVwb3NpdG9yeSk6IFJlcG9zaXRvcnkge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlcG9zaXRvcnkge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcgPSByZXBvc2l0b3J5LnJlcG9zaXRvcnlOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlID0gUmVwb3NpdG9yeVNlcnZpY2UuRUNSO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciByZXBvc2l0b3J5IHdoZXJlIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIGlzIHN0b3JlZFxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgcmVwb3NpdG9yeU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlcnZpY2UgaW4gd2hpY2ggdGhlIGNvbnRhaW5lciByZXBvc2l0b3J5IGlzIGhvc3RlZFxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgc2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2U7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBEaXN0cmlidXRpb24gQ29uZmlndXJhdGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtZGlzdHJpYnV0aW9uLXNldHRpbmdzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuOiBzdHJpbmcsXG4gICk6IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25CYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuID0gZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSA9IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZ1xuICAgKiBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZTogc3RyaW5nLFxuICApOiBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdkaXN0cmlidXRpb24tY29uZmlndXJhdGlvbicsXG4gICAgICAgIHJlc291cmNlTmFtZTogZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0Rpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24oeDogYW55KTogeCBpcyBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgRElTVFJJQlVUSU9OX0NPTkZJR1VSQVRJT05fU1lNQk9MIGluIHg7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IGFtaURpc3RyaWJ1dGlvbnNCeVJlZ2lvbjogeyBbcmVnaW9uOiBzdHJpbmddOiBBbWlEaXN0cmlidXRpb24gfSA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbjoge1xuICAgIFtyZWdpb246IHN0cmluZ106IENvbnRhaW5lckRpc3RyaWJ1dGlvbjtcbiAgfSA9IHt9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvblByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIERJU1RSSUJVVElPTl9DT05GSUdVUkFUSU9OX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVEaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSgpO1xuXG4gICAgdGhpcy5hZGRBbWlEaXN0cmlidXRpb25zKC4uLihwcm9wcy5hbWlEaXN0cmlidXRpb25zID8/IFtdKSk7XG4gICAgdGhpcy5hZGRDb250YWluZXJEaXN0cmlidXRpb25zKC4uLihwcm9wcy5jb250YWluZXJEaXN0cmlidXRpb25zID8/IFtdKSk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBkaXN0cmlidXRpb25zOiBjZGsuTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlckRpc3RyaWJ1dGlvbnMoKSB9KSxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgfSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmF0dHJOYW1lKTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmF0dHJBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgcmVzb3VyY2U6ICdkaXN0cmlidXRpb24tY29uZmlndXJhdGlvbicsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgQU1JIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB0byB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGFtaURpc3RyaWJ1dGlvbnMgVGhlIGxpc3Qgb2YgQU1JIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB0byBhcHBseVxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZEFtaURpc3RyaWJ1dGlvbnMoLi4uYW1pRGlzdHJpYnV0aW9uczogQW1pRGlzdHJpYnV0aW9uW10pOiB2b2lkIHtcbiAgICBhbWlEaXN0cmlidXRpb25zLmZvckVhY2goKGFtaURpc3RyaWJ1dGlvbikgPT4ge1xuICAgICAgY29uc3QgcmVnaW9uID0gYW1pRGlzdHJpYnV0aW9uLnJlZ2lvbiA/PyBjZGsuU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgICAgaWYgKHRoaXMuYW1pRGlzdHJpYnV0aW9uc0J5UmVnaW9uW3JlZ2lvbl0pIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgYGR1cGxpY2F0ZSBBTUkgZGlzdHJpYnV0aW9uIGZvdW5kIGZvciByZWdpb24gXCIke3JlZ2lvbn1cIjsgb25seSBvbmUgQU1JIGRpc3RyaWJ1dGlvbiBwZXIgcmVnaW9uIGlzIGFsbG93ZWRgLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYW1pRGlzdHJpYnV0aW9uc0J5UmVnaW9uW3JlZ2lvbl0gPSBhbWlEaXN0cmlidXRpb247XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBjb250YWluZXIgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRGlzdHJpYnV0aW9ucyBUaGUgbGlzdCBvZiBjb250YWluZXIgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIGFwcGx5XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkQ29udGFpbmVyRGlzdHJpYnV0aW9ucyguLi5jb250YWluZXJEaXN0cmlidXRpb25zOiBDb250YWluZXJEaXN0cmlidXRpb25bXSk6IHZvaWQge1xuICAgIGNvbnRhaW5lckRpc3RyaWJ1dGlvbnMuZm9yRWFjaCgoY29udGFpbmVyRGlzdHJpYnV0aW9uKSA9PiB7XG4gICAgICBjb25zdCByZWdpb24gPSBjb250YWluZXJEaXN0cmlidXRpb24ucmVnaW9uID8/IGNkay5TdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgICBpZiAodGhpcy5jb250YWluZXJEaXN0cmlidXRpb25zQnlSZWdpb25bcmVnaW9uXSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBgZHVwbGljYXRlIENvbnRhaW5lciBkaXN0cmlidXRpb24gZm91bmQgZm9yIHJlZ2lvbiBcIiR7cmVnaW9ufVwiOyBvbmx5IG9uZSBDb250YWluZXIgZGlzdHJpYnV0aW9uIHBlciByZWdpb24gaXMgYWxsb3dlZGAsXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb250YWluZXJEaXN0cmlidXRpb25zQnlSZWdpb25bcmVnaW9uXSA9IGNvbnRhaW5lckRpc3RyaWJ1dGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVEaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBBTUkgYW5kIGNvbnRhaW5lciBkaXN0cmlidXRpb25zIHByb3ZpZGVkIGFzIGlucHV0IHRvIHRoZSBjb25zdHJ1Y3QsIGludG8gdGhlIGBEaXN0cmlidXRpb25bXWAgc3RydWN0dXJlXG4gICAqIHRoYXQgQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiBleHBlY3RzIHRvIHJlY2VpdmUuIERpc3RyaWJ1dGlvbnMgcHJvdmlkZWQgdG8gQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiBtdXN0XG4gICAqIG1hcCB0byBhIHVuaXF1ZSByZWdpb24gcGVyIGVudHJ5IGluIHRoZSBsaXN0IC0gdGhpcyByZW5kZXIgZnVuY3Rpb24gYWxzbyBoYW5kbGVzIGNvbWJpbmluZyBBTUkgYW5kIGNvbnRhaW5lclxuICAgKiBkaXN0cmlidXRpb25zIGluIHRoZSBzYW1lIHJlZ2lvbiBpbnRvIGEgc2luZ2xlIGVudHJ5LlxuICAgKlxuICAgKiBUaGlzIGlzIHJlbmRlcmVkIGF0IHN5bnRoZXNpcyB0aW1lLCBhcyB1c2VycyBjYW4gYWRkIGFkZGl0aW9uYWwgQU1JIGFuZCBjb250YWluZXIgZGlzdHJpYnV0aW9ucyB3aXRoXG4gICAqIGBhZGRBbWlEaXN0cmlidXRpb25zYCBhbmQgYGFkZENvbnRhaW5lckRpc3RyaWJ1dGlvbnNgLCBhZnRlciB0aGUgY29uc3RydWN0IGhhcyBiZWVuIGluc3RhbnRpYXRlZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyRGlzdHJpYnV0aW9ucygpOiBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uLkRpc3RyaWJ1dGlvblByb3BlcnR5W10ge1xuICAgIGlmIChcbiAgICAgICFPYmplY3Qua2V5cyh0aGlzLmFtaURpc3RyaWJ1dGlvbnNCeVJlZ2lvbikubGVuZ3RoICYmXG4gICAgICAhT2JqZWN0LmtleXModGhpcy5jb250YWluZXJEaXN0cmlidXRpb25zQnlSZWdpb24pLmxlbmd0aFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1lvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIEFNSSBvciBjb250YWluZXIgZGlzdHJpYnV0aW9uJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uQnlSZWdpb246IHsgW3JlZ2lvbjogc3RyaW5nXTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5EaXN0cmlidXRpb25Qcm9wZXJ0eSB9ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IFtyZWdpb24sIGRpc3RyaWJ1dGlvbl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5hbWlEaXN0cmlidXRpb25zQnlSZWdpb24pKSB7XG4gICAgICBkaXN0cmlidXRpb25CeVJlZ2lvbltyZWdpb25dID0ge1xuICAgICAgICByZWdpb24sXG4gICAgICAgIGFtaURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRBbWlEaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgZmFzdExhdW5jaENvbmZpZ3VyYXRpb25zOiB0aGlzLmJ1aWxkRmFzdExhdW5jaENvbmZpZ3VyYXRpb25zKGRpc3RyaWJ1dGlvbiksXG4gICAgICAgIGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbnM6IHRoaXMuYnVpbGRMYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25zKGRpc3RyaWJ1dGlvbiksXG4gICAgICAgIHNzbVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zOiB0aGlzLmJ1aWxkU3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgbGljZW5zZUNvbmZpZ3VyYXRpb25Bcm5zOiB0aGlzLmJ1aWxkTGljZW5zZUNvbmZpZ3VyYXRpb25Bcm5zKGRpc3RyaWJ1dGlvbiksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3JlZ2lvbiwgY29udGFpbmVyRGlzdHJpYnV0aW9uXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbikpIHtcbiAgICAgIGRpc3RyaWJ1dGlvbkJ5UmVnaW9uW3JlZ2lvbl0gPSB7XG4gICAgICAgIC4uLihkaXN0cmlidXRpb25CeVJlZ2lvbltyZWdpb25dID8/IHt9KSxcbiAgICAgICAgcmVnaW9uLFxuICAgICAgICBjb250YWluZXJEaXN0cmlidXRpb25Db25maWd1cmF0aW9uOiB0aGlzLmJ1aWxkQ29udGFpbmVyRGlzdHJpYnV0aW9uKGNvbnRhaW5lckRpc3RyaWJ1dGlvbiksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbnMgPSBPYmplY3QudmFsdWVzKGRpc3RyaWJ1dGlvbkJ5UmVnaW9uKTtcblxuICAgIGRpc3RyaWJ1dGlvbnMuZm9yRWFjaCgoZGlzdHJpYnV0aW9uKSA9PiB7XG4gICAgICBjb25zdCB7IHJlZ2lvbjogXywgLi4uZGlzdHJpYnV0aW9uV2l0aG91dFJlZ2lvbiB9ID0gZGlzdHJpYnV0aW9uO1xuICAgICAgaWYgKCFPYmplY3QuZW50cmllcyhkaXN0cmlidXRpb25XaXRob3V0UmVnaW9uKS5zb21lKChbX18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgYGF0IGxlYXN0IG9uZSBkaXN0cmlidXRpb24gcHJvcGVydHkgbXVzdCBiZSBzZXQgZm9yIHJlZ2lvbiBcIiR7ZGlzdHJpYnV0aW9uLnJlZ2lvbn1cImAsXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkaXN0cmlidXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEFtaURpc3RyaWJ1dGlvbihhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbik6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbGF1bmNoUGVybWlzc2lvbnMgPSB0aGlzLmJ1aWxkQW1pTGF1bmNoUGVybWlzc2lvbnMoYW1pRGlzdHJpYnV0aW9uKTtcbiAgICBjb25zdCBhbWlEaXN0cmlidXRpb25Db25maWd1cmF0aW9uID0ge1xuICAgICAgLi4uKE9iamVjdC5rZXlzKGFtaURpc3RyaWJ1dGlvbi5hbWlUYWdzID8/IHt9KS5sZW5ndGggJiYgeyBBbWlUYWdzOiBhbWlEaXN0cmlidXRpb24uYW1pVGFncyB9KSxcbiAgICAgIC4uLihhbWlEaXN0cmlidXRpb24uYW1pRGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7IERlc2NyaXB0aW9uOiBhbWlEaXN0cmlidXRpb24uYW1pRGVzY3JpcHRpb24gfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUttc0tleSAhPT0gdW5kZWZpbmVkICYmIHsgS21zS2V5SWQ6IGFtaURpc3RyaWJ1dGlvbi5hbWlLbXNLZXkua2V5QXJuIH0pLFxuICAgICAgLi4uKGxhdW5jaFBlcm1pc3Npb25zICYmIHsgTGF1bmNoUGVybWlzc2lvbkNvbmZpZ3VyYXRpb246IGxhdW5jaFBlcm1pc3Npb25zIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlOYW1lICE9PSB1bmRlZmluZWQgJiYgeyBOYW1lOiBhbWlEaXN0cmlidXRpb24uYW1pTmFtZSB9KSxcbiAgICAgIC4uLihhbWlEaXN0cmlidXRpb24uYW1pVGFyZ2V0QWNjb3VudElkcyAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgVGFyZ2V0QWNjb3VudElkczogYW1pRGlzdHJpYnV0aW9uLmFtaVRhcmdldEFjY291bnRJZHMsXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGFtaURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24pLmxlbmd0aCA/IGFtaURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ29udGFpbmVyRGlzdHJpYnV0aW9uKGNvbnRhaW5lckRpc3RyaWJ1dGlvbjogQ29udGFpbmVyRGlzdHJpYnV0aW9uKTogb2JqZWN0IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ29udGFpbmVyVGFnczogY29udGFpbmVyRGlzdHJpYnV0aW9uLmNvbnRhaW5lclRhZ3MsXG4gICAgICBEZXNjcmlwdGlvbjogY29udGFpbmVyRGlzdHJpYnV0aW9uLmNvbnRhaW5lckRlc2NyaXB0aW9uLFxuICAgICAgVGFyZ2V0UmVwb3NpdG9yeToge1xuICAgICAgICBSZXBvc2l0b3J5TmFtZTogY29udGFpbmVyRGlzdHJpYnV0aW9uLmNvbnRhaW5lclJlcG9zaXRvcnkucmVwb3NpdG9yeU5hbWUsXG4gICAgICAgIFNlcnZpY2U6IGNvbnRhaW5lckRpc3RyaWJ1dGlvbi5jb250YWluZXJSZXBvc2l0b3J5LnNlcnZpY2UsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQW1pTGF1bmNoUGVybWlzc2lvbnMoYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24pOiBvYmplY3QgfCB1bmRlZmluZWQge1xuICAgIGlmIChhbWlEaXN0cmlidXRpb24uYW1pTGF1bmNoUGVybWlzc2lvbj8uaXNQdWJsaWNVc2VyR3JvdXApIHtcbiAgICAgIGNkay5Bbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKFxuICAgICAgICAnQU1JIGlzIGNvbmZpZ3VyZWQgZm9yIHB1YmxpYyBhY2Nlc3MsIG1ha2luZyBpdCBhdmFpbGFibGUgdG8gYW55IEFXUyBhY2NvdW50IGdsb2JhbGx5LiAnICtcbiAgICAgICAgICAnRW5zdXJlIG5vIHNlbnNpdGl2ZSBkYXRhLCBjcmVkZW50aWFscywgb3IgcHJvcHJpZXRhcnkgY29uZmlndXJhdGlvbnMgYXJlIGluY2x1ZGVkLiAnICtcbiAgICAgICAgICBcIlJldmlldyB5b3VyIG9yZ2FuaXphdGlvbidzIHNlY3VyaXR5IHBvbGljaWVzIGJlZm9yZSBkZXBsb3lpbmcgcHVibGljIEFNSXMuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGxhdW5jaFBlcm1pc3Npb25zID0ge1xuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5vcmdhbml6YXRpb25hbFVuaXRBcm5zICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBPcmdhbml6YXRpb25hbFVuaXRBcm5zOiBhbWlEaXN0cmlidXRpb24uYW1pTGF1bmNoUGVybWlzc2lvbj8ub3JnYW5pemF0aW9uYWxVbml0QXJucyxcbiAgICAgIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5vcmdhbml6YXRpb25Bcm5zICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBPcmdhbml6YXRpb25Bcm5zOiBhbWlEaXN0cmlidXRpb24uYW1pTGF1bmNoUGVybWlzc2lvbj8ub3JnYW5pemF0aW9uQXJucyxcbiAgICAgIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5pc1B1YmxpY1VzZXJHcm91cCAmJiB7XG4gICAgICAgIFVzZXJHcm91cHM6IFsnYWxsJ10sXG4gICAgICB9KSxcbiAgICAgIC4uLihhbWlEaXN0cmlidXRpb24uYW1pTGF1bmNoUGVybWlzc2lvbj8uYWNjb3VudElkcyAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgVXNlcklkczogYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/LmFjY291bnRJZHMsXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxhdW5jaFBlcm1pc3Npb25zKS5sZW5ndGggPyBsYXVuY2hQZXJtaXNzaW9ucyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGYXN0TGF1bmNoQ29uZmlndXJhdGlvbnMoXG4gICAgYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24sXG4gICk6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uRmFzdExhdW5jaENvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbnMgPSBhbWlEaXN0cmlidXRpb24uZmFzdExhdW5jaENvbmZpZ3VyYXRpb25zPy5tYXAoXG4gICAgICAoZmFzdExhdW5jaENvbmZpZ3VyYXRpb24pOiBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uLkZhc3RMYXVuY2hDb25maWd1cmF0aW9uUHJvcGVydHkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZmFzdExhdW5jaENvbmZpZ3VyYXRpb24ubWF4UGFyYWxsZWxMYXVuY2hlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoZmFzdExhdW5jaENvbmZpZ3VyYXRpb24ubWF4UGFyYWxsZWxMYXVuY2hlcykgJiZcbiAgICAgICAgICBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5tYXhQYXJhbGxlbExhdW5jaGVzIDwgTUlOX1BBUkFMTEVMX0xBVU5DSEVTXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgYHlvdSBtdXN0IHNwZWNpZnkgYSBtYXhpbXVtIHBhcmFsbGVsIGxhdW5jaCBjb3VudCBvZiBhdCBsZWFzdCAke01JTl9QQVJBTExFTF9MQVVOQ0hFU31gLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGF1bmNoVGVtcGxhdGUgPSBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5sYXVuY2hUZW1wbGF0ZTtcbiAgICAgICAgY29uc3QgdXNlRmFzdExhdW5jaExhdW5jaFRlbXBsYXRlSWQgPSBsYXVuY2hUZW1wbGF0ZT8ubGF1bmNoVGVtcGxhdGVJZCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGU6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uRmFzdExhdW5jaExhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvblByb3BlcnR5ID0ge1xuICAgICAgICAgIC4uLih1c2VGYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGVJZCAmJiB7XG4gICAgICAgICAgICBsYXVuY2hUZW1wbGF0ZUlkOiBsYXVuY2hUZW1wbGF0ZT8ubGF1bmNoVGVtcGxhdGVJZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oIXVzZUZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZUlkICYmIHtcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlTmFtZTogbGF1bmNoVGVtcGxhdGU/LmxhdW5jaFRlbXBsYXRlTmFtZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4obGF1bmNoVGVtcGxhdGU/LnZlcnNpb25OdW1iZXIgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICBsYXVuY2hUZW1wbGF0ZVZlcnNpb246IGxhdW5jaFRlbXBsYXRlPy52ZXJzaW9uTnVtYmVyLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFzdExhdW5jaENvbmZpZ3VyYXRpb24uZW5hYmxlZCxcbiAgICAgICAgICBtYXhQYXJhbGxlbExhdW5jaGVzOiBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5tYXhQYXJhbGxlbExhdW5jaGVzLFxuICAgICAgICAgIC4uLihPYmplY3Qua2V5cyhmYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGUpLmxlbmd0aCAmJiB7IGxhdW5jaFRlbXBsYXRlOiBmYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGUgfSksXG4gICAgICAgICAgLi4uKGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLnRhcmdldFNuYXBzaG90Q291bnQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICBzbmFwc2hvdENvbmZpZ3VyYXRpb246IHsgdGFyZ2V0UmVzb3VyY2VDb3VudDogZmFzdExhdW5jaENvbmZpZ3VyYXRpb24udGFyZ2V0U25hcHNob3RDb3VudCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGZhc3RMYXVuY2hDb25maWd1cmF0aW9ucz8ubGVuZ3RoID8gZmFzdExhdW5jaENvbmZpZ3VyYXRpb25zIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbnMoXG4gICAgYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24sXG4gICk6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uUHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucyA9IGFtaURpc3RyaWJ1dGlvbi5sYXVuY2hUZW1wbGF0ZXM/Lm1hcChcbiAgICAgIChsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24pOiBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uLkxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvblByb3BlcnR5ID0+IHtcbiAgICAgICAgaWYgKCFsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24ubGF1bmNoVGVtcGxhdGUubGF1bmNoVGVtcGxhdGVJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgJ1lvdSBtdXN0IHJlZmVyZW5jZSBsYXVuY2ggdGVtcGxhdGVzIGJ5IElEIGluIGxhdW5jaCB0ZW1wbGF0ZSBjb25maWd1cmF0aW9ucycsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFjY291bnRJZDogbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uLmFjY291bnRJZCxcbiAgICAgICAgICBsYXVuY2hUZW1wbGF0ZUlkOiBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24ubGF1bmNoVGVtcGxhdGUubGF1bmNoVGVtcGxhdGVJZCxcbiAgICAgICAgICBzZXREZWZhdWx0VmVyc2lvbjogbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uLnNldERlZmF1bHRWZXJzaW9uLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbnM/Lmxlbmd0aCA/IGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbnMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGljZW5zZUNvbmZpZ3VyYXRpb25Bcm5zKGFtaURpc3RyaWJ1dGlvbjogQW1pRGlzdHJpYnV0aW9uKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBhbWlEaXN0cmlidXRpb24ubGljZW5zZUNvbmZpZ3VyYXRpb25Bcm5zPy5sZW5ndGggPyBhbWlEaXN0cmlidXRpb24ubGljZW5zZUNvbmZpZ3VyYXRpb25Bcm5zIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNzbVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zKFxuICAgIGFtaURpc3RyaWJ1dGlvbjogQW1pRGlzdHJpYnV0aW9uLFxuICApOiBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uLlNzbVBhcmFtZXRlckNvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9ucyA9IGFtaURpc3RyaWJ1dGlvbi5zc21QYXJhbWV0ZXJzPy5tYXAoXG4gICAgICAoc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbik6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uU3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvblByb3BlcnR5ID0+ICh7XG4gICAgICAgIGFtaUFjY291bnRJZDogc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbi5hbWlBY2NvdW50LFxuICAgICAgICBkYXRhVHlwZTogc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbi5kYXRhVHlwZSxcbiAgICAgICAgcGFyYW1ldGVyTmFtZTogc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbi5wYXJhbWV0ZXIucGFyYW1ldGVyTmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4gc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnM/Lmxlbmd0aCA/IHNzbVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
package/lib/image-pipeline.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as cdk from 'aws-cdk-lib';
|
|
2
|
-
import * as ecr from 'aws-cdk-lib/aws-ecr';
|
|
2
|
+
import type * as ecr from 'aws-cdk-lib/aws-ecr';
|
|
3
3
|
import * as events from 'aws-cdk-lib/aws-events';
|
|
4
4
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
5
|
-
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
6
|
-
import { Construct } from 'constructs';
|
|
7
|
-
import { IDistributionConfiguration } from './distribution-configuration';
|
|
8
|
-
import { IInfrastructureConfiguration } from './infrastructure-configuration';
|
|
9
|
-
import { IRecipeBase } from './recipe-base';
|
|
10
|
-
import { WorkflowConfiguration } from './workflow';
|
|
5
|
+
import type * as logs from 'aws-cdk-lib/aws-logs';
|
|
6
|
+
import type { Construct } from 'constructs';
|
|
7
|
+
import type { IDistributionConfiguration } from './distribution-configuration';
|
|
8
|
+
import type { IInfrastructureConfiguration } from './infrastructure-configuration';
|
|
9
|
+
import type { IRecipeBase } from './recipe-base';
|
|
10
|
+
import type { WorkflowConfiguration } from './workflow';
|
|
11
11
|
/**
|
|
12
12
|
* An EC2 Image Builder Image Pipeline.
|
|
13
13
|
*/
|
package/lib/image-pipeline.js
CHANGED
|
@@ -293,7 +293,7 @@ let ImagePipeline = (() => {
|
|
|
293
293
|
ImagePipeline = _classThis = _classDescriptor.value;
|
|
294
294
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
295
295
|
}
|
|
296
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.
|
|
296
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.238.0-alpha.0" };
|
|
297
297
|
/** Uniquely identifies this class. */
|
|
298
298
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImagePipeline';
|
|
299
299
|
/**
|
|
@@ -476,4 +476,4 @@ let ImagePipeline = (() => {
|
|
|
476
476
|
return ImagePipeline = _classThis;
|
|
477
477
|
})();
|
|
478
478
|
exports.ImagePipeline = ImagePipeline;
|
|
479
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWlEO0FBQ2pELDJDQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsNEVBQXVFO0FBQ3ZFLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFHMUUsaUZBQTJHO0FBQzNHLCtGQUltRDtBQUNuRCwyREFBdUY7QUFJdkYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUF1UzFGOztHQUVHO0FBQ0gsSUFBWSxzQkFXWDtBQVhELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gseUVBQStDLENBQUE7SUFFL0M7OztPQUdHO0lBQ0gsaUlBQXVHLENBQUE7QUFDekcsQ0FBQyxFQVhXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBV2pDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCwwQ0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILDRDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQVU5QjtBQUVEOztHQUVHO0FBQ0gsTUFBZSxpQkFBa0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVduRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3JDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO0tBQ0o7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LEtBQUssU0FBUyxJQUFJO29CQUNwRCxpQkFBaUIsRUFBRTt3QkFDakIsWUFBWSxFQUFFLFFBQVEsQ0FBQyx1QkFBdUI7cUJBQy9DO2lCQUNGLENBQUM7Z0JBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJO29CQUMzQywrQkFBK0IsRUFBRSxRQUFRLENBQUMsY0FBYztpQkFDekQsQ0FBQzthQUNILENBQUM7U0FDSDtRQUVEOzs7OztXQUtHO1FBQ0sseUJBQXlCLEdBQUcsQ0FDbEMsS0FBeUIsRUFDMEMsRUFBRTtZQUNyRSxNQUFNLG9CQUFvQixHQUFHO2dCQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ25GLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDdkcsQ0FBQztZQUVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNyRixDQUFDLENBQUM7O1lBL05TLHVEQUFhOzs7OztBQUFiLHNDQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkltYWdlUGlwZWxpbmUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9kaXN0cmlidXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLCBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtcbiAgYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbixcbiAgYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbixcbiAgYnVpbGRXb3JrZmxvd3MsXG59IGZyb20gJy4vcHJpdmF0ZS9pbWFnZS1hbmQtcGlwZWxpbmUtcHJvcHMtaGVscGVyJztcbmltcG9ydCB7IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5LCBnZXRFeGVjdXRpb25Sb2xlIH0gZnJvbSAnLi9wcml2YXRlL3BvbGljeS1oZWxwZXInO1xuaW1wb3J0IHsgSVJlY2lwZUJhc2UgfSBmcm9tICcuL3JlY2lwZS1iYXNlJztcbmltcG9ydCB7IFdvcmtmbG93Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vd29ya2Zsb3cnO1xuXG5jb25zdCBJTUFHRV9QSVBFTElORV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlUGlwZWxpbmUnKTtcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2VQaXBlbGluZSBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXTtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgdG8gc3RhcnQgYW4gZXhlY3V0aW9uIG9mIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBDVkUgZGV0ZWN0ZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25DVkVEZXRlY3RlZChpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3RhdGVDaGFuZ2UoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRDb21wbGV0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRGYWlsZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3VjY2VzcyBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlQnVpbGRTdWNjZWVkZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgcGlwZWxpbmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgd2FpdCBmb3IgYWN0aW9uIGV2ZW50c1xuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25XYWl0Rm9yQWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBJbWFnZSBQaXBlbGluZSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVjaXBlIHRoYXQgZGVmaW5lcyB0aGUgYmFzZSBpbWFnZSwgY29tcG9uZW50cywgYW5kIGN1c3RvbWl6YXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLiBUaGlzIGNhbiBlaXRoZXIgYmVcbiAgICogYW4gaW1hZ2UgcmVjaXBlLCBvciBhIGNvbnRhaW5lciByZWNpcGUuXG4gICAqL1xuICByZWFkb25seSByZWNpcGU6IElSZWNpcGVCYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLiBUaGlzIGNvbmZpZ3VyZXMgaG93IG9mdGVuIGFuZCB3aGVuIGEgcGlwZWxpbmUgYXV0b21hdGljYWxseSBjcmVhdGVzIGEgbmV3XG4gICAqIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUsIGEgbWFudWFsIGltYWdlIHBpcGVsaW5lIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBJbWFnZVBpcGVsaW5lU2NoZWR1bGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwaXBlbGluZSBpcyBlbmFibGVkIHRvIGJlIHRyaWdnZXJlZCBieSB0aGUgcHJvdmlkZWQgc2NoZWR1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgSW1hZ2VQaXBlbGluZVN0YXR1cy5FTkFCTEVEXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBJbWFnZVBpcGVsaW5lU3RhdHVzO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciBidWlsZGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEEgZGVmYXVsdCBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zIG5lZWRlZCB0byBidWlsZCB0aGVcbiAgICogaW1hZ2UsIGF0dGFjaGVkIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWQgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nc1xuICAgKi9cbiAgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uPzogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIHVzZWQgZm9yIGRpc3RyaWJ1dGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/OiBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygd29ya2Zsb3cgY29uZmlndXJhdGlvbnMgdXNlZCB0byBidWlsZCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW1hZ2UgQnVpbGRlciB3aWxsIHVzZSBhIGRlZmF1bHQgc2V0IG9mIHdvcmtmbG93cyBmb3IgdGhlIGJ1aWxkIHRvIGJ1aWxkLCB0ZXN0LCBhbmQgZGlzdHJpYnV0ZSB0aGUgaW1hZ2VcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93cz86IFdvcmtmbG93Q29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCB0byBwZXJmb3JtIHdvcmtmbG93IGFjdGlvbnMgdG8gYnVpbGQgdGhpcyBpbWFnZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIEltYWdlIEJ1aWxkZXIgU2VydmljZSBMaW5rZWQgUm9sZSAoU0xSKSB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBhbmQgdXNlZCBhcyB0aGUgZXhlY3V0aW9uXG4gICAqIHJvbGUuIEhvd2V2ZXIsIHdoZW4gcHJvdmlkaW5nIGEgY3VzdG9tIHNldCBvZiBpbWFnZSB3b3JrZmxvd3MgZm9yIHRoZSBwaXBlbGluZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZVxuICAgKiBnZW5lcmF0ZWQgd2l0aCB0aGUgbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSB0aGUgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgdGhlIFNMUiBpZiBwb3NzaWJsZS4gT3RoZXJ3aXNlLCBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB0byB1c2UgZm9yIHRoZSBpbWFnZSBwaXBlbGluZS4gQnkgZGVmYXVsdCwgYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGZvcm1hdFxuICAgKiBgL2F3cy9pbWFnZWJ1aWxkZXIvcGlwZWxpbmUvPHBpcGVsaW5lLW5hbWU+YFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciBpbWFnZXMgY3JlYXRlZCBmcm9tIHRoZSBpbWFnZSBwaXBlbGluZS4gQnkgZGVmYXVsdCwgYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlXG4gICAqIGZvcm1hdCBgL2F3cy9pbWFnZWJ1aWxkZXIvPGltYWdlLW5hbWU+YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlTG9nR3JvdXA/OiBsb2dzLklMb2dHcm91cDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgSW1hZ2UgQnVpbGRlciBrZWVwcyBhIHNuYXBzaG90IG9mIHRoZSB2dWxuZXJhYmlsaXR5IHNjYW5zIHRoYXQgQW1hem9uIEluc3BlY3RvciBydW5zIGFnYWluc3QgdGhlXG4gICAqIGJ1aWxkIGluc3RhbmNlIHdoZW4geW91IGNyZWF0ZSBhIG5ldyBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlU2Nhbm5pbmdFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciByZXBvc2l0b3J5IHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2FucyB0byBpZGVudGlmeSBmaW5kaW5ncyBmb3IgeW91ciBjb250YWluZXIgaW1hZ2VzLiBJZiBhXG4gICAqIHJlcG9zaXRvcnkgaXMgbm90IHByb3ZpZGVkLCBJbWFnZSBCdWlsZGVyIGNyZWF0ZXMgYSByZXBvc2l0b3J5IG5hbWVkIGBpbWFnZS1idWlsZGVyLWltYWdlLXNjYW5uaW5nLXJlcG9zaXRvcnlgXG4gICAqIGZvciB2dWxuZXJhYmlsaXR5IHNjYW5uaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlmIHNjYW5uaW5nIGlzIGVuYWJsZWQsIGEgcmVwb3NpdG9yeSB3aWxsIGJlIGNyZWF0ZWQgYnkgSW1hZ2UgQnVpbGRlciBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyUmVwb3NpdG9yeT86IGVjci5JUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgZm9yIEltYWdlIEJ1aWxkZXIgdG8gYXBwbHkgdG8gdGhlIG91dHB1dCBjb250YWluZXIgaW1hZ2UgdGhhdCBBbWF6b24gSW5zcGVjdG9yIHNjYW5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBjb2xsZWN0cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbWFnZSBiZWluZyBjcmVhdGVkLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKE9TKVxuICAgKiB2ZXJzaW9uIGFuZCBwYWNrYWdlIGxpc3QgZm9yIHRoZSBBTUkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJ1biB0ZXN0cyBhZnRlciBidWlsZGluZyBhbiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUZXN0c0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogVGhlIHNjaGVkdWxlIHNldHRpbmdzIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUsIHdoaWNoIGRlZmluZXMgd2hlbiBhIHBpcGVsaW5lIHNob3VsZCBiZSB0cmlnZ2VyZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lU2NoZWR1bGUge1xuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIGV4cHJlc3Npb24gdG8gdXNlLiBUaGlzIGNhbiBlaXRoZXIgYmUgYSBjcm9uIGV4cHJlc3Npb24gb3IgYSByYXRlIGV4cHJlc3Npb24uXG4gICAqL1xuICByZWFkb25seSBleHByZXNzaW9uOiBldmVudHMuU2NoZWR1bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgZmFpbHVyZXMgYWxsb3dlZCBiZWZvcmUgdGhlIHBpcGVsaW5lIGlzIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBiZXR3ZWVuIDEgYW5kIDEwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGF1dG8tZGlzYWJsZSBwb2xpY3kgaXMgY29uZmlndXJlZCBhbmQgdGhlIHBpcGVsaW5lIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIG9uIGNvbnNlY3V0aXZlXG4gICAqIGZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uLkVYUFJFU1NJT05fTUFUQ0hfQU5EX0RFUEVOREVOQ1lfVVBEQVRFU19BVkFJTEFCTEVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0Q29uZGl0aW9uPzogU2NoZWR1bGVTdGFydENvbmRpdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgc3RhcnQgY29uZGl0aW9uIGZvciB0aGUgcGlwZWxpbmUsIGluZGljYXRpbmcgdGhlIGNvbmRpdGlvbiB1bmRlciB3aGljaCBhIHBpcGVsaW5lIHNob3VsZCBiZSB0cmlnZ2VyZWQuXG4gKi9cbmV4cG9ydCBlbnVtIFNjaGVkdWxlU3RhcnRDb25kaXRpb24ge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRvIHRyaWdnZXIgYSBwaXBlbGluZSB3aGVuZXZlciBpdHMgc2NoZWR1bGUgaXMgbWV0XG4gICAqL1xuICBFWFBSRVNTSU9OX01BVENIX09OTFkgPSAnRVhQUkVTU0lPTl9NQVRDSF9PTkxZJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRvIHRyaWdnZXIgYSBwaXBlbGluZSB3aGVuZXZlciBpdHMgc2NoZWR1bGUgaXMgbWV0LCBhbmQgdGhlcmUgYXJlIG1hdGNoaW5nIGRlcGVuZGVuY3kgdXBkYXRlcyBhdmFpbGFibGUsXG4gICAqIHN1Y2ggYXMgbmV3IHZlcnNpb25zIG9mIGNvbXBvbmVudHMgb3IgaW1hZ2VzIHRvIHVzZSBpbiB0aGUgcGlwZWxpbmUgYnVpbGQuXG4gICAqL1xuICBFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFID0gJ0VYUFJFU1NJT05fTUFUQ0hfQU5EX0RFUEVOREVOQ1lfVVBEQVRFU19BVkFJTEFCTEUnLFxufVxuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwaXBlbGluZSBpcyBlbmFibGVkIHRvIGJlIHRyaWdnZXJlZCBieSB0aGUgcHJvdmlkZWQgc2NoZWR1bGVcbiAqL1xuZXhwb3J0IGVudW0gSW1hZ2VQaXBlbGluZVN0YXR1cyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCBmb3Igc2NoZWR1bGluZ1xuICAgKi9cbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGRpc2FibGVkIGFuZCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgb24gdGhlIHNjaGVkdWxlXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgSW1hZ2UgUGlwZWxpbmVcbiAqL1xuYWJzdHJhY3QgY2xhc3MgSW1hZ2VQaXBlbGluZUJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJSW1hZ2VQaXBlbGluZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIGFjdGlvbnM6IGFjdGlvbnMsXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0SW1hZ2VQaXBlbGluZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOlN0YXJ0SW1hZ2VQaXBlbGluZUV4ZWN1dGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGlkLCBvcHRpb25zKTtcbiAgICBydWxlLmFkZFRhcmdldChvcHRpb25zLnRhcmdldCk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbJ2F3cy5pbWFnZWJ1aWxkZXInXSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8ucmVzb3VyY2VzPy5sZW5ndGggJiYgeyByZXNvdXJjZXM6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLnJlc291cmNlcyB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsVHlwZT8ubGVuZ3RoICYmIHsgZGV0YWlsVHlwZTogb3B0aW9ucy5ldmVudFBhdHRlcm4uZGV0YWlsVHlwZSB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsICE9PSB1bmRlZmluZWQgJiYgeyBkZXRhaWw6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbCB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkNWRURldGVjdGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgQ1ZFIERldGVjdGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgU3RhdGUgQ2hhbmdlJ10gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0FWQUlMQUJMRScsICdDQU5DRUxMRUQnLCAnRkFJTEVEJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN1Y2NlZWRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBwaXBlbGluZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFBpcGVsaW5lIEF1dG9tYXRpY2FsbHkgRGlzYWJsZWQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbldhaXRGb3JBY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybiwgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvdyBTdGVwIFdhaXRpbmcnXSB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcGlwZWxpbmVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlUGlwZWxpbmUgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVBcm46IHN0cmluZyk6IElJbWFnZVBpcGVsaW5lIHtcbiAgICBjb25zdCBpbWFnZVBpcGVsaW5lTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbWFnZVBpcGVsaW5lQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlUGlwZWxpbmVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lQXJuID0gaW1hZ2VQaXBlbGluZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZSA9IGltYWdlUGlwZWxpbmVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGxcbiAgICogYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUGlwZWxpbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUGlwZWxpbmVBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZS1waXBlbGluZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogaW1hZ2VQaXBlbGluZU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2VQaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZVBpcGVsaW5lKHg6IGFueSk6IHggaXMgSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1BJUEVMSU5FX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC4gSWYgdGhlcmUgaXMgbm8gZXhlY3V0aW9uIHJvbGUsIHRoZW4gdGhlIGJ1aWxkIHdpbGwgYmUgZXhlY3V0ZWQgd2l0aFxuICAgKiB0aGUgQVdTU2VydmljZVJvbGVGb3JJbWFnZUJ1aWxkZXIgc2VydmljZS1saW5rZWQgcm9sZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcztcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogQ2ZuSW1hZ2VQaXBlbGluZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5pbWFnZVBpcGVsaW5lTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgSU1BR0VfUElQRUxJTkVfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUltYWdlUGlwZWxpbmVOYW1lKCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiA9XG4gICAgICBwcm9wcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPz8gbmV3IEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbih0aGlzLCAnSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uJyk7XG4gICAgdGhpcy5leGVjdXRpb25Sb2xlID0gZ2V0RXhlY3V0aW9uUm9sZShcbiAgICAgIHRoaXMsXG4gICAgICAoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpID0+IHRoaXMuZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWUpLFxuICAgICAgcHJvcHMsXG4gICAgKTtcblxuICAgIGlmIChJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uaXNJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24pKSB7XG4gICAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5fYmluZCh7IGlzQ29udGFpbmVyQnVpbGQ6IHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSB9KTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkgJiYgcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBjYW5ub3QgYmUgYm90aCBhbiBJSW1hZ2VSZWNpcGUgYW5kIGFuIElDb250YWluZXJSZWNpcGUnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmICFwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgcmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIElJbWFnZVJlY2lwZSBvciBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VQaXBlbGluZSA9IG5ldyBDZm5JbWFnZVBpcGVsaW5lKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgLi4uKHByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHsgaW1hZ2VSZWNpcGVBcm46IHByb3BzLnJlY2lwZS5pbWFnZVJlY2lwZUFybiB9KSxcbiAgICAgIC4uLihwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgJiYgeyBjb250YWluZXJSZWNpcGVBcm46IHByb3BzLnJlY2lwZS5jb250YWluZXJSZWNpcGVBcm4gfSksXG4gICAgICAuLi4ocHJvcHMuc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgeyBzdGF0dXM6IHByb3BzLnN0YXR1cyB9KSxcbiAgICAgIGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybjogdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuLFxuICAgICAgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjogcHJvcHMuZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbj8uZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQ6IHByb3BzLmVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQsXG4gICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICBzY2hlZHVsZTogdGhpcy5idWlsZFNjaGVkdWxlKHByb3BzKSxcbiAgICAgIGxvZ2dpbmdDb25maWd1cmF0aW9uOiB0aGlzLmJ1aWxkTG9nZ2luZ0NvbmZpZ3VyYXRpb24ocHJvcHMpLFxuICAgICAgaW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb246IGJ1aWxkSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb248XG4gICAgICAgIEltYWdlUGlwZWxpbmVQcm9wcyxcbiAgICAgICAgQ2ZuSW1hZ2VQaXBlbGluZS5JbWFnZVRlc3RzQ29uZmlndXJhdGlvblByb3BlcnR5XG4gICAgICA+KHByb3BzKSxcbiAgICAgIGltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uOiBidWlsZEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uPFxuICAgICAgICBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICAgICAgIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPih0aGlzLCBwcm9wcyksXG4gICAgICB3b3JrZmxvd3M6IGJ1aWxkV29ya2Zsb3dzPEltYWdlUGlwZWxpbmVQcm9wcywgQ2ZuSW1hZ2VQaXBlbGluZS5Xb3JrZmxvd0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdPihwcm9wcyksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IGltYWdlUGlwZWxpbmU7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZVBpcGVsaW5lTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmF0dHJOYW1lKTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGltYWdlUGlwZWxpbmVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmF0dHJBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgcmVzb3VyY2U6ICdpbWFnZS1waXBlbGluZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzLCB0aGlzLnByb3BzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUltYWdlUGlwZWxpbmVOYW1lKCkge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucGh5c2ljYWxOYW1lKSkge1xuICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgdmFsaWRhdGUgdW5yZXNvbHZlZCB0b2tlbnMsIGdpdmVuIHRoZWlyIGFjdHVhbCB2YWx1ZSBpcyByZW5kZXJlZCBhdCBkZXBsb3ltZW50IHRpbWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGltYWdlUGlwZWxpbmVOYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnICcpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGltYWdlUGlwZWxpbmVOYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGltYWdlUGlwZWxpbmVOYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGltYWdlUGlwZWxpbmVOYW1lIG11c3QgYmUgbG93ZXJjYXNlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNjaGVkdWxlKHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMpOiBDZm5JbWFnZVBpcGVsaW5lLlNjaGVkdWxlUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNjaGVkdWxlID0gcHJvcHMuc2NoZWR1bGU7XG4gICAgaWYgKCFzY2hlZHVsZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgIT09IHVuZGVmaW5lZCAmJiAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCkpIHtcbiAgICAgIGlmIChzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCA8IDEgfHwgc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgPiAxMCkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIGF1dG9EaXNhYmxlRmFpbHVyZUNvdW50IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMCcsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246IHNjaGVkdWxlLmV4cHJlc3Npb24uZXhwcmVzc2lvblN0cmluZyxcbiAgICAgIC4uLihzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgYXV0b0Rpc2FibGVQb2xpY3k6IHtcbiAgICAgICAgICBmYWlsdXJlQ291bnQ6IHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICAuLi4oc2NoZWR1bGUuc3RhcnRDb25kaXRpb24gIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIHBpcGVsaW5lRXhlY3V0aW9uU3RhcnRDb25kaXRpb246IHNjaGVkdWxlLnN0YXJ0Q29uZGl0aW9uLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGxvZ2dpbmdDb25maWd1cmF0aW9uIHByb3BlcnR5IGludG8gdGhlIGBMb2dnaW5nQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDFcbiAgICogZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFByb3BzIGlucHV0IGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9nZ2luZ0NvbmZpZ3VyYXRpb24gPSAoXG4gICAgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcyxcbiAgKTogQ2ZuSW1hZ2VQaXBlbGluZS5QaXBlbGluZUxvZ2dpbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGxvZ2dpbmdDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4uKHByb3BzLmltYWdlTG9nR3JvdXAgJiYgeyBpbWFnZUxvZ0dyb3VwTmFtZTogcHJvcHMuaW1hZ2VMb2dHcm91cC5sb2dHcm91cE5hbWUgfSksXG4gICAgICAuLi4ocHJvcHMuaW1hZ2VQaXBlbGluZUxvZ0dyb3VwICYmIHsgcGlwZWxpbmVMb2dHcm91cE5hbWU6IHByb3BzLmltYWdlUGlwZWxpbmVMb2dHcm91cC5sb2dHcm91cE5hbWUgfSksXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhsb2dnaW5nQ29uZmlndXJhdGlvbikubGVuZ3RoID8gbG9nZ2luZ0NvbmZpZ3VyYXRpb24gOiB1bmRlZmluZWQ7XG4gIH07XG59XG4iXX0=
|
|
479
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWlEO0FBQ2pELDJDQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsNEVBQXVFO0FBQ3ZFLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFJMUUsaUZBQTZFO0FBQzdFLCtGQUltRDtBQUNuRCwyREFBdUY7QUFJdkYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUF1UzFGOztHQUVHO0FBQ0gsSUFBWSxzQkFXWDtBQVhELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gseUVBQStDLENBQUE7SUFFL0M7OztPQUdHO0lBQ0gsaUlBQXVHLENBQUE7QUFDekcsQ0FBQyxFQVhXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBV2pDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCwwQ0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILDRDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQVU5QjtBQUVEOztHQUVHO0FBQ0gsTUFBZSxpQkFBa0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVduRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3JDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO0tBQ0o7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LEtBQUssU0FBUyxJQUFJO29CQUNwRCxpQkFBaUIsRUFBRTt3QkFDakIsWUFBWSxFQUFFLFFBQVEsQ0FBQyx1QkFBdUI7cUJBQy9DO2lCQUNGLENBQUM7Z0JBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJO29CQUMzQywrQkFBK0IsRUFBRSxRQUFRLENBQUMsY0FBYztpQkFDekQsQ0FBQzthQUNILENBQUM7U0FDSDtRQUVEOzs7OztXQUtHO1FBQ0sseUJBQXlCLEdBQUcsQ0FDbEMsS0FBeUIsRUFDMEMsRUFBRTtZQUNyRSxNQUFNLG9CQUFvQixHQUFHO2dCQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ25GLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDdkcsQ0FBQztZQUVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNyRixDQUFDLENBQUM7O1lBL05TLHVEQUFhOzs7OztBQUFiLHNDQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuSW1hZ2VQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0IHR5cGUgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJztcbmltcG9ydCB0eXBlIHsgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtcbiAgYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbixcbiAgYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbixcbiAgYnVpbGRXb3JrZmxvd3MsXG59IGZyb20gJy4vcHJpdmF0ZS9pbWFnZS1hbmQtcGlwZWxpbmUtcHJvcHMtaGVscGVyJztcbmltcG9ydCB7IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5LCBnZXRFeGVjdXRpb25Sb2xlIH0gZnJvbSAnLi9wcml2YXRlL3BvbGljeS1oZWxwZXInO1xuaW1wb3J0IHR5cGUgeyBJUmVjaXBlQmFzZSB9IGZyb20gJy4vcmVjaXBlLWJhc2UnO1xuaW1wb3J0IHR5cGUgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3dvcmtmbG93JztcblxuY29uc3QgSU1BR0VfUElQRUxJTkVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlUGlwZWxpbmUgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W107XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRTdGFydEV4ZWN1dGlvbihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uRXZlbnQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uQ1ZFRGV0ZWN0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3RhdGUgY2hhbmdlIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGNvbXBsZXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGZhaWx1cmUgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3VjY2VlZGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZVBpcGVsaW5lQXV0b0Rpc2FibGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uV2FpdEZvckFjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW1hZ2UgUGlwZWxpbmUgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlY2lwZSB0aGF0IGRlZmluZXMgdGhlIGJhc2UgaW1hZ2UsIGNvbXBvbmVudHMsIGFuZCBjdXN0b21pemF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4gVGhpcyBjYW4gZWl0aGVyIGJlXG4gICAqIGFuIGltYWdlIHJlY2lwZSwgb3IgYSBjb250YWluZXIgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlOiBJUmVjaXBlQmFzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9mIHRoZSBpbWFnZSBwaXBlbGluZS4gVGhpcyBjb25maWd1cmVzIGhvdyBvZnRlbiBhbmQgd2hlbiBhIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIG5ld1xuICAgKiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lLCBhIG1hbnVhbCBpbWFnZSBwaXBlbGluZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogSW1hZ2VQaXBlbGluZVNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IEltYWdlUGlwZWxpbmVTdGF0dXMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogSW1hZ2VQaXBlbGluZVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBBIGRlZmF1bHQgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBwcm9maWxlIGFuZCByb2xlIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlXG4gICAqIGltYWdlLCBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbj86IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB1c2VkIGZvciBkaXN0cmlidXRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uPzogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgYSBkZWZhdWx0IHNldCBvZiB3b3JrZmxvd3MgZm9yIHRoZSBidWlsZCB0byBidWlsZCwgdGVzdCwgYW5kIGRpc3RyaWJ1dGUgdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgdG8gcGVyZm9ybSB3b3JrZmxvdyBhY3Rpb25zIHRvIGJ1aWxkIHRoaXMgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgcGlwZWxpbmUsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyL3BpcGVsaW5lLzxwaXBlbGluZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVMb2dHcm91cD86IGxvZ3MuSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIHVzZSBmb3IgaW1hZ2VzIGNyZWF0ZWQgZnJvbSB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZVxuICAgKiBmb3JtYXQgYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBzY2hlZHVsZSBzZXR0aW5ncyBmb3IgdGhlIGltYWdlIHBpcGVsaW5lLCB3aGljaCBkZWZpbmVzIHdoZW4gYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQaXBlbGluZVNjaGVkdWxlIHtcbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZSBleHByZXNzaW9uIHRvIHVzZS4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgY3JvbiBleHByZXNzaW9uIG9yIGEgcmF0ZSBleHByZXNzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwcmVzc2lvbjogZXZlbnRzLlNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWx1cmVzIGFsbG93ZWQgYmVmb3JlIHRoZSBwaXBlbGluZSBpcyBhdXRvbWF0aWNhbGx5IGRpc2FibGVkLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogYmV0d2VlbiAxIGFuZCAxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhdXRvLWRpc2FibGUgcG9saWN5IGlzIGNvbmZpZ3VyZWQgYW5kIHRoZSBwaXBlbGluZSBpcyBub3QgYXV0b21hdGljYWxseSBkaXNhYmxlZCBvbiBjb25zZWN1dGl2ZVxuICAgKiBmYWlsdXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBjb25kaXRpb24gZm9yIHRoZSBwaXBlbGluZSwgaW5kaWNhdGluZyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGEgcGlwZWxpbmUgc2hvdWxkIGJlIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU2NoZWR1bGVTdGFydENvbmRpdGlvbi5FWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFXG4gICAqL1xuICByZWFkb25seSBzdGFydENvbmRpdGlvbj86IFNjaGVkdWxlU3RhcnRDb25kaXRpb247XG59XG5cbi8qKlxuICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICovXG5leHBvcnQgZW51bSBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldFxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9PTkxZID0gJ0VYUFJFU1NJT05fTUFUQ0hfT05MWScsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldCwgYW5kIHRoZXJlIGFyZSBtYXRjaGluZyBkZXBlbmRlbmN5IHVwZGF0ZXMgYXZhaWxhYmxlLFxuICAgKiBzdWNoIGFzIG5ldyB2ZXJzaW9ucyBvZiBjb21wb25lbnRzIG9yIGltYWdlcyB0byB1c2UgaW4gdGhlIHBpcGVsaW5lIGJ1aWxkLlxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9BTkRfREVQRU5ERU5DWV9VUERBVEVTX0FWQUlMQUJMRSA9ICdFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFJyxcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlUGlwZWxpbmVTdGF0dXMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGVuYWJsZWQgZm9yIHNjaGVkdWxpbmdcbiAgICovXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBwaXBlbGluZSBpcyBkaXNhYmxlZCBhbmQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIG9uIHRoZSBzY2hlZHVsZVxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlIFBpcGVsaW5lXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlUGlwZWxpbmVCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUltYWdlUGlwZWxpbmUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgcHVibGljIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdIHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5KHRoaXMpO1xuICAgIHJldHVybiBwb2xpY2llcy5tYXAoKHBvbGljeSkgPT5cbiAgICAgIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICAgIHJlc291cmNlQXJuczogcG9saWN5LnJlc291cmNlcyxcbiAgICAgICAgYWN0aW9uczogcG9saWN5LmFjdGlvbnMsXG4gICAgICAgIGNvbmRpdGlvbnM6IHBvbGljeS5jb25kaXRpb25zLFxuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlUGlwZWxpbmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSB0byBzdGFydCBhbiBleGVjdXRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRTdGFydEV4ZWN1dGlvbihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpTdGFydEltYWdlUGlwZWxpbmVFeGVjdXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uRXZlbnQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgY29uc3QgcnVsZSA9IG5ldyBldmVudHMuUnVsZSh0aGlzLCBpZCwgb3B0aW9ucyk7XG4gICAgcnVsZS5hZGRUYXJnZXQob3B0aW9ucy50YXJnZXQpO1xuICAgIHJ1bGUuYWRkRXZlbnRQYXR0ZXJuKHtcbiAgICAgIHNvdXJjZTogWydhd3MuaW1hZ2VidWlsZGVyJ10sXG4gICAgICAuLi4ob3B0aW9ucy5ldmVudFBhdHRlcm4/LnJlc291cmNlcz8ubGVuZ3RoICYmIHsgcmVzb3VyY2VzOiBvcHRpb25zLmV2ZW50UGF0dGVybi5yZXNvdXJjZXMgfSksXG4gICAgICAuLi4ob3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbFR5cGU/Lmxlbmd0aCAmJiB7IGRldGFpbFR5cGU6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbFR5cGUgfSksXG4gICAgICAuLi4ob3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCAhPT0gdW5kZWZpbmVkICYmIHsgZGV0YWlsOiBvcHRpb25zLmV2ZW50UGF0dGVybi5kZXRhaWwgfSksXG4gICAgfSk7XG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIENWRSBkZXRlY3RlZCBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25DVkVEZXRlY3RlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkV2ZW50KGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIENWRSBEZXRlY3RlZCddLFxuICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmltYWdlUGlwZWxpbmVBcm5dLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3RhdGUgY2hhbmdlIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkV2ZW50KGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLCBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFN0YXRlIENoYW5nZSddIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGNvbXBsZXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZENvbXBsZXRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnLCAnQ0FOQ0VMTEVEJywgJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGZhaWx1cmUgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZEZhaWxlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydGQUlMRUQnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdWNjZXNzIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlQnVpbGRTdWNjZWVkZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25JbWFnZUJ1aWxkU3RhdGVDaGFuZ2UoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbDogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsLCBzdGF0ZTogeyBzdGF0dXM6IFsnQVZBSUxBQkxFJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgcGlwZWxpbmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZVBpcGVsaW5lQXV0b0Rpc2FibGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZSBBdXRvbWF0aWNhbGx5IERpc2FibGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciB3YWl0IGZvciBhY3Rpb24gZXZlbnRzXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25XYWl0Rm9yQWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgV29ya2Zsb3cgU3RlcCBXYWl0aW5nJ10gfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUGlwZWxpbmUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvbWFuYWdlLXBpcGVsaW5lcy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBJbWFnZVBpcGVsaW5lIGV4dGVuZHMgSW1hZ2VQaXBlbGluZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW1hZ2VQaXBlbGluZSc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBwaXBlbGluZSBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VQaXBlbGluZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZVBpcGVsaW5lQXJuOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgY29uc3QgaW1hZ2VQaXBlbGluZU5hbWUgPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAgaW1hZ2VQaXBlbGluZUFybixcbiAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybiA9IGltYWdlUGlwZWxpbmVBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZU5hbWUgPSBpbWFnZVBpcGVsaW5lTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBwaXBlbGluZSBnaXZlbiBpdHMgbmFtZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsXG4gICAqIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nKTogSUltYWdlUGlwZWxpbmUge1xuICAgIHJldHVybiB0aGlzLmZyb21JbWFnZVBpcGVsaW5lQXJuKFxuICAgICAgc2NvcGUsXG4gICAgICBpZCxcbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnaW1hZ2UtcGlwZWxpbmUnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGltYWdlUGlwZWxpbmVOYW1lLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIEltYWdlUGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzSW1hZ2VQaXBlbGluZSh4OiBhbnkpOiB4IGlzIEltYWdlUGlwZWxpbmUge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBJTUFHRV9QSVBFTElORV9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb246IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuIElmIHRoZXJlIGlzIG5vIGV4ZWN1dGlvbiByb2xlLCB0aGVuIHRoZSBidWlsZCB3aWxsIGJlIGV4ZWN1dGVkIHdpdGhcbiAgICogdGhlIEFXU1NlcnZpY2VSb2xlRm9ySW1hZ2VCdWlsZGVyIHNlcnZpY2UtbGlua2VkIHJvbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IENmbkltYWdlUGlwZWxpbmU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuaW1hZ2VQaXBlbGluZU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElNQUdFX1BJUEVMSU5FX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPVxuICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID8/IG5ldyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcywgJ0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiBwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBtdXN0IGVpdGhlciBiZSBhbiBJSW1hZ2VSZWNpcGUgb3IgSUNvbnRhaW5lclJlY2lwZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlUGlwZWxpbmUgPSBuZXcgQ2ZuSW1hZ2VQaXBlbGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIC4uLihwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiB7IGltYWdlUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuaW1hZ2VSZWNpcGVBcm4gfSksXG4gICAgICAuLi4ocHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHsgY29udGFpbmVyUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuY29udGFpbmVyUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHByb3BzLnN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHsgc3RhdHVzOiBwcm9wcy5zdGF0dXMgfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlPy5yb2xlQXJuLFxuICAgICAgc2NoZWR1bGU6IHRoaXMuYnVpbGRTY2hlZHVsZShwcm9wcyksXG4gICAgICBsb2dnaW5nQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGltYWdlVGVzdHNDb25maWd1cmF0aW9uOiBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uPFxuICAgICAgICBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICAgICAgIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPihwcm9wcyksXG4gICAgICBpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQaXBlbGluZVByb3BzLFxuICAgICAgICBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVBpcGVsaW5lUHJvcHMsIENmbkltYWdlUGlwZWxpbmUuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXT4ocHJvcHMpLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBpbWFnZVBpcGVsaW5lO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VQaXBlbGluZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyTmFtZSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZVBpcGVsaW5lQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnaW1hZ2UtcGlwZWxpbmUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcywgdGhpcy5wcm9wcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTY2hlZHVsZShwcm9wczogSW1hZ2VQaXBlbGluZVByb3BzKTogQ2ZuSW1hZ2VQaXBlbGluZS5TY2hlZHVsZVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzY2hlZHVsZSA9IHByb3BzLnNjaGVkdWxlO1xuICAgIGlmICghc2NoZWR1bGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ICE9PSB1bmRlZmluZWQgJiYgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQpKSB7XG4gICAgICBpZiAoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgPCAxIHx8IHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ID4gMTApIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBzY2hlZHVsZS5leHByZXNzaW9uLmV4cHJlc3Npb25TdHJpbmcsXG4gICAgICAuLi4oc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIGF1dG9EaXNhYmxlUG9saWN5OiB7XG4gICAgICAgICAgZmFpbHVyZUNvdW50OiBzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHNjaGVkdWxlLnN0YXJ0Q29uZGl0aW9uICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBwaXBlbGluZUV4ZWN1dGlvblN0YXJ0Q29uZGl0aW9uOiBzY2hlZHVsZS5zdGFydENvbmRpdGlvbixcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBsb2dnaW5nQ29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgTG9nZ2luZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvZ2dpbmdDb25maWd1cmF0aW9uID0gKFxuICAgIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICk6IENmbkltYWdlUGlwZWxpbmUuUGlwZWxpbmVMb2dnaW5nQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBsb2dnaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLihwcm9wcy5pbWFnZUxvZ0dyb3VwICYmIHsgaW1hZ2VMb2dHcm91cE5hbWU6IHByb3BzLmltYWdlTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgICAgLi4uKHByb3BzLmltYWdlUGlwZWxpbmVMb2dHcm91cCAmJiB7IHBpcGVsaW5lTG9nR3JvdXBOYW1lOiBwcm9wcy5pbWFnZVBpcGVsaW5lTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9nZ2luZ0NvbmZpZ3VyYXRpb24pLmxlbmd0aCA/IGxvZ2dpbmdDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9O1xufVxuIl19
|
package/lib/image-recipe.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as cdk from 'aws-cdk-lib';
|
|
2
|
-
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import type * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
3
3
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
4
|
-
import { Construct } from 'constructs';
|
|
5
|
-
import { BaseImage } from './base-image';
|
|
6
|
-
import { IContainerRecipe } from './container-recipe';
|
|
7
|
-
import { ComponentConfiguration, IRecipeBase } from './recipe-base';
|
|
4
|
+
import type { Construct } from 'constructs';
|
|
5
|
+
import type { BaseImage } from './base-image';
|
|
6
|
+
import type { IContainerRecipe } from './container-recipe';
|
|
7
|
+
import type { ComponentConfiguration, IRecipeBase } from './recipe-base';
|
|
8
8
|
/**
|
|
9
9
|
* An EC2 Image Builder Image Recipe.
|
|
10
10
|
*/
|