@cdklabs/cdk-appmod-catalog-blueprints 1.17.0 → 1.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +5 -5
- package/lib/document-processing/adapter/queued-s3-adapter.js +39 -5
- package/lib/document-processing/agentic-document-processing.js +6 -4
- package/lib/document-processing/base-document-processing.js +16 -4
- package/lib/document-processing/bedrock-document-processing.js +109 -66
- package/lib/document-processing/default-document-processing-config.js +3 -5
- package/lib/document-processing/localstack-agentic-document-processing.js +38 -5
- package/lib/document-processing/localstack-bedrock-document-processing.js +36 -5
- package/lib/document-processing/tests/base-document-processing-nag.test.js +3 -1
- package/lib/document-processing/tests/base-document-processing-schema.test.js +6 -1
- package/lib/document-processing/tests/base-document-processing.test.js +12 -1
- package/lib/document-processing/tests/localstack-agentic-document-processing.test.js +35 -2
- package/lib/document-processing/tests/localstack-document-processing.test.js +35 -2
- package/lib/document-processing/tests/queued-s3-adapter-nag.test.js +3 -1
- package/lib/document-processing/tests/queued-s3-adapter.test.js +3 -1
- package/lib/framework/agents/base-agent.js +31 -4
- package/lib/framework/agents/batch-agent.js +37 -5
- package/lib/framework/agents/default-agent-config.js +3 -5
- package/lib/framework/agents/interactive-agent.js +115 -23
- package/lib/framework/agents/knowledge-base/base-knowledge-base.js +30 -4
- package/lib/framework/agents/knowledge-base/bedrock-knowledge-base.js +81 -5
- package/lib/framework/agents/localstack-batch-agent.js +36 -5
- package/lib/framework/agents/tests/agent-knowledge-base-nag.test.js +35 -2
- package/lib/framework/bedrock/bedrock.js +2 -4
- package/lib/framework/custom-resource/default-runtimes.js +20 -22
- package/lib/framework/foundation/access-log.js +50 -7
- package/lib/framework/foundation/eventbridge-broker.js +5 -4
- package/lib/framework/foundation/network.js +4 -4
- package/lib/framework/localstack/localstack-config.js +3 -5
- package/lib/framework/tests/base-agent-knowledge-base.test.js +35 -2
- package/lib/framework/tests/batch-agent.test.js +35 -2
- package/lib/framework/tests/framework-nag.test.js +35 -2
- package/lib/framework/tests/interactive-agent-nag.test.js +35 -2
- package/lib/framework/tests/interactive-agent.test.js +35 -2
- package/lib/framework/tests/localstack-batch-agent.test.js +35 -2
- package/lib/utilities/data-loader.js +50 -5
- package/lib/utilities/lambda-iam-utils.js +38 -7
- package/lib/utilities/lambda_layers/data-masking/layer-construct.js +40 -3
- package/lib/utilities/observability/bedrock-observability.js +38 -2
- package/lib/utilities/observability/cloudfront-distribution-observability-property-injector.js +3 -4
- package/lib/utilities/observability/cloudwatch-transaction-search.js +36 -5
- package/lib/utilities/observability/default-observability-config.js +6 -8
- package/lib/utilities/observability/lambda-observability-property-injector.js +4 -4
- package/lib/utilities/observability/log-group-data-protection-utils.js +2 -4
- package/lib/utilities/observability/observability.js +47 -6
- package/lib/utilities/observability/powertools-config.js +2 -4
- package/lib/utilities/observability/state-machine-observability-property-injector.js +4 -4
- package/lib/webapp/frontend-construct.js +46 -5
- package/lib/webapp/tests/frontend-construct-nag.test.js +36 -3
- package/lib/webapp/tests/frontend-construct.test.js +36 -3
- package/package.json +60 -61
- package/lib/tsconfig.tsbuildinfo +0 -1
|
@@ -1,11 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
3
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
36
|
exports.DataLoader = exports.FileType = exports.DatabaseEngine = void 0;
|
|
5
37
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
38
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
39
|
// SPDX-License-Identifier: Apache-2.0
|
|
8
|
-
const path = require("path");
|
|
40
|
+
const path = __importStar(require("path"));
|
|
9
41
|
const aws_lambda_python_alpha_1 = require("@aws-cdk/aws-lambda-python-alpha");
|
|
10
42
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
11
43
|
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
@@ -57,6 +89,21 @@ var FileType;
|
|
|
57
89
|
* to orchestrate processing, and executing the data loading pipeline.
|
|
58
90
|
*/
|
|
59
91
|
class DataLoader extends constructs_1.Construct {
|
|
92
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DataLoader", version: "1.17.2" };
|
|
93
|
+
/** The S3 bucket used for storing files */
|
|
94
|
+
bucket;
|
|
95
|
+
/** The Step Functions state machine for orchestration */
|
|
96
|
+
stateMachine;
|
|
97
|
+
/** The Lambda function that processes the data loading */
|
|
98
|
+
processorFunction;
|
|
99
|
+
/** The bucket deployment for uploading files */
|
|
100
|
+
bucketDeployment;
|
|
101
|
+
/** The custom resource provider for triggering state machine execution */
|
|
102
|
+
customResourceProvider;
|
|
103
|
+
/** The custom resource that triggers the state machine */
|
|
104
|
+
executionTrigger;
|
|
105
|
+
/** The file inputs configuration */
|
|
106
|
+
fileInputs;
|
|
60
107
|
constructor(scope, id, props) {
|
|
61
108
|
super(scope, id);
|
|
62
109
|
// Store file inputs for later use
|
|
@@ -443,6 +490,4 @@ def handler(event, context):
|
|
|
443
490
|
}
|
|
444
491
|
}
|
|
445
492
|
exports.DataLoader = DataLoader;
|
|
446
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
447
|
-
DataLoader[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DataLoader", version: "1.17.0" };
|
|
448
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi91c2UtY2FzZXMvdXRpbGl0aWVzL2RhdGEtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0Qyw2QkFBNkI7QUFDN0IsOEVBQWtFO0FBQ2xFLDZDQUFtRjtBQUNuRixpREFBZ0Y7QUFDaEYsaURBQXFIO0FBQ3JILHVEQUFpRztBQUVqRywrQ0FBaUY7QUFDakYscUVBQXlFO0FBRXpFLHFFQUE2RjtBQUM3RixpRkFBbUU7QUFDbkUsbUVBQXdEO0FBQ3hELDJDQUF1QztBQUN2QyxvRkFBZ0Y7QUFFaEY7O0dBRUc7QUFDSCxJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsaUNBQWUsQ0FBQTtJQUNmLDJDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFIVyxjQUFjLDhCQUFkLGNBQWMsUUFHekI7QUFFRDs7R0FFRztBQUNILElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNsQix3QkFBd0I7SUFDeEIsdUJBQVcsQ0FBQTtJQUNYLDZDQUE2QztJQUM3QyxtQ0FBdUIsQ0FBQTtJQUN2QixnREFBZ0Q7SUFDaEQsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLFFBQVEsd0JBQVIsUUFBUSxRQU9uQjtBQW9ERDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQWdCdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFFbkMsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0Isa0NBQWtDO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLEtBQUss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LEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCO1lBQ3hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixtREFBbUQ7Z0JBQ25ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLGNBQWMsUUFBUSxFQUFFLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEvYkgsZ0NBZ2NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUHl0aG9uRnVuY3Rpb24gfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgQ3VzdG9tUmVzb3VyY2UsIERvY2tlckltYWdlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSVZwYywgU2VjdXJpdHlHcm91cCwgUG9ydCwgSVNlY3VyaXR5R3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgUm9sZSwgU2VydmljZVByaW5jaXBhbCwgTWFuYWdlZFBvbGljeSwgUG9saWN5RG9jdW1lbnQsIEVmZmVjdCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlLCBDb2RlLCBGdW5jdGlvbiBhcyBMYW1iZGFGdW5jdGlvbiwgUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgSURhdGFiYXNlQ2x1c3RlciwgSURhdGFiYXNlSW5zdGFuY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB7IEJ1Y2tldCwgQnVja2V0RW5jcnlwdGlvbiwgQmxvY2tQdWJsaWNBY2Nlc3MgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQnVja2V0RGVwbG95bWVudCwgU291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnQnO1xuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmUsIERlZmluaXRpb25Cb2R5LCBNYXAsIFRhc2tJbnB1dCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCB7IExhbWJkYUludm9rZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zLXRhc2tzJztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERlZmF1bHRSdW50aW1lcyB9IGZyb20gJy4uL2ZyYW1ld29yay9jdXN0b20tcmVzb3VyY2UvZGVmYXVsdC1ydW50aW1lcyc7XG5cbi8qKlxuICogU3VwcG9ydGVkIGRhdGFiYXNlIGVuZ2luZXNcbiAqL1xuZXhwb3J0IGVudW0gRGF0YWJhc2VFbmdpbmUge1xuICBNWVNRTCA9ICdteXNxbCcsXG4gIFBPU1RHUkVTUUwgPSAncG9zdGdyZXNxbCcsXG59XG5cbi8qKlxuICogU3VwcG9ydGVkIGZpbGUgdHlwZXMgZm9yIGRhdGEgbG9hZGluZ1xuICovXG5leHBvcnQgZW51bSBGaWxlVHlwZSB7XG4gIC8qKiBTdGFuZGFyZCBTUUwgZmlsZSAqL1xuICBTUUwgPSAnc3FsJyxcbiAgLyoqIE15U1FMIGR1bXAgZmlsZSBnZW5lcmF0ZWQgYnkgbXlzcWxkdW1wICovXG4gIE1ZU1FMRFVNUCA9ICdteXNxbGR1bXAnLFxuICAvKiogUG9zdGdyZVNRTCBkdW1wIGZpbGUgZ2VuZXJhdGVkIGJ5IHBnX2R1bXAgKi9cbiAgUEdEVU1QID0gJ3BnZHVtcCcsXG59XG5cbi8qKlxuICogRGF0YWJhc2UgY29ubmVjdGlvbiBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VDb25maWcge1xuICAvKiogRGF0YWJhc2UgZW5naW5lIHR5cGUgKi9cbiAgcmVhZG9ubHkgZW5naW5lOiBEYXRhYmFzZUVuZ2luZTtcbiAgLyoqIERhdGFiYXNlIGNsdXN0ZXIgKGZvciBBdXJvcmEpICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBJRGF0YWJhc2VDbHVzdGVyO1xuICAvKiogRGF0YWJhc2UgaW5zdGFuY2UgKGZvciBSRFMpICovXG4gIHJlYWRvbmx5IGluc3RhbmNlPzogSURhdGFiYXNlSW5zdGFuY2U7XG4gIC8qKiBEYXRhYmFzZSBjcmVkZW50aWFscyBzZWNyZXQgKi9cbiAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuICAvKiogRGF0YWJhc2UgbmFtZSB0byBjb25uZWN0IHRvICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICAvKiogVlBDIHdoZXJlIHRoZSBkYXRhYmFzZSBpcyBsb2NhdGVkICovXG4gIHJlYWRvbmx5IHZwYzogSVZwYztcbiAgLyoqIFNlY3VyaXR5IGdyb3VwIGZvciBkYXRhYmFzZSBhY2Nlc3MgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXA7XG59XG5cbi8qKlxuICogRmlsZSBpbnB1dCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUlucHV0IHtcbiAgLyoqIFBhdGggdG8gdGhlIGZpbGUgKGxvY2FsIHBhdGggb3IgUzMgVVJJKSAqL1xuICByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuICAvKiogVHlwZSBvZiBmaWxlICovXG4gIHJlYWRvbmx5IGZpbGVUeXBlOiBGaWxlVHlwZTtcbiAgLyoqIEV4ZWN1dGlvbiBvcmRlciAobG93ZXIgbnVtYmVycyBleGVjdXRlIGZpcnN0KSAqL1xuICByZWFkb25seSBleGVjdXRpb25PcmRlcj86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gY29udGludWUgb24gZXJyb3IgKi9cbiAgcmVhZG9ubHkgY29udGludWVPbkVycm9yPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgRGF0YUxvYWRlciBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhTG9hZGVyUHJvcHMge1xuICAvKiogRGF0YWJhc2UgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBkYXRhYmFzZUNvbmZpZzogRGF0YWJhc2VDb25maWc7XG4gIC8qKiBMaXN0IG9mIGZpbGVzIHRvIGxvYWQgKi9cbiAgcmVhZG9ubHkgZmlsZUlucHV0czogRmlsZUlucHV0W107XG4gIC8qKiBPcHRpb25hbCByZW1vdmFsIHBvbGljeSBmb3IgcmVzb3VyY2VzIChkZWZhdWx0cyB0byBERVNUUk9ZKSAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbiAgLyoqIE9wdGlvbmFsIHRpbWVvdXQgZm9yIExhbWJkYSBmdW5jdGlvbiAoZGVmYXVsdHMgdG8gMTUgbWludXRlcykgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IER1cmF0aW9uO1xuICAvKiogT3B0aW9uYWwgbWVtb3J5IHNpemUgZm9yIExhbWJkYSBmdW5jdGlvbiAoZGVmYXVsdHMgdG8gMTAyNCBNQikgKi9cbiAgcmVhZG9ubHkgbWVtb3J5U2l6ZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEYXRhTG9hZGVyIGNvbnN0cnVjdCBmb3IgbG9hZGluZyBkYXRhIGludG8gQXVyb3JhL1JEUyBkYXRhYmFzZXNcbiAqXG4gKiBUaGlzIGNvbnN0cnVjdCBwcm92aWRlcyBhIHNpbXBsaWZpZWQgc29sdXRpb24gZm9yIGxvYWRpbmcgZGF0YSBmcm9tIHZhcmlvdXMgZmlsZSBmb3JtYXRzXG4gKiAoU1FMLCBteXNxbGR1bXAsIHBnX2R1bXApIGludG8gTXlTUUwgb3IgUG9zdGdyZVNRTCBkYXRhYmFzZXMuIEl0IHVzZXMgUzMgZm9yIGZpbGUgc3RvcmFnZSxcbiAqIFN0ZXAgRnVuY3Rpb25zIGZvciBvcmNoZXN0cmF0aW9uLCBhbmQgTGFtYmRhIGZvciBwcm9jZXNzaW5nLlxuICpcbiAqIEFyY2hpdGVjdHVyZTpcbiAqIDEuIEZpbGVzIGFyZSB1cGxvYWRlZCB0byBTMyBidWNrZXRcbiAqIDIuIFN0ZXAgRnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHdpdGggbGlzdCBvZiBTMyBrZXlzXG4gKiAzLiBTdGVwIEZ1bmN0aW9uIGl0ZXJhdGVzIG92ZXIgZmlsZXMgaW4gZXhlY3V0aW9uIG9yZGVyXG4gKiA0LiBMYW1iZGEgZnVuY3Rpb24gcHJvY2Vzc2VzIGVhY2ggZmlsZSBhZ2FpbnN0IHRoZSBkYXRhYmFzZVxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiBDcmVhdGUgYSBEYXRhTG9hZGVyIHdpdGggZGF0YWJhc2UgY29uZmlndXJhdGlvbiBhbmQgZmlsZSBpbnB1dHMuXG4gKiBUaGUgY29uc3RydWN0IHdpbGwgaGFuZGxlIHVwbG9hZGluZyBmaWxlcyB0byBTMywgY3JlYXRpbmcgYSBTdGVwIEZ1bmN0aW9uXG4gKiB0byBvcmNoZXN0cmF0ZSBwcm9jZXNzaW5nLCBhbmQgZXhlY3V0aW5nIHRoZSBkYXRhIGxvYWRpbmcgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhTG9hZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqIFRoZSBTMyBidWNrZXQgdXNlZCBmb3Igc3RvcmluZyBmaWxlcyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVja2V0OiBCdWNrZXQ7XG4gIC8qKiBUaGUgU3RlcCBGdW5jdGlvbnMgc3RhdGUgbWFjaGluZSBmb3Igb3JjaGVzdHJhdGlvbiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmU7XG4gIC8qKiBUaGUgTGFtYmRhIGZ1bmN0aW9uIHRoYXQgcHJvY2Vzc2VzIHRoZSBkYXRhIGxvYWRpbmcgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NvckZ1bmN0aW9uOiBMYW1iZGFGdW5jdGlvbjtcbiAgLyoqIFRoZSBidWNrZXQgZGVwbG95bWVudCBmb3IgdXBsb2FkaW5nIGZpbGVzICovXG4gIHB1YmxpYyBidWNrZXREZXBsb3ltZW50PzogQnVja2V0RGVwbG95bWVudDtcbiAgLyoqIFRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXIgZm9yIHRyaWdnZXJpbmcgc3RhdGUgbWFjaGluZSBleGVjdXRpb24gKi9cbiAgcHVibGljIHJlYWRvbmx5IGN1c3RvbVJlc291cmNlUHJvdmlkZXI6IFByb3ZpZGVyO1xuICAvKiogVGhlIGN1c3RvbSByZXNvdXJjZSB0aGF0IHRyaWdnZXJzIHRoZSBzdGF0ZSBtYWNoaW5lICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25UcmlnZ2VyOiBDdXN0b21SZXNvdXJjZTtcbiAgLyoqIFRoZSBmaWxlIGlucHV0cyBjb25maWd1cmF0aW9uICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZUlucHV0czogRmlsZUlucHV0W107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFMb2FkZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBTdG9yZSBmaWxlIGlucHV0cyBmb3IgbGF0ZXIgdXNlXG4gICAgdGhpcy5maWxlSW5wdXRzID0gcHJvcHMuZmlsZUlucHV0cztcblxuICAgIC8vIFZhbGlkYXRlIHByb3BzXG4gICAgdGhpcy5fdmFsaWRhdGVQcm9wcyhwcm9wcyk7XG5cbiAgICAvLyBHZXQgcmVtb3ZhbCBwb2xpY3kgd2l0aCBkZWZhdWx0XG4gICAgY29uc3QgcmVtb3ZhbFBvbGljeSA9IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZO1xuXG4gICAgLy8gQ3JlYXRlIFMzIGJ1Y2tldCBmb3Igc3RvcmluZyBmaWxlc1xuICAgIHRoaXMuYnVja2V0ID0gdGhpcy5fY3JlYXRlQnVja2V0KHJlbW92YWxQb2xpY3kpO1xuXG4gICAgLy8gQ3JlYXRlIExhbWJkYSBmdW5jdGlvbiBmb3IgcHJvY2Vzc2luZ1xuICAgIHRoaXMucHJvY2Vzc29yRnVuY3Rpb24gPSB0aGlzLl9jcmVhdGVQcm9jZXNzb3JGdW5jdGlvbihwcm9wcyk7XG5cbiAgICAvLyBDcmVhdGUgU3RlcCBGdW5jdGlvbnMgc3RhdGUgbWFjaGluZVxuICAgIHRoaXMuc3RhdGVNYWNoaW5lID0gdGhpcy5fY3JlYXRlU3RhdGVNYWNoaW5lKCk7XG5cbiAgICAvLyBDcmVhdGUgY3VzdG9tIHJlc291cmNlIHByb3ZpZGVyIGZvciB0cmlnZ2VyaW5nIGV4ZWN1dGlvblxuICAgIHRoaXMuY3VzdG9tUmVzb3VyY2VQcm92aWRlciA9IHRoaXMuX2NyZWF0ZUN1c3RvbVJlc291cmNlUHJvdmlkZXIoKTtcblxuICAgIC8vIFVwbG9hZCBmaWxlcyB0byBTM1xuICAgIHRoaXMuX3NldHVwRmlsZVByb2Nlc3NpbmcocHJvcHMpO1xuXG4gICAgLy8gQ3JlYXRlIGN1c3RvbSByZXNvdXJjZSB0byB0cmlnZ2VyIGV4ZWN1dGlvbiBhZnRlciBmaWxlcyBhcmUgdXBsb2FkZWRcbiAgICB0aGlzLmV4ZWN1dGlvblRyaWdnZXIgPSB0aGlzLl9jcmVhdGVFeGVjdXRpb25UcmlnZ2VyKCk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIGFkZGl0aW9uYWwgSUFNIHBlcm1pc3Npb25zIHRvIHRoZSBleGVjdXRpb24gdHJpZ2dlciBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHBhcmFtIHN0YXRlbWVudCBUaGUgSUFNIHBvbGljeSBzdGF0ZW1lbnQgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRFeGVjdXRpb25UcmlnZ2VyUGVybWlzc2lvbnMoc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICAvLyBHZXQgdGhlIExhbWJkYSBmdW5jdGlvbiBmcm9tIHRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXJcbiAgICBjb25zdCB0cmlnZ2VyRnVuY3Rpb24gPSB0aGlzLmN1c3RvbVJlc291cmNlUHJvdmlkZXIub25FdmVudEhhbmRsZXI7XG4gICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xuICAgICAgdHJpZ2dlckZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShzdGF0ZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGNvbnN0cnVjdCBwcm9wZXJ0aWVzXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgRGF0YUxvYWRlciBwcm9wZXJ0aWVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZVByb3BzKHByb3BzOiBEYXRhTG9hZGVyUHJvcHMpOiB2b2lkIHtcbiAgICBpZiAoIXByb3BzLmRhdGFiYXNlQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGFiYXNlQ29uZmlnIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5kYXRhYmFzZUNvbmZpZy5jbHVzdGVyICYmICFwcm9wcy5kYXRhYmFzZUNvbmZpZy5pbnN0YW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgY2x1c3RlciBvciBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGluIGRhdGFiYXNlQ29uZmlnJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5maWxlSW5wdXRzIHx8IHByb3BzLmZpbGVJbnB1dHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBmaWxlIGlucHV0IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZmlsZSBpbnB1dHNcbiAgICBmb3IgKGNvbnN0IGZpbGVJbnB1dCBvZiBwcm9wcy5maWxlSW5wdXRzKSB7XG4gICAgICBpZiAoIWZpbGVJbnB1dC5maWxlUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZpbGVQYXRoIGlzIHJlcXVpcmVkIGZvciBlYWNoIGZpbGUgaW5wdXQnKTtcbiAgICAgIH1cbiAgICAgIGlmICghZmlsZUlucHV0LmZpbGVUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZmlsZVR5cGUgaXMgcmVxdWlyZWQgZm9yIGVhY2ggZmlsZSBpbnB1dCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGVuZ2luZSBjb21wYXRpYmlsaXR5XG4gICAgZm9yIChjb25zdCBmaWxlSW5wdXQgb2YgcHJvcHMuZmlsZUlucHV0cykge1xuICAgICAgaWYgKHByb3BzLmRhdGFiYXNlQ29uZmlnLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuTVlTUUwgJiZcbiAgICAgICAgICBmaWxlSW5wdXQuZmlsZVR5cGUgPT09IEZpbGVUeXBlLlBHRFVNUCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bvc3RncmVTUUwgZHVtcCBmaWxlcyBjYW5ub3QgYmUgdXNlZCB3aXRoIE15U1FMIGRhdGFiYXNlcycpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRhdGFiYXNlQ29uZmlnLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuUE9TVEdSRVNRTCAmJlxuICAgICAgICAgIGZpbGVJbnB1dC5maWxlVHlwZSA9PT0gRmlsZVR5cGUuTVlTUUxEVU1QKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTXlTUUwgZHVtcCBmaWxlcyBjYW5ub3QgYmUgdXNlZCB3aXRoIFBvc3RncmVTUUwgZGF0YWJhc2VzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIFMzIGJ1Y2tldCBmb3Igc3RvcmluZyBmaWxlc1xuICAgKiBAcGFyYW0gcmVtb3ZhbFBvbGljeSBUaGUgcmVtb3ZhbCBwb2xpY3kgdG8gYXBwbHlcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgUzMgYnVja2V0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVCdWNrZXQocmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeSk6IEJ1Y2tldCB7XG4gICAgY29uc3QgYnVja2V0ID0gbmV3IEJ1Y2tldCh0aGlzLCAnRGF0YUxvYWRlckJ1Y2tldCcsIHtcbiAgICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICByZW1vdmFsUG9saWN5OiByZW1vdmFsUG9saWN5LFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcblxuICAgIHJldHVybiBidWNrZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgTGFtYmRhIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGRhdGEgbG9hZGluZ1xuICAgKiBAcGFyYW0gcHJvcHMgVGhlIERhdGFMb2FkZXIgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZVByb2Nlc3NvckZ1bmN0aW9uKHByb3BzOiBEYXRhTG9hZGVyUHJvcHMpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgLy8gQ3JlYXRlIGEgZGVkaWNhdGVkIHNlY3VyaXR5IGdyb3VwIGZvciB0aGUgTGFtYmRhIGZ1bmN0aW9uXG4gICAgY29uc3QgbGFtYmRhU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsICdEYXRhTG9hZGVyUHJvY2Vzc29yU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgIHZwYzogcHJvcHMuZGF0YWJhc2VDb25maWcudnBjLFxuICAgICAgZGVzY3JpcHRpb246ICdTZWN1cml0eSBncm91cCBmb3IgRGF0YUxvYWRlciBwcm9jZXNzb3IgTGFtYmRhIGZ1bmN0aW9uJyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsIC8vIExhbWJkYSBuZWVkcyBvdXRib3VuZCBhY2Nlc3MgZm9yIEFXUyBzZXJ2aWNlcyBhbmQgaW50ZXJuZXRcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IExhbWJkYSB0byBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZVxuICAgIC8vIEFkZCBpbmdyZXNzIHJ1bGUgdG8gZGF0YWJhc2Ugc2VjdXJpdHkgZ3JvdXAgdG8gYWxsb3cgY29ubmVjdGlvbnMgZnJvbSBMYW1iZGFcbiAgICBwcm9wcy5kYXRhYmFzZUNvbmZpZy5zZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgbGFtYmRhU2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHByb3BzLmRhdGFiYXNlQ29uZmlnLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuTVlTUUwgPyAzMzA2IDogNTQzMiksXG4gICAgICBgQWxsb3cgRGF0YUxvYWRlciBMYW1iZGEgdG8gY29ubmVjdCB0byAke3Byb3BzLmRhdGFiYXNlQ29uZmlnLmVuZ2luZX0gZGF0YWJhc2VgLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgTGFtYmRhIGZ1bmN0aW9uIHdpdGggYXV0b21hdGljIGRlcGVuZGVuY3kgYnVuZGxpbmdcbiAgICBjb25zdCBsYW1iZGFGdW5jdGlvbiA9IG5ldyBQeXRob25GdW5jdGlvbih0aGlzLCAnRGF0YUxvYWRlclByb2Nlc3NvcicsIHtcbiAgICAgIGVudHJ5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnZGF0YS1sb2FkZXItbGFtYmRhJyksXG4gICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzEzLFxuICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgaW5kZXg6ICdpbmRleC5weScsXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0IHx8IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgbWVtb3J5U2l6ZTogcHJvcHMubWVtb3J5U2l6ZSB8fCAxMDI0LFxuICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgdnBjOiBwcm9wcy5kYXRhYmFzZUNvbmZpZy52cGMsXG4gICAgICBzZWN1cml0eUdyb3VwczogW2xhbWJkYVNlY3VyaXR5R3JvdXBdLCAvLyBVc2UgdGhlIGRlZGljYXRlZCBMYW1iZGEgc2VjdXJpdHkgZ3JvdXBcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIERBVEFCQVNFX0VOR0lORTogcHJvcHMuZGF0YWJhc2VDb25maWcuZW5naW5lLFxuICAgICAgICBEQVRBQkFTRV9TRUNSRVRfQVJOOiBwcm9wcy5kYXRhYmFzZUNvbmZpZy5zZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBEQVRBQkFTRV9OQU1FOiBwcm9wcy5kYXRhYmFzZUNvbmZpZy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIFMzX0JVQ0tFVDogdGhpcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIH0sXG4gICAgICBidW5kbGluZzoge1xuICAgICAgICAvLyBVc2UgY3VzdG9tIGJ1bmRsaW5nIGNvbW1hbmRzIHRvIGF2b2lkIFBvZXRyeSBjb25mbGljdHNcbiAgICAgICAgY29tbWFuZDogW1xuICAgICAgICAgICdiYXNoJywgJy1jJywgW1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgY2xlYW4gdmlydHVhbCBlbnZpcm9ubWVudFxuICAgICAgICAgICAgJ3B5dGhvbiAtbSB2ZW52IC90bXAvdmVudicsXG4gICAgICAgICAgICAvLyBBY3RpdmF0ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudFxuICAgICAgICAgICAgJ3NvdXJjZSAvdG1wL3ZlbnYvYmluL2FjdGl2YXRlJyxcbiAgICAgICAgICAgIC8vIEluc3RhbGwgZGVwZW5kZW5jaWVzIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50XG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcCcsXG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dCAtdCAvYXNzZXQtb3V0cHV0JyxcbiAgICAgICAgICAgIC8vIENvcHkgc291cmNlIGZpbGVzXG4gICAgICAgICAgICAnY3AgLXIgLiAvYXNzZXQtb3V0cHV0JyxcbiAgICAgICAgICAgIC8vIENsZWFuIHVwIF9fcHljYWNoZV9fIGFuZCBvdGhlciB1bm5lY2Vzc2FyeSBmaWxlc1xuICAgICAgICAgICAgJ2ZpbmQgL2Fzc2V0LW91dHB1dCAtdHlwZSBkIC1uYW1lIF9fcHljYWNoZV9fIC1leGVjIHJtIC1yZiB7fSArIHx8IHRydWUnLFxuICAgICAgICAgICAgJ2ZpbmQgL2Fzc2V0LW91dHB1dCAtbmFtZSBcIioucHljXCIgLWRlbGV0ZSB8fCB0cnVlJyxcbiAgICAgICAgICBdLmpvaW4oJyAmJiAnKSxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gVXNlIHRoZSBzdGFuZGFyZCBQeXRob24gaW1hZ2UgdG8gYXZvaWQgcHJlLWluc3RhbGxlZCBwYWNrYWdlc1xuICAgICAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KERlZmF1bHRSdW50aW1lcy5QWVRIT05fQlVORExJTkdfSU1BR0UpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEdyYW50IHBlcm1pc3Npb25zXG4gICAgdGhpcy5fZ3JhbnRQZXJtaXNzaW9ucyhsYW1iZGFGdW5jdGlvbiwgcHJvcHMpO1xuXG4gICAgcmV0dXJuIGxhbWJkYUZ1bmN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIFN0ZXAgRnVuY3Rpb25zIHN0YXRlIG1hY2hpbmVcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgc3RhdGUgbWFjaGluZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlU3RhdGVNYWNoaW5lKCk6IFN0YXRlTWFjaGluZSB7XG4gICAgLy8gQ3JlYXRlIGEgTWFwIHN0YXRlIHRvIGl0ZXJhdGUgb3ZlciBmaWxlIGtleXNcbiAgICBjb25zdCBwcm9jZXNzRmlsZVRhc2sgPSBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdQcm9jZXNzRmlsZVRhc2snLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5wcm9jZXNzb3JGdW5jdGlvbixcbiAgICAgIHBheWxvYWQ6IFRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgJ3MzS2V5LiQnOiAnJCcsXG4gICAgICAgICdidWNrZXROYW1lJzogdGhpcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBzdGF0ZSBtYWNoaW5lIGRlZmluaXRpb25cbiAgICBjb25zdCBkZWZpbml0aW9uID0gbmV3IE1hcCh0aGlzLCAnUHJvY2Vzc0ZpbGVzTWFwJywge1xuICAgICAgaXRlbXNQYXRoOiAnJC5maWxlS2V5cycsXG4gICAgICBtYXhDb25jdXJyZW5jeTogMSwgLy8gUHJvY2VzcyBmaWxlcyBzZXF1ZW50aWFsbHkgdG8gbWFpbnRhaW4gb3JkZXJcbiAgICB9KS5pdGVtUHJvY2Vzc29yKHByb2Nlc3NGaWxlVGFzayk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHN0YXRlIG1hY2hpbmVcbiAgICBjb25zdCBzdGF0ZU1hY2hpbmUgPSBuZXcgU3RhdGVNYWNoaW5lKHRoaXMsICdEYXRhTG9hZGVyU3RhdGVNYWNoaW5lJywge1xuICAgICAgZGVmaW5pdGlvbkJvZHk6IERlZmluaXRpb25Cb2R5LmZyb21DaGFpbmFibGUoZGVmaW5pdGlvbiksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5ob3VycygyKSwgLy8gQWxsb3cgdXAgdG8gMiBob3VycyBmb3IgdGhlIGVudGlyZSBwcm9jZXNzXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCB0aGUgc3RhdGUgbWFjaGluZSBwZXJtaXNzaW9uIHRvIGludm9rZSB0aGUgTGFtYmRhIGZ1bmN0aW9uXG4gICAgdGhpcy5wcm9jZXNzb3JGdW5jdGlvbi5ncmFudEludm9rZShzdGF0ZU1hY2hpbmUpO1xuXG4gICAgcmV0dXJuIHN0YXRlTWFjaGluZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIHRoZSBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHBhcmFtIGxhbWJkYUZ1bmN0aW9uIFRoZSBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHBhcmFtIHByb3BzIFRoZSBEYXRhTG9hZGVyIHByb3BlcnRpZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dyYW50UGVybWlzc2lvbnMobGFtYmRhRnVuY3Rpb246IExhbWJkYUZ1bmN0aW9uLCBwcm9wczogRGF0YUxvYWRlclByb3BzKTogdm9pZCB7XG4gICAgLy8gR3JhbnQgUzMgcGVybWlzc2lvbnNcbiAgICB0aGlzLmJ1Y2tldC5ncmFudFJlYWQobGFtYmRhRnVuY3Rpb24pO1xuXG4gICAgLy8gR3JhbnQgU2VjcmV0cyBNYW5hZ2VyIHBlcm1pc3Npb25zXG4gICAgcHJvcHMuZGF0YWJhc2VDb25maWcuc2VjcmV0LmdyYW50UmVhZChsYW1iZGFGdW5jdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBmaWxlIHByb2Nlc3NpbmcgYnkgdXBsb2FkaW5nIGZpbGVzIHRvIFMzXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgRGF0YUxvYWRlciBwcm9wZXJ0aWVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9zZXR1cEZpbGVQcm9jZXNzaW5nKHByb3BzOiBEYXRhTG9hZGVyUHJvcHMpOiB2b2lkIHtcbiAgICAvLyBTZXBhcmF0ZSBsb2NhbCBmaWxlcyBmcm9tIFMzIFVSSXNcbiAgICBjb25zdCBsb2NhbEZpbGVzID0gcHJvcHMuZmlsZUlucHV0cy5maWx0ZXIoZiA9PiAhZi5maWxlUGF0aC5zdGFydHNXaXRoKCdzMzovLycpKTtcblxuICAgIC8vIFVwbG9hZCBsb2NhbCBmaWxlcyB0byBTMyBpZiBhbnlcbiAgICBpZiAobG9jYWxGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBQcm9jZXNzIGVhY2ggZmlsZSBpbmRpdmlkdWFsbHkgdG8gaGFuZGxlIGJvdGggZmlsZXMgYW5kIGRpcmVjdG9yaWVzXG4gICAgICBsb2NhbEZpbGVzLmZvckVhY2goKGZpbGVJbnB1dCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBmaWxlSW5wdXQuZmlsZVBhdGg7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICAgIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgY29uc3QgcGF0aE1vZHVsZSA9IHJlcXVpcmUoJ3BhdGgnKTtcblxuICAgICAgICBsZXQgcmVzb2x2ZWRQYXRoOiBzdHJpbmc7XG4gICAgICAgIGlmIChwYXRoTW9kdWxlLmlzQWJzb2x1dGUoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgcmVzb2x2ZWRQYXRoID0gZmlsZVBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVzb2x2ZSByZWxhdGl2ZSBwYXRocyBmcm9tIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gICAgICAgICAgcmVzb2x2ZWRQYXRoID0gcGF0aE1vZHVsZS5yZXNvbHZlKGZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBwYXRoIGV4aXN0c1xuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocmVzb2x2ZWRQYXRoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cmVzb2x2ZWRQYXRofWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZzLnN0YXRTeW5jKHJlc29sdmVkUGF0aCkuaXNGaWxlKCkpIHtcbiAgICAgICAgICAvLyBGb3IgaW5kaXZpZHVhbCBmaWxlcywgZGVwbG95IGZyb20gcGFyZW50IGRpcmVjdG9yeSB3aXRoIGluY2x1ZGUgZmlsdGVyXG4gICAgICAgICAgY29uc3QgcGFyZW50RGlyID0gcGF0aE1vZHVsZS5kaXJuYW1lKHJlc29sdmVkUGF0aCk7XG4gICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoTW9kdWxlLmJhc2VuYW1lKHJlc29sdmVkUGF0aCk7XG5cbiAgICAgICAgICBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBgRGF0YUxvYWRlckZpbGVEZXBsb3ltZW50JHtpbmRleH1gLCB7XG4gICAgICAgICAgICBzb3VyY2VzOiBbU291cmNlLmFzc2V0KHBhcmVudERpcildLFxuICAgICAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHRoaXMuYnVja2V0LFxuICAgICAgICAgICAgZGVzdGluYXRpb25LZXlQcmVmaXg6ICdkYXRhLWZpbGVzLycsXG4gICAgICAgICAgICBpbmNsdWRlOiBbZmlsZU5hbWVdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZvciBkaXJlY3RvcmllcywgZGVwbG95IGVudGlyZSBkaXJlY3RvcnlcbiAgICAgICAgICBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBgRGF0YUxvYWRlckZpbGVEZXBsb3ltZW50JHtpbmRleH1gLCB7XG4gICAgICAgICAgICBzb3VyY2VzOiBbU291cmNlLmFzc2V0KHJlc29sdmVkUGF0aCldLFxuICAgICAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHRoaXMuYnVja2V0LFxuICAgICAgICAgICAgZGVzdGluYXRpb25LZXlQcmVmaXg6ICdkYXRhLWZpbGVzLycsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY3VzdG9tIHJlc291cmNlIHByb3ZpZGVyIGZvciB0cmlnZ2VyaW5nIHN0YXRlIG1hY2hpbmUgZXhlY3V0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXJcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUN1c3RvbVJlc291cmNlUHJvdmlkZXIoKTogUHJvdmlkZXIge1xuICAgIC8vIENyZWF0ZSBJQU0gcm9sZSBmb3IgdGhlIGN1c3RvbSByZXNvdXJjZSBMYW1iZGEgZnVuY3Rpb24gd2l0aCBhbGwgbmVjZXNzYXJ5IHBvbGljaWVzXG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2VSb2xlID0gbmV3IFJvbGUodGhpcywgJ1N0YXRlTWFjaGluZUV4ZWN1dGlvblRyaWdnZXJSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSUFNIHJvbGUgZm9yIERhdGFMb2FkZXIgY3VzdG9tIHJlc291cmNlIExhbWJkYSBmdW5jdGlvbicsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUnKSxcbiAgICAgIF0sXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBTdGF0ZU1hY2hpbmVFeGVjdXRpb25Qb2xpY3k6IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3N0YXRlczpTdGFydEV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgJ3N0YXRlczpEZXNjcmliZUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgJ3N0YXRlczpTdG9wRXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgICAgICAgICAgIGAke3RoaXMuc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybn06KmAsIC8vIEZvciBleGVjdXRpb24gQVJOc1xuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIExhbWJkYSBmdW5jdGlvbiBmb3IgY3VzdG9tIHJlc291cmNlIHdpdGggdGhlIHByZS1jb25maWd1cmVkIHJvbGVcbiAgICBjb25zdCBjdXN0b21SZXNvdXJjZUZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdTdGF0ZU1hY2hpbmVFeGVjdXRpb25UcmlnZ2VyJywge1xuICAgICAgcnVudGltZTogUnVudGltZS5QWVRIT05fM18xMSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIHJvbGU6IGN1c3RvbVJlc291cmNlUm9sZSwgLy8gQXR0YWNoIHRoZSByb2xlIGR1cmluZyBjcmVhdGlvblxuICAgICAgY29kZTogQ29kZS5mcm9tSW5saW5lKGBcbmltcG9ydCBqc29uXG5pbXBvcnQgYm90bzNcbmltcG9ydCBsb2dnaW5nXG5cbmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKClcbmxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pXG5cbnN0ZXBmdW5jdGlvbnMgPSBib3RvMy5jbGllbnQoJ3N0ZXBmdW5jdGlvbnMnKVxuXG5kZWYgaGFuZGxlcihldmVudCwgY29udGV4dCk6XG4gICAgbG9nZ2VyLmluZm8oZlwiUmVjZWl2ZWQgZXZlbnQ6IHtqc29uLmR1bXBzKGV2ZW50KX1cIilcbiAgICBcbiAgICByZXF1ZXN0X3R5cGUgPSBldmVudFsnUmVxdWVzdFR5cGUnXVxuICAgIFxuICAgIGlmIHJlcXVlc3RfdHlwZSA9PSAnQ3JlYXRlJyBvciByZXF1ZXN0X3R5cGUgPT0gJ1VwZGF0ZSc6XG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgICMgR2V0IHBhcmFtZXRlcnMgZnJvbSBldmVudFxuICAgICAgICAgICAgc3RhdGVfbWFjaGluZV9hcm4gPSBldmVudFsnUmVzb3VyY2VQcm9wZXJ0aWVzJ11bJ1N0YXRlTWFjaGluZUFybiddXG4gICAgICAgICAgICBmaWxlX2tleXMgPSBldmVudFsnUmVzb3VyY2VQcm9wZXJ0aWVzJ11bJ0ZpbGVLZXlzJ11cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgIyBTdGFydCBleGVjdXRpb25cbiAgICAgICAgICAgIHJlc3BvbnNlID0gc3RlcGZ1bmN0aW9ucy5zdGFydF9leGVjdXRpb24oXG4gICAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lQXJuPXN0YXRlX21hY2hpbmVfYXJuLFxuICAgICAgICAgICAgICAgIGlucHV0PWpzb24uZHVtcHMoe1xuICAgICAgICAgICAgICAgICAgICAnZmlsZUtleXMnOiBmaWxlX2tleXNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBleGVjdXRpb25fYXJuID0gcmVzcG9uc2VbJ2V4ZWN1dGlvbkFybiddXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhmXCJTdGFydGVkIGV4ZWN1dGlvbjoge2V4ZWN1dGlvbl9hcm59XCIpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ1N0YXR1cyc6ICdTVUNDRVNTJyxcbiAgICAgICAgICAgICAgICAnUGh5c2ljYWxSZXNvdXJjZUlkJzogZXhlY3V0aW9uX2FybixcbiAgICAgICAgICAgICAgICAnRGF0YSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0V4ZWN1dGlvbkFybic6IGV4ZWN1dGlvbl9hcm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOlxuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGZcIkVycm9yIHN0YXJ0aW5nIGV4ZWN1dGlvbjoge3N0cihlKX1cIilcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ1N0YXR1cyc6ICdGQUlMRUQnLFxuICAgICAgICAgICAgICAgICdSZWFzb24nOiBzdHIoZSksXG4gICAgICAgICAgICAgICAgJ1BoeXNpY2FsUmVzb3VyY2VJZCc6ICdmYWlsZWQnXG4gICAgICAgICAgICB9XG4gICAgXG4gICAgZWxpZiByZXF1ZXN0X3R5cGUgPT0gJ0RlbGV0ZSc6XG4gICAgICAgICMgRm9yIGRlbGV0ZSwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnU3RhdHVzJzogJ1NVQ0NFU1MnLFxuICAgICAgICAgICAgJ1BoeXNpY2FsUmVzb3VyY2VJZCc6IGV2ZW50LmdldCgnUGh5c2ljYWxSZXNvdXJjZUlkJywgJ25vbmUnKVxuICAgICAgICB9XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ1N0YXR1cyc6ICdTVUNDRVNTJyxcbiAgICAgICAgJ1BoeXNpY2FsUmVzb3VyY2VJZCc6ICdub25lJ1xuICAgIH1cbiAgICAgIGApLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBwcm92aWRlciB3aXRoIHRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBhbHJlYWR5IGhhcyB0aGUgY29ycmVjdCByb2xlXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIodGhpcywgJ1N0YXRlTWFjaGluZUV4ZWN1dGlvblByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IGN1c3RvbVJlc291cmNlRnVuY3Rpb24sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvdmlkZXI7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGN1c3RvbSByZXNvdXJjZSB0byB0cmlnZ2VyIHN0YXRlIG1hY2hpbmUgZXhlY3V0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUV4ZWN1dGlvblRyaWdnZXIoKTogQ3VzdG9tUmVzb3VyY2Uge1xuICAgIC8vIEdldCBvcmRlcmVkIGZpbGUga2V5c1xuICAgIGNvbnN0IG9yZGVyZWRGaWxlS2V5cyA9IHRoaXMuX2dldE9yZGVyZWRGaWxlS2V5cygpO1xuXG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0V4ZWN1dGlvblRyaWdnZXJSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5jdXN0b21SZXNvdXJjZVByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgU3RhdGVNYWNoaW5lQXJuOiB0aGlzLnN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4sXG4gICAgICAgIEZpbGVLZXlzOiBvcmRlcmVkRmlsZUtleXMsXG4gICAgICAgIC8vIEFkZCBhIHRpbWVzdGFtcCB0byBmb3JjZSB1cGRhdGVzIHdoZW4gbmVlZGVkXG4gICAgICAgIFRpbWVzdGFtcDogRGF0ZS5ub3coKS50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEVuc3VyZSB0aGUgY3VzdG9tIHJlc291cmNlIHJ1bnMgYWZ0ZXIgYnVja2V0IGRlcGxveW1lbnQgKGlmIGV4aXN0cylcbiAgICBpZiAodGhpcy5idWNrZXREZXBsb3ltZW50KSB7XG4gICAgICBjdXN0b21SZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5zdGF0ZU1hY2hpbmUpO1xuICAgICAgY3VzdG9tUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMuYnVja2V0RGVwbG95bWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1c3RvbVJlc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG9yZGVyZWQgZmlsZSBrZXlzIGZvciBleGVjdXRpb25cbiAgICogQHJldHVybnMgQXJyYXkgb2YgUzMga2V5cyBpbiBleGVjdXRpb24gb3JkZXJcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldE9yZGVyZWRGaWxlS2V5cygpOiBzdHJpbmdbXSB7XG4gICAgLy8gU29ydCBmaWxlcyBieSBleGVjdXRpb24gb3JkZXJcbiAgICBjb25zdCBzb3J0ZWRGaWxlcyA9IFsuLi50aGlzLmZpbGVJbnB1dHNdLnNvcnQoXG4gICAgICAoYSwgYikgPT4gKGEuZXhlY3V0aW9uT3JkZXIgfHwgMCkgLSAoYi5leGVjdXRpb25PcmRlciB8fCAwKSxcbiAgICApO1xuXG4gICAgLy8gQ29udmVydCBmaWxlIHBhdGhzIHRvIFMzIGtleXNcbiAgICByZXR1cm4gc29ydGVkRmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgaWYgKGZpbGUuZmlsZVBhdGguc3RhcnRzV2l0aCgnczM6Ly8nKSkge1xuICAgICAgICAvLyBFeHRyYWN0IGtleSBmcm9tIFMzIFVSSVxuICAgICAgICBjb25zdCBwYXJ0cyA9IGZpbGUuZmlsZVBhdGgucmVwbGFjZSgnczM6Ly8nLCAnJykuc3BsaXQoJy8nKTtcbiAgICAgICAgcmV0dXJuIHBhcnRzLnNsaWNlKDEpLmpvaW4oJy8nKTsgLy8gUmVtb3ZlIGJ1Y2tldCBuYW1lXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMb2NhbCBmaWxlcyBhcmUgdXBsb2FkZWQgd2l0aCBkYXRhLWZpbGVzLyBwcmVmaXhcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGUuZmlsZVBhdGgpO1xuICAgICAgICByZXR1cm4gYGRhdGEtZmlsZXMvJHtmaWxlTmFtZX1gO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
493
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi91c2UtY2FzZXMvdXRpbGl0aWVzL2RhdGEtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBRXRDLDJDQUE2QjtBQUM3Qiw4RUFBa0U7QUFDbEUsNkNBQW1GO0FBQ25GLGlEQUFnRjtBQUNoRixpREFBcUg7QUFDckgsdURBQWlHO0FBRWpHLCtDQUFpRjtBQUNqRixxRUFBeUU7QUFFekUscUVBQTZGO0FBQzdGLGlGQUFtRTtBQUNuRSxtRUFBd0Q7QUFDeEQsMkNBQXVDO0FBQ3ZDLG9GQUFnRjtBQUVoRjs7R0FFRztBQUNILElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4QixpQ0FBZSxDQUFBO0lBQ2YsMkNBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUhXLGNBQWMsOEJBQWQsY0FBYyxRQUd6QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxRQU9YO0FBUEQsV0FBWSxRQUFRO0lBQ2xCLHdCQUF3QjtJQUN4Qix1QkFBVyxDQUFBO0lBQ1gsNkNBQTZDO0lBQzdDLG1DQUF1QixDQUFBO0lBQ3ZCLGdEQUFnRDtJQUNoRCw2QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBUFcsUUFBUSx3QkFBUixRQUFRLFFBT25CO0FBb0REOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQWEsVUFBVyxTQUFRLHNCQUFTOztJQUN2QywyQ0FBMkM7SUFDM0IsTUFBTSxDQUFTO0lBQy9CLHlEQUF5RDtJQUN6QyxZQUFZLENBQWU7SUFDM0MsMERBQTBEO0lBQzFDLGlCQUFpQixDQUFpQjtJQUNsRCxnREFBZ0Q7SUFDekMsZ0JBQWdCLENBQW9CO0lBQzNDLDBFQUEwRTtJQUMxRCxzQkFBc0IsQ0FBVztJQUNqRCwwREFBMEQ7SUFDMUMsZ0JBQWdCLENBQWlCO0lBQ2pELG9DQUFvQztJ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QUksQ0FBQyxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsMEJBQTBCO2dCQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1RCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCO1lBQ3hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixtREFBbUQ7Z0JBQ25ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLGNBQWMsUUFBUSxFQUFFLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEvYkgsZ0NBZ2NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUHl0aG9uRnVuY3Rpb24gfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgQ3VzdG9tUmVzb3VyY2UsIERvY2tlckltYWdlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSVZwYywgU2VjdXJpdHlHcm91cCwgUG9ydCwgSVNlY3VyaXR5R3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgUm9sZSwgU2VydmljZVByaW5jaXBhbCwgTWFuYWdlZFBvbGljeSwgUG9saWN5RG9jdW1lbnQsIEVmZmVjdCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlLCBDb2RlLCBGdW5jdGlvbiBhcyBMYW1iZGFGdW5jdGlvbiwgUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgSURhdGFiYXNlQ2x1c3RlciwgSURhdGFiYXNlSW5zdGFuY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB7IEJ1Y2tldCwgQnVja2V0RW5jcnlwdGlvbiwgQmxvY2tQdWJsaWNBY2Nlc3MgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQnVja2V0RGVwbG95bWVudCwgU291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnQnO1xuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmUsIERlZmluaXRpb25Cb2R5LCBNYXAsIFRhc2tJbnB1dCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCB7IExhbWJkYUludm9rZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zLXRhc2tzJztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERlZmF1bHRSdW50aW1lcyB9IGZyb20gJy4uL2ZyYW1ld29yay9jdXN0b20tcmVzb3VyY2UvZGVmYXVsdC1ydW50aW1lcyc7XG5cbi8qKlxuICogU3VwcG9ydGVkIGRhdGFiYXNlIGVuZ2luZXNcbiAqL1xuZXhwb3J0IGVudW0gRGF0YWJhc2VFbmdpbmUge1xuICBNWVNRTCA9ICdteXNxbCcsXG4gIFBPU1RHUkVTUUwgPSAncG9zdGdyZXNxbCcsXG59XG5cbi8qKlxuICogU3VwcG9ydGVkIGZpbGUgdHlwZXMgZm9yIGRhdGEgbG9hZGluZ1xuICovXG5leHBvcnQgZW51bSBGaWxlVHlwZSB7XG4gIC8qKiBTdGFuZGFyZCBTUUwgZmlsZSAqL1xuICBTUUwgPSAnc3FsJyxcbiAgLyoqIE15U1FMIGR1bXAgZmlsZSBnZW5lcmF0ZWQgYnkgbXlzcWxkdW1wICovXG4gIE1ZU1FMRFVNUCA9ICdteXNxbGR1bXAnLFxuICAvKiogUG9zdGdyZVNRTCBkdW1wIGZpbGUgZ2VuZXJhdGVkIGJ5IHBnX2R1bXAgKi9cbiAgUEdEVU1QID0gJ3BnZHVtcCcsXG59XG5cbi8qKlxuICogRGF0YWJhc2UgY29ubmVjdGlvbiBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VDb25maWcge1xuICAvKiogRGF0YWJhc2UgZW5naW5lIHR5cGUgKi9cbiAgcmVhZG9ubHkgZW5naW5lOiBEYXRhYmFzZUVuZ2luZTtcbiAgLyoqIERhdGFiYXNlIGNsdXN0ZXIgKGZvciBBdXJvcmEpICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBJRGF0YWJhc2VDbHVzdGVyO1xuICAvKiogRGF0YWJhc2UgaW5zdGFuY2UgKGZvciBSRFMpICovXG4gIHJlYWRvbmx5IGluc3RhbmNlPzogSURhdGFiYXNlSW5zdGFuY2U7XG4gIC8qKiBEYXRhYmFzZSBjcmVkZW50aWFscyBzZWNyZXQgKi9cbiAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuICAvKiogRGF0YWJhc2UgbmFtZSB0byBjb25uZWN0IHRvICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICAvKiogVlBDIHdoZXJlIHRoZSBkYXRhYmFzZSBpcyBsb2NhdGVkICovXG4gIHJlYWRvbmx5IHZwYzogSVZwYztcbiAgLyoqIFNlY3VyaXR5IGdyb3VwIGZvciBkYXRhYmFzZSBhY2Nlc3MgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXA7XG59XG5cbi8qKlxuICogRmlsZSBpbnB1dCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUlucHV0IHtcbiAgLyoqIFBhdGggdG8gdGhlIGZpbGUgKGxvY2FsIHBhdGggb3IgUzMgVVJJKSAqL1xuICByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuICAvKiogVHlwZSBvZiBmaWxlICovXG4gIHJlYWRvbmx5IGZpbGVUeXBlOiBGaWxlVHlwZTtcbiAgLyoqIEV4ZWN1dGlvbiBvcmRlciAobG93ZXIgbnVtYmVycyBleGVjdXRlIGZpcnN0KSAqL1xuICByZWFkb25seSBleGVjdXRpb25PcmRlcj86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gY29udGludWUgb24gZXJyb3IgKi9cbiAgcmVhZG9ubHkgY29udGludWVPbkVycm9yPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgRGF0YUxvYWRlciBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhTG9hZGVyUHJvcHMge1xuICAvKiogRGF0YWJhc2UgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBkYXRhYmFzZUNvbmZpZzogRGF0YWJhc2VDb25maWc7XG4gIC8qKiBMaXN0IG9mIGZpbGVzIHRvIGxvYWQgKi9cbiAgcmVhZG9ubHkgZmlsZUlucHV0czogRmlsZUlucHV0W107XG4gIC8qKiBPcHRpb25hbCByZW1vdmFsIHBvbGljeSBmb3IgcmVzb3VyY2VzIChkZWZhdWx0cyB0byBERVNUUk9ZKSAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbiAgLyoqIE9wdGlvbmFsIHRpbWVvdXQgZm9yIExhbWJkYSBmdW5jdGlvbiAoZGVmYXVsdHMgdG8gMTUgbWludXRlcykgKi9cbiAgcmVhZG9ubHkgdGltZW91dD86IER1cmF0aW9uO1xuICAvKiogT3B0aW9uYWwgbWVtb3J5IHNpemUgZm9yIExhbWJkYSBmdW5jdGlvbiAoZGVmYXVsdHMgdG8gMTAyNCBNQikgKi9cbiAgcmVhZG9ubHkgbWVtb3J5U2l6ZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEYXRhTG9hZGVyIGNvbnN0cnVjdCBmb3IgbG9hZGluZyBkYXRhIGludG8gQXVyb3JhL1JEUyBkYXRhYmFzZXNcbiAqXG4gKiBUaGlzIGNvbnN0cnVjdCBwcm92aWRlcyBhIHNpbXBsaWZpZWQgc29sdXRpb24gZm9yIGxvYWRpbmcgZGF0YSBmcm9tIHZhcmlvdXMgZmlsZSBmb3JtYXRzXG4gKiAoU1FMLCBteXNxbGR1bXAsIHBnX2R1bXApIGludG8gTXlTUUwgb3IgUG9zdGdyZVNRTCBkYXRhYmFzZXMuIEl0IHVzZXMgUzMgZm9yIGZpbGUgc3RvcmFnZSxcbiAqIFN0ZXAgRnVuY3Rpb25zIGZvciBvcmNoZXN0cmF0aW9uLCBhbmQgTGFtYmRhIGZvciBwcm9jZXNzaW5nLlxuICpcbiAqIEFyY2hpdGVjdHVyZTpcbiAqIDEuIEZpbGVzIGFyZSB1cGxvYWRlZCB0byBTMyBidWNrZXRcbiAqIDIuIFN0ZXAgRnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHdpdGggbGlzdCBvZiBTMyBrZXlzXG4gKiAzLiBTdGVwIEZ1bmN0aW9uIGl0ZXJhdGVzIG92ZXIgZmlsZXMgaW4gZXhlY3V0aW9uIG9yZGVyXG4gKiA0LiBMYW1iZGEgZnVuY3Rpb24gcHJvY2Vzc2VzIGVhY2ggZmlsZSBhZ2FpbnN0IHRoZSBkYXRhYmFzZVxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiBDcmVhdGUgYSBEYXRhTG9hZGVyIHdpdGggZGF0YWJhc2UgY29uZmlndXJhdGlvbiBhbmQgZmlsZSBpbnB1dHMuXG4gKiBUaGUgY29uc3RydWN0IHdpbGwgaGFuZGxlIHVwbG9hZGluZyBmaWxlcyB0byBTMywgY3JlYXRpbmcgYSBTdGVwIEZ1bmN0aW9uXG4gKiB0byBvcmNoZXN0cmF0ZSBwcm9jZXNzaW5nLCBhbmQgZXhlY3V0aW5nIHRoZSBkYXRhIGxvYWRpbmcgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhTG9hZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqIFRoZSBTMyBidWNrZXQgdXNlZCBmb3Igc3RvcmluZyBmaWxlcyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVja2V0OiBCdWNrZXQ7XG4gIC8qKiBUaGUgU3RlcCBGdW5jdGlvbnMgc3RhdGUgbWFjaGluZSBmb3Igb3JjaGVzdHJhdGlvbiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmU7XG4gIC8qKiBUaGUgTGFtYmRhIGZ1bmN0aW9uIHRoYXQgcHJvY2Vzc2VzIHRoZSBkYXRhIGxvYWRpbmcgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NvckZ1bmN0aW9uOiBMYW1iZGFGdW5jdGlvbjtcbiAgLyoqIFRoZSBidWNrZXQgZGVwbG95bWVudCBmb3IgdXBsb2FkaW5nIGZpbGVzICovXG4gIHB1YmxpYyBidWNrZXREZXBsb3ltZW50PzogQnVja2V0RGVwbG95bWVudDtcbiAgLyoqIFRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXIgZm9yIHRyaWdnZXJpbmcgc3RhdGUgbWFjaGluZSBleGVjdXRpb24gKi9cbiAgcHVibGljIHJlYWRvbmx5IGN1c3RvbVJlc291cmNlUHJvdmlkZXI6IFByb3ZpZGVyO1xuICAvKiogVGhlIGN1c3RvbSByZXNvdXJjZSB0aGF0IHRyaWdnZXJzIHRoZSBzdGF0ZSBtYWNoaW5lICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25UcmlnZ2VyOiBDdXN0b21SZXNvdXJjZTtcbiAgLyoqIFRoZSBmaWxlIGlucHV0cyBjb25maWd1cmF0aW9uICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZUlucHV0czogRmlsZUlucHV0W107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFMb2FkZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBTdG9yZSBmaWxlIGlucHV0cyBmb3IgbGF0ZXIgdXNlXG4gICAgdGhpcy5maWxlSW5wdXRzID0gcHJvcHMuZmlsZUlucHV0cztcblxuICAgIC8vIFZhbGlkYXRlIHByb3BzXG4gICAgdGhpcy5fdmFsaWRhdGVQcm9wcyhwcm9wcyk7XG5cbiAgICAvLyBHZXQgcmVtb3ZhbCBwb2xpY3kgd2l0aCBkZWZhdWx0XG4gICAgY29uc3QgcmVtb3ZhbFBvbGljeSA9IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZO1xuXG4gICAgLy8gQ3JlYXRlIFMzIGJ1Y2tldCBmb3Igc3RvcmluZyBmaWxlc1xuICAgIHRoaXMuYnVja2V0ID0gdGhpcy5fY3JlYXRlQnVja2V0KHJlbW92YWxQb2xpY3kpO1xuXG4gICAgLy8gQ3JlYXRlIExhbWJkYSBmdW5jdGlvbiBmb3IgcHJvY2Vzc2luZ1xuICAgIHRoaXMucHJvY2Vzc29yRnVuY3Rpb24gPSB0aGlzLl9jcmVhdGVQcm9jZXNzb3JGdW5jdGlvbihwcm9wcyk7XG5cbiAgICAvLyBDcmVhdGUgU3RlcCBGdW5jdGlvbnMgc3RhdGUgbWFjaGluZVxuICAgIHRoaXMuc3RhdGVNYWNoaW5lID0gdGhpcy5fY3JlYXRlU3RhdGVNYWNoaW5lKCk7XG5cbiAgICAvLyBDcmVhdGUgY3VzdG9tIHJlc291cmNlIHByb3ZpZGVyIGZvciB0cmlnZ2VyaW5nIGV4ZWN1dGlvblxuICAgIHRoaXMuY3VzdG9tUmVzb3VyY2VQcm92aWRlciA9IHRoaXMuX2NyZWF0ZUN1c3RvbVJlc291cmNlUHJvdmlkZXIoKTtcblxuICAgIC8vIFVwbG9hZCBmaWxlcyB0byBTM1xuICAgIHRoaXMuX3NldHVwRmlsZVByb2Nlc3NpbmcocHJvcHMpO1xuXG4gICAgLy8gQ3JlYXRlIGN1c3RvbSByZXNvdXJjZSB0byB0cmlnZ2VyIGV4ZWN1dGlvbiBhZnRlciBmaWxlcyBhcmUgdXBsb2FkZWRcbiAgICB0aGlzLmV4ZWN1dGlvblRyaWdnZXIgPSB0aGlzLl9jcmVhdGVFeGVjdXRpb25UcmlnZ2VyKCk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIGFkZGl0aW9uYWwgSUFNIHBlcm1pc3Npb25zIHRvIHRoZSBleGVjdXRpb24gdHJpZ2dlciBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHBhcmFtIHN0YXRlbWVudCBUaGUgSUFNIHBvbGljeSBzdGF0ZW1lbnQgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRFeGVjdXRpb25UcmlnZ2VyUGVybWlzc2lvbnMoc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICAvLyBHZXQgdGhlIExhbWJkYSBmdW5jdGlvbiBmcm9tIHRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXJcbiAgICBjb25zdCB0cmlnZ2VyRnVuY3Rpb24gPSB0aGlzLmN1c3RvbVJlc291cmNlUHJvdmlkZXIub25FdmVudEhhbmRsZXI7XG4gICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xuICAgICAgdHJpZ2dlckZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShzdGF0ZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGNvbnN0cnVjdCBwcm9wZXJ0aWVzXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgRGF0YUxvYWRlciBwcm9wZXJ0aWVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZVByb3BzKHByb3BzOiBEYXRhTG9hZGVyUHJvcHMpOiB2b2lkIHtcbiAgICBpZiAoIXByb3BzLmRhdGFiYXNlQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGFiYXNlQ29uZmlnIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5kYXRhYmFzZUNvbmZpZy5jbHVzdGVyICYmICFwcm9wcy5kYXRhYmFzZUNvbmZpZy5pbnN0YW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgY2x1c3RlciBvciBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGluIGRhdGFiYXNlQ29uZmlnJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5maWxlSW5wdXRzIHx8IHByb3BzLmZpbGVJbnB1dHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBmaWxlIGlucHV0IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZmlsZSBpbnB1dHNcbiAgICBmb3IgKGNvbnN0IGZpbGVJbnB1dCBvZiBwcm9wcy5maWxlSW5wdXRzKSB7XG4gICAgICBpZiAoIWZpbGVJbnB1dC5maWxlUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZpbGVQYXRoIGlzIHJlcXVpcmVkIGZvciBlYWNoIGZpbGUgaW5wdXQnKTtcbiAgICAgIH1cbiAgICAgIGlmICghZmlsZUlucHV0LmZpbGVUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZmlsZVR5cGUgaXMgcmVxdWlyZWQgZm9yIGVhY2ggZmlsZSBpbnB1dCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGVuZ2luZSBjb21wYXRpYmlsaXR5XG4gICAgZm9yIChjb25zdCBmaWxlSW5wdXQgb2YgcHJvcHMuZmlsZUlucHV0cykge1xuICAgICAgaWYgKHByb3BzLmRhdGFiYXNlQ29uZmlnLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuTVlTUUwgJiZcbiAgICAgICAgICBmaWxlSW5wdXQuZmlsZVR5cGUgPT09IEZpbGVUeXBlLlBHRFVNUCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bvc3RncmVTUUwgZHVtcCBmaWxlcyBjYW5ub3QgYmUgdXNlZCB3aXRoIE15U1FMIGRhdGFiYXNlcycpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRhdGFiYXNlQ29uZmlnLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuUE9TVEdSRVNRTCAmJlxuICAgICAgICAgIGZpbGVJbnB1dC5maWxlVHlwZSA9PT0gRmlsZVR5cGUuTVlTUUxEVU1QKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTXlTUUwgZHVtcCBmaWxlcyBjYW5ub3QgYmUgdXNlZCB3aXRoIFBvc3RncmVTUUwgZGF0YWJhc2VzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIFMzIGJ1Y2tldCBmb3Igc3RvcmluZyBmaWxlc1xuICAgKiBAcGFyYW0gcmVtb3ZhbFBvbGljeSBUaGUgcmVtb3ZhbCBwb2xpY3kgdG8gYXBwbHlcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgUzMgYnVja2V0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVCdWNrZXQocmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeSk6IEJ1Y2tldCB7XG4gICAgY29uc3QgYnVja2V0ID0gbmV3IEJ1Y2tldCh0aGlzLCAnRGF0YUxvYWRlckJ1Y2tldCcsIHtcbiAgICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICByZW1vdmFsUG9saWN5OiByZW1vdmFsUG9saWN5LFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcblxuICAgIHJldHVybiBidWNrZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgTGFtYmRhIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGRhdGEgbG9hZGluZ1xuICAgKiBAcGFyYW0gcHJvcHMgVGhlIERhdGFMb2FkZXIgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZVByb2Nlc3NvckZ1bmN0aW9uKHByb3BzOiBEYXRhTG9hZGVyUHJvcHMpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgLy8gQ3JlYXRlIGEgZGVkaWNhdGVkIHNlY3VyaXR5IGdyb3VwIGZvciB0aGUgTGFtYmRhIGZ1bmN0aW9uXG4gICAgY29uc3QgbGFtYmRhU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsICdEYXRhTG9hZGVyUHJvY2Vzc29yU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgIHZwYzogcHJvcHMuZGF0YWJhc2VDb25maWcudnBjLFxuICAgICAgZGVzY3JpcHRpb246ICdTZWN1cml0eSBncm91cCBmb3IgRGF0YUxvYWRlciBwcm9jZXNzb3IgTGFtYmRhIGZ1bmN0aW9uJyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsIC8vIExhbWJkYSBuZWVkcyBvdXRib3VuZCBhY2Nlc3MgZm9yIEFXUyBzZXJ2aWNlcyBhbmQgaW50ZXJuZXRcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IExhbWJkYSB0byBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZVxuICAgIC8vIEFkZCBpbmdyZXNzIHJ1bGUgdG8gZGF0YWJhc2Ugc2VjdXJpdHkgZ3JvdXAgdG8gYWxsb3cgY29ubmVjdGlvbnMgZnJvbSBMYW1iZGFcbiAgICBwcm9wcy5kYXRhYmFzZUNvbmZpZy5zZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgbGFtYmRhU2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHByb3BzLmRhdGFiYXNlQ29uZmlnLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuTVlTUUwgPyAzMzA2IDogNTQzMiksXG4gICAgICBgQWxsb3cgRGF0YUxvYWRlciBMYW1iZGEgdG8gY29ubmVjdCB0byAke3Byb3BzLmRhdGFiYXNlQ29uZmlnLmVuZ2luZX0gZGF0YWJhc2VgLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgTGFtYmRhIGZ1bmN0aW9uIHdpdGggYXV0b21hdGljIGRlcGVuZGVuY3kgYnVuZGxpbmdcbiAgICBjb25zdCBsYW1iZGFGdW5jdGlvbiA9IG5ldyBQeXRob25GdW5jdGlvbih0aGlzLCAnRGF0YUxvYWRlclByb2Nlc3NvcicsIHtcbiAgICAgIGVudHJ5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnZGF0YS1sb2FkZXItbGFtYmRhJyksXG4gICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzEzLFxuICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgaW5kZXg6ICdpbmRleC5weScsXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0IHx8IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgbWVtb3J5U2l6ZTogcHJvcHMubWVtb3J5U2l6ZSB8fCAxMDI0LFxuICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgdnBjOiBwcm9wcy5kYXRhYmFzZUNvbmZpZy52cGMsXG4gICAgICBzZWN1cml0eUdyb3VwczogW2xhbWJkYVNlY3VyaXR5R3JvdXBdLCAvLyBVc2UgdGhlIGRlZGljYXRlZCBMYW1iZGEgc2VjdXJpdHkgZ3JvdXBcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIERBVEFCQVNFX0VOR0lORTogcHJvcHMuZGF0YWJhc2VDb25maWcuZW5naW5lLFxuICAgICAgICBEQVRBQkFTRV9TRUNSRVRfQVJOOiBwcm9wcy5kYXRhYmFzZUNvbmZpZy5zZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBEQVRBQkFTRV9OQU1FOiBwcm9wcy5kYXRhYmFzZUNvbmZpZy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIFMzX0JVQ0tFVDogdGhpcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIH0sXG4gICAgICBidW5kbGluZzoge1xuICAgICAgICAvLyBVc2UgY3VzdG9tIGJ1bmRsaW5nIGNvbW1hbmRzIHRvIGF2b2lkIFBvZXRyeSBjb25mbGljdHNcbiAgICAgICAgY29tbWFuZDogW1xuICAgICAgICAgICdiYXNoJywgJy1jJywgW1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgY2xlYW4gdmlydHVhbCBlbnZpcm9ubWVudFxuICAgICAgICAgICAgJ3B5dGhvbiAtbSB2ZW52IC90bXAvdmVudicsXG4gICAgICAgICAgICAvLyBBY3RpdmF0ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudFxuICAgICAgICAgICAgJ3NvdXJjZSAvdG1wL3ZlbnYvYmluL2FjdGl2YXRlJyxcbiAgICAgICAgICAgIC8vIEluc3RhbGwgZGVwZW5kZW5jaWVzIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50XG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLS11cGdyYWRlIHBpcCcsXG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dCAtdCAvYXNzZXQtb3V0cHV0JyxcbiAgICAgICAgICAgIC8vIENvcHkgc291cmNlIGZpbGVzXG4gICAgICAgICAgICAnY3AgLXIgLiAvYXNzZXQtb3V0cHV0JyxcbiAgICAgICAgICAgIC8vIENsZWFuIHVwIF9fcHljYWNoZV9fIGFuZCBvdGhlciB1bm5lY2Vzc2FyeSBmaWxlc1xuICAgICAgICAgICAgJ2ZpbmQgL2Fzc2V0LW91dHB1dCAtdHlwZSBkIC1uYW1lIF9fcHljYWNoZV9fIC1leGVjIHJtIC1yZiB7fSArIHx8IHRydWUnLFxuICAgICAgICAgICAgJ2ZpbmQgL2Fzc2V0LW91dHB1dCAtbmFtZSBcIioucHljXCIgLWRlbGV0ZSB8fCB0cnVlJyxcbiAgICAgICAgICBdLmpvaW4oJyAmJiAnKSxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gVXNlIHRoZSBzdGFuZGFyZCBQeXRob24gaW1hZ2UgdG8gYXZvaWQgcHJlLWluc3RhbGxlZCBwYWNrYWdlc1xuICAgICAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KERlZmF1bHRSdW50aW1lcy5QWVRIT05fQlVORExJTkdfSU1BR0UpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEdyYW50IHBlcm1pc3Npb25zXG4gICAgdGhpcy5fZ3JhbnRQZXJtaXNzaW9ucyhsYW1iZGFGdW5jdGlvbiwgcHJvcHMpO1xuXG4gICAgcmV0dXJuIGxhbWJkYUZ1bmN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIFN0ZXAgRnVuY3Rpb25zIHN0YXRlIG1hY2hpbmVcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgc3RhdGUgbWFjaGluZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlU3RhdGVNYWNoaW5lKCk6IFN0YXRlTWFjaGluZSB7XG4gICAgLy8gQ3JlYXRlIGEgTWFwIHN0YXRlIHRvIGl0ZXJhdGUgb3ZlciBmaWxlIGtleXNcbiAgICBjb25zdCBwcm9jZXNzRmlsZVRhc2sgPSBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdQcm9jZXNzRmlsZVRhc2snLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5wcm9jZXNzb3JGdW5jdGlvbixcbiAgICAgIHBheWxvYWQ6IFRhc2tJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgJ3MzS2V5LiQnOiAnJCcsXG4gICAgICAgICdidWNrZXROYW1lJzogdGhpcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBzdGF0ZSBtYWNoaW5lIGRlZmluaXRpb25cbiAgICBjb25zdCBkZWZpbml0aW9uID0gbmV3IE1hcCh0aGlzLCAnUHJvY2Vzc0ZpbGVzTWFwJywge1xuICAgICAgaXRlbXNQYXRoOiAnJC5maWxlS2V5cycsXG4gICAgICBtYXhDb25jdXJyZW5jeTogMSwgLy8gUHJvY2VzcyBmaWxlcyBzZXF1ZW50aWFsbHkgdG8gbWFpbnRhaW4gb3JkZXJcbiAgICB9KS5pdGVtUHJvY2Vzc29yKHByb2Nlc3NGaWxlVGFzayk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHN0YXRlIG1hY2hpbmVcbiAgICBjb25zdCBzdGF0ZU1hY2hpbmUgPSBuZXcgU3RhdGVNYWNoaW5lKHRoaXMsICdEYXRhTG9hZGVyU3RhdGVNYWNoaW5lJywge1xuICAgICAgZGVmaW5pdGlvbkJvZHk6IERlZmluaXRpb25Cb2R5LmZyb21DaGFpbmFibGUoZGVmaW5pdGlvbiksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5ob3VycygyKSwgLy8gQWxsb3cgdXAgdG8gMiBob3VycyBmb3IgdGhlIGVudGlyZSBwcm9jZXNzXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCB0aGUgc3RhdGUgbWFjaGluZSBwZXJtaXNzaW9uIHRvIGludm9rZSB0aGUgTGFtYmRhIGZ1bmN0aW9uXG4gICAgdGhpcy5wcm9jZXNzb3JGdW5jdGlvbi5ncmFudEludm9rZShzdGF0ZU1hY2hpbmUpO1xuXG4gICAgcmV0dXJuIHN0YXRlTWFjaGluZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIHRoZSBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHBhcmFtIGxhbWJkYUZ1bmN0aW9uIFRoZSBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHBhcmFtIHByb3BzIFRoZSBEYXRhTG9hZGVyIHByb3BlcnRpZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dyYW50UGVybWlzc2lvbnMobGFtYmRhRnVuY3Rpb246IExhbWJkYUZ1bmN0aW9uLCBwcm9wczogRGF0YUxvYWRlclByb3BzKTogdm9pZCB7XG4gICAgLy8gR3JhbnQgUzMgcGVybWlzc2lvbnNcbiAgICB0aGlzLmJ1Y2tldC5ncmFudFJlYWQobGFtYmRhRnVuY3Rpb24pO1xuXG4gICAgLy8gR3JhbnQgU2VjcmV0cyBNYW5hZ2VyIHBlcm1pc3Npb25zXG4gICAgcHJvcHMuZGF0YWJhc2VDb25maWcuc2VjcmV0LmdyYW50UmVhZChsYW1iZGFGdW5jdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBmaWxlIHByb2Nlc3NpbmcgYnkgdXBsb2FkaW5nIGZpbGVzIHRvIFMzXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgRGF0YUxvYWRlciBwcm9wZXJ0aWVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9zZXR1cEZpbGVQcm9jZXNzaW5nKHByb3BzOiBEYXRhTG9hZGVyUHJvcHMpOiB2b2lkIHtcbiAgICAvLyBTZXBhcmF0ZSBsb2NhbCBmaWxlcyBmcm9tIFMzIFVSSXNcbiAgICBjb25zdCBsb2NhbEZpbGVzID0gcHJvcHMuZmlsZUlucHV0cy5maWx0ZXIoZiA9PiAhZi5maWxlUGF0aC5zdGFydHNXaXRoKCdzMzovLycpKTtcblxuICAgIC8vIFVwbG9hZCBsb2NhbCBmaWxlcyB0byBTMyBpZiBhbnlcbiAgICBpZiAobG9jYWxGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBQcm9jZXNzIGVhY2ggZmlsZSBpbmRpdmlkdWFsbHkgdG8gaGFuZGxlIGJvdGggZmlsZXMgYW5kIGRpcmVjdG9yaWVzXG4gICAgICBsb2NhbEZpbGVzLmZvckVhY2goKGZpbGVJbnB1dCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBmaWxlSW5wdXQuZmlsZVBhdGg7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICAgIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgY29uc3QgcGF0aE1vZHVsZSA9IHJlcXVpcmUoJ3BhdGgnKTtcblxuICAgICAgICBsZXQgcmVzb2x2ZWRQYXRoOiBzdHJpbmc7XG4gICAgICAgIGlmIChwYXRoTW9kdWxlLmlzQWJzb2x1dGUoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgcmVzb2x2ZWRQYXRoID0gZmlsZVBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVzb2x2ZSByZWxhdGl2ZSBwYXRocyBmcm9tIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gICAgICAgICAgcmVzb2x2ZWRQYXRoID0gcGF0aE1vZHVsZS5yZXNvbHZlKGZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBwYXRoIGV4aXN0c1xuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocmVzb2x2ZWRQYXRoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cmVzb2x2ZWRQYXRofWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZzLnN0YXRTeW5jKHJlc29sdmVkUGF0aCkuaXNGaWxlKCkpIHtcbiAgICAgICAgICAvLyBGb3IgaW5kaXZpZHVhbCBmaWxlcywgZGVwbG95IGZyb20gcGFyZW50IGRpcmVjdG9yeSB3aXRoIGluY2x1ZGUgZmlsdGVyXG4gICAgICAgICAgY29uc3QgcGFyZW50RGlyID0gcGF0aE1vZHVsZS5kaXJuYW1lKHJlc29sdmVkUGF0aCk7XG4gICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoTW9kdWxlLmJhc2VuYW1lKHJlc29sdmVkUGF0aCk7XG5cbiAgICAgICAgICBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBgRGF0YUxvYWRlckZpbGVEZXBsb3ltZW50JHtpbmRleH1gLCB7XG4gICAgICAgICAgICBzb3VyY2VzOiBbU291cmNlLmFzc2V0KHBhcmVudERpcildLFxuICAgICAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHRoaXMuYnVja2V0LFxuICAgICAgICAgICAgZGVzdGluYXRpb25LZXlQcmVmaXg6ICdkYXRhLWZpbGVzLycsXG4gICAgICAgICAgICBpbmNsdWRlOiBbZmlsZU5hbWVdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZvciBkaXJlY3RvcmllcywgZGVwbG95IGVudGlyZSBkaXJlY3RvcnlcbiAgICAgICAgICBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBgRGF0YUxvYWRlckZpbGVEZXBsb3ltZW50JHtpbmRleH1gLCB7XG4gICAgICAgICAgICBzb3VyY2VzOiBbU291cmNlLmFzc2V0KHJlc29sdmVkUGF0aCldLFxuICAgICAgICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHRoaXMuYnVja2V0LFxuICAgICAgICAgICAgZGVzdGluYXRpb25LZXlQcmVmaXg6ICdkYXRhLWZpbGVzLycsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY3VzdG9tIHJlc291cmNlIHByb3ZpZGVyIGZvciB0cmlnZ2VyaW5nIHN0YXRlIG1hY2hpbmUgZXhlY3V0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXJcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUN1c3RvbVJlc291cmNlUHJvdmlkZXIoKTogUHJvdmlkZXIge1xuICAgIC8vIENyZWF0ZSBJQU0gcm9sZSBmb3IgdGhlIGN1c3RvbSByZXNvdXJjZSBMYW1iZGEgZnVuY3Rpb24gd2l0aCBhbGwgbmVjZXNzYXJ5IHBvbGljaWVzXG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2VSb2xlID0gbmV3IFJvbGUodGhpcywgJ1N0YXRlTWFjaGluZUV4ZWN1dGlvblRyaWdnZXJSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSUFNIHJvbGUgZm9yIERhdGFMb2FkZXIgY3VzdG9tIHJlc291cmNlIExhbWJkYSBmdW5jdGlvbicsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUnKSxcbiAgICAgIF0sXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBTdGF0ZU1hY2hpbmVFeGVjdXRpb25Qb2xpY3k6IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3N0YXRlczpTdGFydEV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgJ3N0YXRlczpEZXNjcmliZUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgJ3N0YXRlczpTdG9wRXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgICAgICAgICAgIGAke3RoaXMuc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybn06KmAsIC8vIEZvciBleGVjdXRpb24gQVJOc1xuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIExhbWJkYSBmdW5jdGlvbiBmb3IgY3VzdG9tIHJlc291cmNlIHdpdGggdGhlIHByZS1jb25maWd1cmVkIHJvbGVcbiAgICBjb25zdCBjdXN0b21SZXNvdXJjZUZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdTdGF0ZU1hY2hpbmVFeGVjdXRpb25UcmlnZ2VyJywge1xuICAgICAgcnVudGltZTogUnVudGltZS5QWVRIT05fM18xMSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIHJvbGU6IGN1c3RvbVJlc291cmNlUm9sZSwgLy8gQXR0YWNoIHRoZSByb2xlIGR1cmluZyBjcmVhdGlvblxuICAgICAgY29kZTogQ29kZS5mcm9tSW5saW5lKGBcbmltcG9ydCBqc29uXG5pbXBvcnQgYm90bzNcbmltcG9ydCBsb2dnaW5nXG5cbmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKClcbmxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pXG5cbnN0ZXBmdW5jdGlvbnMgPSBib3RvMy5jbGllbnQoJ3N0ZXBmdW5jdGlvbnMnKVxuXG5kZWYgaGFuZGxlcihldmVudCwgY29udGV4dCk6XG4gICAgbG9nZ2VyLmluZm8oZlwiUmVjZWl2ZWQgZXZlbnQ6IHtqc29uLmR1bXBzKGV2ZW50KX1cIilcbiAgICBcbiAgICByZXF1ZXN0X3R5cGUgPSBldmVudFsnUmVxdWVzdFR5cGUnXVxuICAgIFxuICAgIGlmIHJlcXVlc3RfdHlwZSA9PSAnQ3JlYXRlJyBvciByZXF1ZXN0X3R5cGUgPT0gJ1VwZGF0ZSc6XG4gICAgICAgIHRyeTpcbiAgICAgICAgICAgICMgR2V0IHBhcmFtZXRlcnMgZnJvbSBldmVudFxuICAgICAgICAgICAgc3RhdGVfbWFjaGluZV9hcm4gPSBldmVudFsnUmVzb3VyY2VQcm9wZXJ0aWVzJ11bJ1N0YXRlTWFjaGluZUFybiddXG4gICAgICAgICAgICBmaWxlX2tleXMgPSBldmVudFsnUmVzb3VyY2VQcm9wZXJ0aWVzJ11bJ0ZpbGVLZXlzJ11cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgIyBTdGFydCBleGVjdXRpb25cbiAgICAgICAgICAgIHJlc3BvbnNlID0gc3RlcGZ1bmN0aW9ucy5zdGFydF9leGVjdXRpb24oXG4gICAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lQXJuPXN0YXRlX21hY2hpbmVfYXJuLFxuICAgICAgICAgICAgICAgIGlucHV0PWpzb24uZHVtcHMoe1xuICAgICAgICAgICAgICAgICAgICAnZmlsZUtleXMnOiBmaWxlX2tleXNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBleGVjdXRpb25fYXJuID0gcmVzcG9uc2VbJ2V4ZWN1dGlvbkFybiddXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhmXCJTdGFydGVkIGV4ZWN1dGlvbjoge2V4ZWN1dGlvbl9hcm59XCIpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ1N0YXR1cyc6ICdTVUNDRVNTJyxcbiAgICAgICAgICAgICAgICAnUGh5c2ljYWxSZXNvdXJjZUlkJzogZXhlY3V0aW9uX2FybixcbiAgICAgICAgICAgICAgICAnRGF0YSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0V4ZWN1dGlvbkFybic6IGV4ZWN1dGlvbl9hcm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOlxuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGZcIkVycm9yIHN0YXJ0aW5nIGV4ZWN1dGlvbjoge3N0cihlKX1cIilcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgJ1N0YXR1cyc6ICdGQUlMRUQnLFxuICAgICAgICAgICAgICAgICdSZWFzb24nOiBzdHIoZSksXG4gICAgICAgICAgICAgICAgJ1BoeXNpY2FsUmVzb3VyY2VJZCc6ICdmYWlsZWQnXG4gICAgICAgICAgICB9XG4gICAgXG4gICAgZWxpZiByZXF1ZXN0X3R5cGUgPT0gJ0RlbGV0ZSc6XG4gICAgICAgICMgRm9yIGRlbGV0ZSwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnU3RhdHVzJzogJ1NVQ0NFU1MnLFxuICAgICAgICAgICAgJ1BoeXNpY2FsUmVzb3VyY2VJZCc6IGV2ZW50LmdldCgnUGh5c2ljYWxSZXNvdXJjZUlkJywgJ25vbmUnKVxuICAgICAgICB9XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ1N0YXR1cyc6ICdTVUNDRVNTJyxcbiAgICAgICAgJ1BoeXNpY2FsUmVzb3VyY2VJZCc6ICdub25lJ1xuICAgIH1cbiAgICAgIGApLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBwcm92aWRlciB3aXRoIHRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBhbHJlYWR5IGhhcyB0aGUgY29ycmVjdCByb2xlXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIodGhpcywgJ1N0YXRlTWFjaGluZUV4ZWN1dGlvblByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IGN1c3RvbVJlc291cmNlRnVuY3Rpb24sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvdmlkZXI7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGN1c3RvbSByZXNvdXJjZSB0byB0cmlnZ2VyIHN0YXRlIG1hY2hpbmUgZXhlY3V0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUV4ZWN1dGlvblRyaWdnZXIoKTogQ3VzdG9tUmVzb3VyY2Uge1xuICAgIC8vIEdldCBvcmRlcmVkIGZpbGUga2V5c1xuICAgIGNvbnN0IG9yZGVyZWRGaWxlS2V5cyA9IHRoaXMuX2dldE9yZGVyZWRGaWxlS2V5cygpO1xuXG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0V4ZWN1dGlvblRyaWdnZXJSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5jdXN0b21SZXNvdXJjZVByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgU3RhdGVNYWNoaW5lQXJuOiB0aGlzLnN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4sXG4gICAgICAgIEZpbGVLZXlzOiBvcmRlcmVkRmlsZUtleXMsXG4gICAgICAgIC8vIEFkZCBhIHRpbWVzdGFtcCB0byBmb3JjZSB1cGRhdGVzIHdoZW4gbmVlZGVkXG4gICAgICAgIFRpbWVzdGFtcDogRGF0ZS5ub3coKS50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEVuc3VyZSB0aGUgY3VzdG9tIHJlc291cmNlIHJ1bnMgYWZ0ZXIgYnVja2V0IGRlcGxveW1lbnQgKGlmIGV4aXN0cylcbiAgICBpZiAodGhpcy5idWNrZXREZXBsb3ltZW50KSB7XG4gICAgICBjdXN0b21SZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5zdGF0ZU1hY2hpbmUpO1xuICAgICAgY3VzdG9tUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMuYnVja2V0RGVwbG95bWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1c3RvbVJlc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG9yZGVyZWQgZmlsZSBrZXlzIGZvciBleGVjdXRpb25cbiAgICogQHJldHVybnMgQXJyYXkgb2YgUzMga2V5cyBpbiBleGVjdXRpb24gb3JkZXJcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldE9yZGVyZWRGaWxlS2V5cygpOiBzdHJpbmdbXSB7XG4gICAgLy8gU29ydCBmaWxlcyBieSBleGVjdXRpb24gb3JkZXJcbiAgICBjb25zdCBzb3J0ZWRGaWxlcyA9IFsuLi50aGlzLmZpbGVJbnB1dHNdLnNvcnQoXG4gICAgICAoYSwgYikgPT4gKGEuZXhlY3V0aW9uT3JkZXIgfHwgMCkgLSAoYi5leGVjdXRpb25PcmRlciB8fCAwKSxcbiAgICApO1xuXG4gICAgLy8gQ29udmVydCBmaWxlIHBhdGhzIHRvIFMzIGtleXNcbiAgICByZXR1cm4gc29ydGVkRmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgaWYgKGZpbGUuZmlsZVBhdGguc3RhcnRzV2l0aCgnczM6Ly8nKSkge1xuICAgICAgICAvLyBFeHRyYWN0IGtleSBmcm9tIFMzIFVSSVxuICAgICAgICBjb25zdCBwYXJ0cyA9IGZpbGUuZmlsZVBhdGgucmVwbGFjZSgnczM6Ly8nLCAnJykuc3BsaXQoJy8nKTtcbiAgICAgICAgcmV0dXJuIHBhcnRzLnNsaWNlKDEpLmpvaW4oJy8nKTsgLy8gUmVtb3ZlIGJ1Y2tldCBuYW1lXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBMb2NhbCBmaWxlcyBhcmUgdXBsb2FkZWQgd2l0aCBkYXRhLWZpbGVzLyBwcmVmaXhcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGUuZmlsZVBhdGgpO1xuICAgICAgICByZXR1cm4gYGRhdGEtZmlsZXMvJHtmaWxlTmFtZX1gO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,17 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
3
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
36
|
exports.LambdaIamUtils = void 0;
|
|
5
37
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
38
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
39
|
// SPDX-License-Identifier: Apache-2.0
|
|
8
|
-
const cdk = require("aws-cdk-lib");
|
|
40
|
+
const cdk = __importStar(require("aws-cdk-lib"));
|
|
9
41
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
10
|
-
const iam = require("aws-cdk-lib/aws-iam");
|
|
42
|
+
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
11
43
|
/**
|
|
12
44
|
* Utility class for creating secure Lambda IAM policy statements with minimal permissions
|
|
13
45
|
*/
|
|
14
46
|
class LambdaIamUtils {
|
|
47
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.LambdaIamUtils", version: "1.17.2" };
|
|
48
|
+
static OBSERVABILITY_SUFFIX = '-secured';
|
|
15
49
|
/**
|
|
16
50
|
* Creates CloudWatch Logs policy statements for Lambda execution
|
|
17
51
|
*
|
|
@@ -232,7 +266,4 @@ class LambdaIamUtils {
|
|
|
232
266
|
}
|
|
233
267
|
}
|
|
234
268
|
exports.LambdaIamUtils = LambdaIamUtils;
|
|
235
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
236
|
-
LambdaIamUtils[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.LambdaIamUtils", version: "1.17.0" };
|
|
237
|
-
LambdaIamUtils.OBSERVABILITY_SUFFIX = '-secured';
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWlhbS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3VzZS1jYXNlcy91dGlsaXRpZXMvbGFtYmRhLWlhbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsbUNBQW1DO0FBQ25DLDZDQUFvQztBQUNwQywyQ0FBMkM7QUFpRTNDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBRXpCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQWlDO1FBQ25FLDBEQUEwRDtRQUMxRCxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0RyxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLGVBQWUsa0JBQWtCLEVBQUUsQ0FBQztRQUM3RSxZQUFZLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyRixJQUFJLFdBQVcsR0FBRyxnQkFBZ0IsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxjQUFjLFlBQVksRUFBRSxDQUFDO1FBQzVGLE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsaUNBQWlDO1lBQ2pDLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztnQkFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFDeEIsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ2hDLFNBQVMsRUFBRTtvQkFDVCxXQUFXO2lCQUNaO2FBQ0YsQ0FBQztZQUNGLHNEQUFzRDtZQUN0RCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JB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TUFBTSxDQUFDLEtBQUs7WUFDeEIsT0FBTztZQUNQLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLG1DQUFtQyxDQUMvQyxTQUFpQixFQUNqQixVQUFvQixDQUFDLCtCQUErQixDQUFDO1FBRXJELE9BQU8sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQzdCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDeEIsT0FBTztZQUNQLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLHdCQUF3QixDQUNwQyxNQUFjLEVBQ2QsVUFBb0IsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUM7UUFFMUQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDN0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixPQUFPO1lBQ1AsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBL1BILHdDQWdRQzs7O0FBL1B3QixtQ0FBb0IsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBTdGFjayBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUlhbVV0aWxzU3RhY2tJbmZvIHtcbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIExhbWJkYSBDbG91ZFdhdGNoIExvZ3MgcGVybWlzc2lvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFMb2dzUGVybWlzc2lvbnNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0IHNjb3BlICh1c2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBuYW1lcylcbiAgICovXG4gIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIG5hbWUgb2YgdGhlIExhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBsb2cgZ3JvdXAgbmFtZSBwYXR0ZXJuXG4gICAqIEBkZWZhdWx0ICcvYXdzL2xhbWJkYS97dW5pcXVlRnVuY3Rpb25OYW1lfSdcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQVdTIHJlZ2lvbiBmb3IgdGhlIGxvZyBncm91cCBBUk5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1MgYWNjb3VudCBJRCBmb3IgdGhlIGxvZyBncm91cCBBUk5cbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBvYnNlcnZhYmlsaXR5IGlzIGVuYWJsZWQgb3Igbm90LiBUaGlzIHdvdWxkIGhhdmUgYW4gaW1wYWN0XG4gICAqIG9uIHRoZSByZXN1bHQgSUFNIHBvbGljeSBmb3IgdGhlIExvZ0dyb3VwIGZvciB0aGUgTGFtYmRhIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVPYnNlcnZhYmlsaXR5PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgY3JlYXRpbmcgTGFtYmRhIGxvZ3MgcGVybWlzc2lvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFMb2dzUGVybWlzc2lvbnNSZXN1bHQge1xuICAvKipcbiAgICogVGhlIHBvbGljeSBzdGF0ZW1lbnRzIGZvciBDbG91ZFdhdGNoIExvZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeVN0YXRlbWVudHM6IGlhbS5Qb2xpY3lTdGF0ZW1lbnRbXTtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBmdW5jdGlvbiBuYW1lIHRoYXQgd2FzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgdW5pcXVlRnVuY3Rpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXRpbGl0eSBjbGFzcyBmb3IgY3JlYXRpbmcgc2VjdXJlIExhbWJkYSBJQU0gcG9saWN5IHN0YXRlbWVudHMgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFJYW1VdGlscyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JTRVJWQUJJTElUWV9TVUZGSVggPSAnLXNlY3VyZWQnO1xuICAvKipcbiAgICogQ3JlYXRlcyBDbG91ZFdhdGNoIExvZ3MgcG9saWN5IHN0YXRlbWVudHMgZm9yIExhbWJkYSBleGVjdXRpb25cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIENvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBwb2xpY3kgc3RhdGVtZW50cyBhbmQgdGhlIHVuaXF1ZSBmdW5jdGlvbiBuYW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUxvZ3NQZXJtaXNzaW9ucyhwcm9wczogTGFtYmRhTG9nc1Blcm1pc3Npb25zUHJvcHMpOiBMYW1iZGFMb2dzUGVybWlzc2lvbnNSZXN1bHQge1xuICAgIC8vIEdlbmVyYXRlIHVuaXF1ZSBmdW5jdGlvbiBuYW1lIHVzaW5nIGNvbnN0cnVjdCBub2RlIHBhdGhcbiAgICBjb25zdCB1bmlxdWVGdW5jdGlvbk5hbWUgPSBMYW1iZGFJYW1VdGlscy5nZW5lcmF0ZVVuaXF1ZUZ1bmN0aW9uTmFtZShwcm9wcy5zY29wZSwgcHJvcHMuZnVuY3Rpb25OYW1lKTtcbiAgICBsZXQgbG9nR3JvdXBOYW1lID0gcHJvcHMubG9nR3JvdXBOYW1lIHx8IGAvYXdzL2xhbWJkYS8ke3VuaXF1ZUZ1bmN0aW9uTmFtZX1gO1xuICAgIGxvZ0dyb3VwTmFtZSArPSBwcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5ID8gTGFtYmRhSWFtVXRpbHMuT0JTRVJWQUJJTElUWV9TVUZGSVggOiAnJztcbiAgICBsZXQgbG9nR3JvdXBBcm4gPSBgYXJuOmF3czpsb2dzOiR7cHJvcHMucmVnaW9ufToke3Byb3BzLmFjY291bnR9OmxvZy1ncm91cDoke2xvZ0dyb3VwTmFtZX1gO1xuICAgIGNvbnN0IHBvbGljeVN0YXRlbWVudHMgPSBbXG4gICAgICAvLyBQZXJtaXNzaW9uIHRvIGNyZWF0ZSBsb2cgZ3JvdXBcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgbG9nR3JvdXBBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICAgIC8vIFBlcm1pc3Npb24gdG8gY3JlYXRlIGxvZyBzdHJlYW1zIGFuZCBwdXQgbG9nIGV2ZW50c1xuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGAke2xvZ0dyb3VwQXJufToqYCxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgcG9saWN5U3RhdGVtZW50cyxcbiAgICAgIHVuaXF1ZUZ1bmN0aW9uTmFtZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZUxhbWJkYVZQQ1Blcm1pc3Npb25zKCk6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQge1xuICAgIHJldHVybiBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdlYzI6Q3JlYXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICdlYzI6RGVzY3JpYmVOZXR3b3JrSW50ZXJmYWNlcycsXG4gICAgICAgICdlYzI6RGVzY3JpYmVTdWJuZXRzJyxcbiAgICAgICAgJ2VjMjpEZWxldGVOZXR3b3JrSW50ZXJmYWNlJyxcbiAgICAgICAgJ2VjMjpBc3NpZ25Qcml2YXRlSXBBZGRyZXNzZXMnLFxuICAgICAgICAnZWMyOlVuYXNzaWduUHJpdmF0ZUlwQWRkcmVzc2VzJyxcbiAgICAgICAgJ2VjMjpEZXNjcmliZVNlY3VyaXR5R3JvdXBzJyxcbiAgICAgICAgJ2VjMjpEZXNjcmliZVZwY3MnLFxuICAgICAgICAnZWMyOkdldFNlY3VyaXR5R3JvdXBzRm9yVnBjJyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBmdW5jdGlvbiBuYW1lIHVzaW5nIENESydzIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHlcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGJhc2VOYW1lIFRoZSBiYXNlIG5hbWUgZm9yIHRoZSBmdW5jdGlvblxuICAgKiBAcmV0dXJucyBVbmlxdWUgZnVuY3Rpb24gbmFtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZVVuaXF1ZUZ1bmN0aW9uTmFtZShzY29wZTogQ29uc3RydWN0LCBiYXNlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7YmFzZU5hbWV9LSR7TmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHNjb3BlLCB7IG1heExlbmd0aDogNjQgLSAoYmFzZU5hbWUubGVuZ3RoICsgMSkgfSkudG9Mb3dlckNhc2UoKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgVlBDIHBlcm1pc3Npb25zIGZvciBMYW1iZGEgZnVuY3Rpb25zIHJ1bm5pbmcgaW4gVlBDXG4gICAqXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIElBTSBQb2xpY3lTdGF0ZW1lbnRzIGZvciBWUEMgYWNjZXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVZwY1Blcm1pc3Npb25zKCk6IGlhbS5Qb2xpY3lTdGF0ZW1lbnRbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjMjpDcmVhdGVOZXR3b3JrSW50ZXJmYWNlJyxcbiAgICAgICAgICAnZWMyOkRlc2NyaWJlTmV0d29ya0ludGVyZmFjZXMnLFxuICAgICAgICAgICdlYzI6RGVsZXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICAgJ2VjMjpBdHRhY2hOZXR3b3JrSW50ZXJmYWNlJyxcbiAgICAgICAgICAnZWMyOkRldGFjaE5ldHdvcmtJbnRlcmZhY2UnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLCAvLyBWUEMgcGVybWlzc2lvbnMgcmVxdWlyZSB3aWxkY2FyZCByZXNvdXJjZXNcbiAgICAgIH0pLFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBYLVJheSB0cmFjaW5nIHBlcm1pc3Npb25zIGZvciBMYW1iZGEgZnVuY3Rpb25zXG4gICAqXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIElBTSBQb2xpY3lTdGF0ZW1lbnRzIGZvciBYLVJheSB0cmFjaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVhSYXlQZXJtaXNzaW9ucygpOiBpYW0uUG9saWN5U3RhdGVtZW50W10ge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICd4cmF5OlB1dFRyYWNlU2VnbWVudHMnLFxuICAgICAgICAgICd4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHMnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLCAvLyBYLVJheSBwZXJtaXNzaW9ucyByZXF1aXJlIHdpbGRjYXJkIHJlc291cmNlc1xuICAgICAgfSksXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCByZWdpb24gYW5kIGFjY291bnQgZnJvbSBhIGNvbnN0cnVjdFxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcmV0dXJucyBMYW1iZGFJYW1VdGlsc1N0YWNrSW5mb1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRTdGFja0luZm8oc2NvcGU6IENvbnN0cnVjdCk6IExhbWJkYUlhbVV0aWxzU3RhY2tJbmZvIHtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2lvbjogc3RhY2sucmVnaW9uLFxuICAgICAgYWNjb3VudDogc3RhY2suYWNjb3VudCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwb2xpY3kgc3RhdGVtZW50IGZvciBEeW5hbW9EQiB0YWJsZSBhY2Nlc3NcbiAgICpcbiAgICogQHBhcmFtIHRhYmxlQXJuIFRoZSBBUk4gb2YgdGhlIER5bmFtb0RCIHRhYmxlXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBEeW5hbW9EQiBhY3Rpb25zIHRvIGFsbG93XG4gICAqIEByZXR1cm5zIFBvbGljeVN0YXRlbWVudCBmb3IgRHluYW1vREIgYWNjZXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUR5bmFtb0RiUG9saWN5U3RhdGVtZW50KFxuICAgIHRhYmxlQXJuOiBzdHJpbmcsXG4gICAgYWN0aW9uczogc3RyaW5nW10gPSBbJ2R5bmFtb2RiOkdldEl0ZW0nLCAnZHluYW1vZGI6UHV0SXRlbScsICdkeW5hbW9kYjpVcGRhdGVJdGVtJywgJ2R5bmFtb2RiOkRlbGV0ZUl0ZW0nLCAnZHluYW1vZGI6UXVlcnknLCAnZHluYW1vZGI6U2NhbiddLFxuICApOiBpYW0uUG9saWN5U3RhdGVtZW50IHtcbiAgICByZXR1cm4gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlczogW3RhYmxlQXJuLCBgJHt0YWJsZUFybn0vaW5kZXgvKmBdLCAvLyBJbmNsdWRlIEdTSSBhY2Nlc3NcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcG9saWN5IHN0YXRlbWVudCBmb3IgUzMgYnVja2V0IGFjY2Vzc1xuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0QXJuIFRoZSBBUk4gb2YgdGhlIFMzIGJ1Y2tldFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgUzMgYWN0aW9ucyB0byBhbGxvd1xuICAgKiBAcGFyYW0gaW5jbHVkZU9iamVjdHMgV2hldGhlciB0byBpbmNsdWRlIG9iamVjdC1sZXZlbCBwZXJtaXNzaW9uc1xuICAgKiBAcmV0dXJucyBQb2xpY3lTdGF0ZW1lbnQgZm9yIFMzIGFjY2Vzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTM1BvbGljeVN0YXRlbWVudChcbiAgICBidWNrZXRBcm46IHN0cmluZyxcbiAgICBhY3Rpb25zOiBzdHJpbmdbXSA9IFsnczM6R2V0T2JqZWN0JywgJ3MzOlB1dE9iamVjdCddLFxuICAgIGluY2x1ZGVPYmplY3RzOiBib29sZWFuID0gdHJ1ZSxcbiAgKTogaWFtLlBvbGljeVN0YXRlbWVudCB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gW2J1Y2tldEFybl07XG4gICAgaWYgKGluY2x1ZGVPYmplY3RzKSB7XG4gICAgICByZXNvdXJjZXMucHVzaChgJHtidWNrZXRBcm59LypgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcG9saWN5IHN0YXRlbWVudCBmb3IgU1FTIHF1ZXVlIGFjY2Vzc1xuICAgKlxuICAgKiBAcGFyYW0gcXVldWVBcm4gVGhlIEFSTiBvZiB0aGUgU1FTIHF1ZXVlXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBTUVMgYWN0aW9ucyB0byBhbGxvd1xuICAgKiBAcmV0dXJucyBQb2xpY3lTdGF0ZW1lbnQgZm9yIFNRUyBhY2Nlc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlU3FzUG9saWN5U3RhdGVtZW50KFxuICAgIHF1ZXVlQXJuOiBzdHJpbmcsXG4gICAgYWN0aW9uczogc3RyaW5nW10gPSBbJ3NxczpSZWNlaXZlTWVzc2FnZScsICdzcXM6RGVsZXRlTWVzc2FnZScsICdzcXM6R2V0UXVldWVBdHRyaWJ1dGVzJ10sXG4gICk6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQge1xuICAgIHJldHVybiBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VzOiBbcXVldWVBcm5dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwb2xpY3kgc3RhdGVtZW50IGZvciBTTlMgdG9waWMgYWNjZXNzXG4gICAqXG4gICAqIEBwYXJhbSB0b3BpY0FybiBUaGUgQVJOIG9mIHRoZSBTTlMgdG9waWNcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIFNOUyBhY3Rpb25zIHRvIGFsbG93XG4gICAqIEByZXR1cm5zIFBvbGljeVN0YXRlbWVudCBmb3IgU05TIGFjY2Vzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTbnNQb2xpY3lTdGF0ZW1lbnQoXG4gICAgdG9waWNBcm46IHN0cmluZyxcbiAgICBhY3Rpb25zOiBzdHJpbmdbXSA9IFsnc25zOlB1Ymxpc2gnXSxcbiAgKTogaWFtLlBvbGljeVN0YXRlbWVudCB7XG4gICAgcmV0dXJuIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZXM6IFt0b3BpY0Fybl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBvbGljeSBzdGF0ZW1lbnQgZm9yIFN0ZXAgRnVuY3Rpb25zIGV4ZWN1dGlvblxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVNYWNoaW5lQXJuIFRoZSBBUk4gb2YgdGhlIFN0ZXAgRnVuY3Rpb25zIHN0YXRlIG1hY2hpbmVcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIFN0ZXAgRnVuY3Rpb25zIGFjdGlvbnMgdG8gYWxsb3dcbiAgICogQHJldHVybnMgUG9saWN5U3RhdGVtZW50IGZvciBTdGVwIEZ1bmN0aW9ucyBhY2Nlc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlU3RlcEZ1bmN0aW9uc1BvbGljeVN0YXRlbWVudChcbiAgICBzdGF0ZU1hY2hpbmVBcm46IHN0cmluZyxcbiAgICBhY3Rpb25zOiBzdHJpbmdbXSA9IFsnc3RhdGVzOlN0YXJ0RXhlY3V0aW9uJ10sXG4gICk6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQge1xuICAgIHJldHVybiBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VzOiBbc3RhdGVNYWNoaW5lQXJuXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcG9saWN5IHN0YXRlbWVudCBmb3IgU2VjcmV0cyBNYW5hZ2VyIGFjY2Vzc1xuICAgKlxuICAgKiBAcGFyYW0gc2VjcmV0QXJuIFRoZSBBUk4gb2YgdGhlIHNlY3JldFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgU2VjcmV0cyBNYW5hZ2VyIGFjdGlvbnMgdG8gYWxsb3dcbiAgICogQHJldHVybnMgUG9saWN5U3RhdGVtZW50IGZvciBTZWNyZXRzIE1hbmFnZXIgYWNjZXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVNlY3JldHNNYW5hZ2VyUG9saWN5U3RhdGVtZW50KFxuICAgIHNlY3JldEFybjogc3RyaW5nLFxuICAgIGFjdGlvbnM6IHN0cmluZ1tdID0gWydzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZSddLFxuICApOiBpYW0uUG9saWN5U3RhdGVtZW50IHtcbiAgICByZXR1cm4gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlczogW3NlY3JldEFybl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBvbGljeSBzdGF0ZW1lbnQgZm9yIEtNUyBrZXkgYWNjZXNzXG4gICAqXG4gICAqIEBwYXJhbSBrZXlBcm4gVGhlIEFSTiBvZiB0aGUgS01TIGtleVxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgS01TIGFjdGlvbnMgdG8gYWxsb3dcbiAgICogQHJldHVybnMgUG9saWN5U3RhdGVtZW50IGZvciBLTVMgYWNjZXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUttc1BvbGljeVN0YXRlbWVudChcbiAgICBrZXlBcm46IHN0cmluZyxcbiAgICBhY3Rpb25zOiBzdHJpbmdbXSA9IFsna21zOkRlY3J5cHQnLCAna21zOkdlbmVyYXRlRGF0YUtleSddLFxuICApOiBpYW0uUG9saWN5U3RhdGVtZW50IHtcbiAgICByZXR1cm4gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlczogW2tleUFybl0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWlhbS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3VzZS1jYXNlcy91dGlsaXRpZXMvbGFtYmRhLWlhbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QyxpREFBbUM7QUFDbkMsNkNBQW9DO0FBQ3BDLHlEQUEyQztBQWlFM0M7O0dBRUc7QUFDSCxNQUFhLGNBQWM7O0lBQ2xCLE1BQU0sQ0FBVSxvQkFBb0IsR0FBRyxVQUFVLENBQUM7SUFDekQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBaUM7UUFDbkUsMERBQTBEO1FBQzFELE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RHLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksZUFBZSxrQkFBa0IsRUFBRSxDQUFDO1FBQzdFLFlBQVksSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JGLElBQUksV0FBVyxHQUFHLGdCQUFnQixLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLGNBQWMsWUFBWSxFQUFFLENBQUM7UUFDNUYsTUFBTSxnQkFBZ0IsR0FBRztZQUN2QixpQ0FBaUM7WUFDakMsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUN0QixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUN4QixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEMsU0FBUyxFQUFFO29CQUNULFdBQVc7aUJBQ1o7YUFDRixDQUFDO1lBQ0Ysc0RBQXNEO1lBQ3RE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QXVCLENBQUM7UUFFN0MsT0FBTyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDN0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixPQUFPO1lBQ1AsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsbUNBQW1DLENBQy9DLFNBQWlCLEVBQ2pCLFVBQW9CLENBQUMsK0JBQStCLENBQUM7UUFFckQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDN0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztZQUN4QixPQUFPO1lBQ1AsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQ3BDLE1BQWMsRUFDZCxVQUFvQixDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQztRQUUxRCxPQUFPLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUM3QixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLE9BQU87WUFDUCxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUM7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEvUEgsd0NBZ1FDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IE5hbWVzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogU3RhY2sgaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFJYW1VdGlsc1N0YWNrSW5mbyB7XG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBMYW1iZGEgQ2xvdWRXYXRjaCBMb2dzIHBlcm1pc3Npb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhTG9nc1Blcm1pc3Npb25zUHJvcHMge1xuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdCBzY29wZSAodXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgbmFtZXMpXG4gICAqL1xuICByZWFkb25seSBzY29wZTogQ29uc3RydWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBuYW1lIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gbG9nIGdyb3VwIG5hbWUgcGF0dGVyblxuICAgKiBAZGVmYXVsdCAnL2F3cy9sYW1iZGEve3VuaXF1ZUZ1bmN0aW9uTmFtZX0nXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFXUyByZWdpb24gZm9yIHRoZSBsb2cgZ3JvdXAgQVJOXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogQVdTIGFjY291bnQgSUQgZm9yIHRoZSBsb2cgZ3JvdXAgQVJOXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb2JzZXJ2YWJpbGl0eSBpcyBlbmFibGVkIG9yIG5vdC4gVGhpcyB3b3VsZCBoYXZlIGFuIGltcGFjdFxuICAgKiBvbiB0aGUgcmVzdWx0IElBTSBwb2xpY3kgZm9yIHRoZSBMb2dHcm91cCBmb3IgdGhlIExhbWJkYSBmdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlT2JzZXJ2YWJpbGl0eT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGNyZWF0aW5nIExhbWJkYSBsb2dzIHBlcm1pc3Npb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhTG9nc1Blcm1pc3Npb25zUmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgc3RhdGVtZW50cyBmb3IgQ2xvdWRXYXRjaCBMb2dzXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lTdGF0ZW1lbnRzOiBpYW0uUG9saWN5U3RhdGVtZW50W107XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgZnVuY3Rpb24gbmFtZSB0aGF0IHdhcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHVuaXF1ZUZ1bmN0aW9uTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgZm9yIGNyZWF0aW5nIHNlY3VyZSBMYW1iZGEgSUFNIHBvbGljeSBzdGF0ZW1lbnRzIHdpdGggbWluaW1hbCBwZXJtaXNzaW9uc1xuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhSWFtVXRpbHMge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9CU0VSVkFCSUxJVFlfU1VGRklYID0gJy1zZWN1cmVkJztcbiAgLyoqXG4gICAqIENyZWF0ZXMgQ2xvdWRXYXRjaCBMb2dzIHBvbGljeSBzdGF0ZW1lbnRzIGZvciBMYW1iZGEgZXhlY3V0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBDb25maWd1cmF0aW9uIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgcG9saWN5IHN0YXRlbWVudHMgYW5kIHRoZSB1bmlxdWUgZnVuY3Rpb24gbmFtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVMb2dzUGVybWlzc2lvbnMocHJvcHM6IExhbWJkYUxvZ3NQZXJtaXNzaW9uc1Byb3BzKTogTGFtYmRhTG9nc1Blcm1pc3Npb25zUmVzdWx0IHtcbiAgICAvLyBHZW5lcmF0ZSB1bmlxdWUgZnVuY3Rpb24gbmFtZSB1c2luZyBjb25zdHJ1Y3Qgbm9kZSBwYXRoXG4gICAgY29uc3QgdW5pcXVlRnVuY3Rpb25OYW1lID0gTGFtYmRhSWFtVXRpbHMuZ2VuZXJhdGVVbmlxdWVGdW5jdGlvbk5hbWUocHJvcHMuc2NvcGUsIHByb3BzLmZ1bmN0aW9uTmFtZSk7XG4gICAgbGV0IGxvZ0dyb3VwTmFtZSA9IHByb3BzLmxvZ0dyb3VwTmFtZSB8fCBgL2F3cy9sYW1iZGEvJHt1bmlxdWVGdW5jdGlvbk5hbWV9YDtcbiAgICBsb2dHcm91cE5hbWUgKz0gcHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSA/IExhbWJkYUlhbVV0aWxzLk9CU0VSVkFCSUxJVFlfU1VGRklYIDogJyc7XG4gICAgbGV0IGxvZ0dyb3VwQXJuID0gYGFybjphd3M6bG9nczoke3Byb3BzLnJlZ2lvbn06JHtwcm9wcy5hY2NvdW50fTpsb2ctZ3JvdXA6JHtsb2dHcm91cE5hbWV9YDtcbiAgICBjb25zdCBwb2xpY3lTdGF0ZW1lbnRzID0gW1xuICAgICAgLy8gUGVybWlzc2lvbiB0byBjcmVhdGUgbG9nIGdyb3VwXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWydsb2dzOkNyZWF0ZUxvZ0dyb3VwJ10sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGxvZ0dyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgICAvLyBQZXJtaXNzaW9uIHRvIGNyZWF0ZSBsb2cgc3RyZWFtcyBhbmQgcHV0IGxvZyBldmVudHNcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJyxcbiAgICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBgJHtsb2dHcm91cEFybn06KmAsXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBvbGljeVN0YXRlbWVudHMsXG4gICAgICB1bmlxdWVGdW5jdGlvbk5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVMYW1iZGFWUENQZXJtaXNzaW9ucygpOiBpYW0uUG9saWN5U3RhdGVtZW50IHtcbiAgICByZXR1cm4gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnZWMyOkNyZWF0ZU5ldHdvcmtJbnRlcmZhY2UnLFxuICAgICAgICAnZWMyOkRlc2NyaWJlTmV0d29ya0ludGVyZmFjZXMnLFxuICAgICAgICAnZWMyOkRlc2NyaWJlU3VibmV0cycsXG4gICAgICAgICdlYzI6RGVsZXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICdlYzI6QXNzaWduUHJpdmF0ZUlwQWRkcmVzc2VzJyxcbiAgICAgICAgJ2VjMjpVbmFzc2lnblByaXZhdGVJcEFkZHJlc3NlcycsXG4gICAgICAgICdlYzI6RGVzY3JpYmVTZWN1cml0eUdyb3VwcycsXG4gICAgICAgICdlYzI6RGVzY3JpYmVWcGNzJyxcbiAgICAgICAgJ2VjMjpHZXRTZWN1cml0eUdyb3Vwc0ZvclZwYycsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgZnVuY3Rpb24gbmFtZSB1c2luZyBDREsncyBidWlsdC1pbiBmdW5jdGlvbmFsaXR5XG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBiYXNlTmFtZSBUaGUgYmFzZSBuYW1lIGZvciB0aGUgZnVuY3Rpb25cbiAgICogQHJldHVybnMgVW5pcXVlIGZ1bmN0aW9uIG5hbWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVVbmlxdWVGdW5jdGlvbk5hbWUoc2NvcGU6IENvbnN0cnVjdCwgYmFzZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2Jhc2VOYW1lfS0ke05hbWVzLnVuaXF1ZVJlc291cmNlTmFtZShzY29wZSwgeyBtYXhMZW5ndGg6IDY0IC0gKGJhc2VOYW1lLmxlbmd0aCArIDEpIH0pLnRvTG93ZXJDYXNlKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIFZQQyBwZXJtaXNzaW9ucyBmb3IgTGFtYmRhIGZ1bmN0aW9ucyBydW5uaW5nIGluIFZQQ1xuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBJQU0gUG9saWN5U3RhdGVtZW50cyBmb3IgVlBDIGFjY2Vzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVWcGNQZXJtaXNzaW9ucygpOiBpYW0uUG9saWN5U3RhdGVtZW50W10ge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdlYzI6Q3JlYXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZU5ldHdvcmtJbnRlcmZhY2VzJyxcbiAgICAgICAgICAnZWMyOkRlbGV0ZU5ldHdvcmtJbnRlcmZhY2UnLFxuICAgICAgICAgICdlYzI6QXR0YWNoTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICAgJ2VjMjpEZXRhY2hOZXR3b3JrSW50ZXJmYWNlJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSwgLy8gVlBDIHBlcm1pc3Npb25zIHJlcXVpcmUgd2lsZGNhcmQgcmVzb3VyY2VzXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgWC1SYXkgdHJhY2luZyBwZXJtaXNzaW9ucyBmb3IgTGFtYmRhIGZ1bmN0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBJQU0gUG9saWN5U3RhdGVtZW50cyBmb3IgWC1SYXkgdHJhY2luZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVYUmF5UGVybWlzc2lvbnMoKTogaWFtLlBvbGljeVN0YXRlbWVudFtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAneHJheTpQdXRUcmFjZVNlZ21lbnRzJyxcbiAgICAgICAgICAneHJheTpQdXRUZWxlbWV0cnlSZWNvcmRzJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSwgLy8gWC1SYXkgcGVybWlzc2lvbnMgcmVxdWlyZSB3aWxkY2FyZCByZXNvdXJjZXNcbiAgICAgIH0pLFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBnZXQgcmVnaW9uIGFuZCBhY2NvdW50IGZyb20gYSBjb25zdHJ1Y3RcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHJldHVybnMgTGFtYmRhSWFtVXRpbHNTdGFja0luZm9cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3RhY2tJbmZvKHNjb3BlOiBDb25zdHJ1Y3QpOiBMYW1iZGFJYW1VdGlsc1N0YWNrSW5mbyB7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpO1xuICAgIHJldHVybiB7XG4gICAgICByZWdpb246IHN0YWNrLnJlZ2lvbixcbiAgICAgIGFjY291bnQ6IHN0YWNrLmFjY291bnQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcG9saWN5IHN0YXRlbWVudCBmb3IgRHluYW1vREIgdGFibGUgYWNjZXNzXG4gICAqXG4gICAqIEBwYXJhbSB0YWJsZUFybiBUaGUgQVJOIG9mIHRoZSBEeW5hbW9EQiB0YWJsZVxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgRHluYW1vREIgYWN0aW9ucyB0byBhbGxvd1xuICAgKiBAcmV0dXJucyBQb2xpY3lTdGF0ZW1lbnQgZm9yIER5bmFtb0RCIGFjY2Vzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVEeW5hbW9EYlBvbGljeVN0YXRlbWVudChcbiAgICB0YWJsZUFybjogc3RyaW5nLFxuICAgIGFjdGlvbnM6IHN0cmluZ1tdID0gWydkeW5hbW9kYjpHZXRJdGVtJywgJ2R5bmFtb2RiOlB1dEl0ZW0nLCAnZHluYW1vZGI6VXBkYXRlSXRlbScsICdkeW5hbW9kYjpEZWxldGVJdGVtJywgJ2R5bmFtb2RiOlF1ZXJ5JywgJ2R5bmFtb2RiOlNjYW4nXSxcbiAgKTogaWFtLlBvbGljeVN0YXRlbWVudCB7XG4gICAgcmV0dXJuIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZXM6IFt0YWJsZUFybiwgYCR7dGFibGVBcm59L2luZGV4LypgXSwgLy8gSW5jbHVkZSBHU0kgYWNjZXNzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBvbGljeSBzdGF0ZW1lbnQgZm9yIFMzIGJ1Y2tldCBhY2Nlc3NcbiAgICpcbiAgICogQHBhcmFtIGJ1Y2tldEFybiBUaGUgQVJOIG9mIHRoZSBTMyBidWNrZXRcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIFMzIGFjdGlvbnMgdG8gYWxsb3dcbiAgICogQHBhcmFtIGluY2x1ZGVPYmplY3RzIFdoZXRoZXIgdG8gaW5jbHVkZSBvYmplY3QtbGV2ZWwgcGVybWlzc2lvbnNcbiAgICogQHJldHVybnMgUG9saWN5U3RhdGVtZW50IGZvciBTMyBhY2Nlc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlUzNQb2xpY3lTdGF0ZW1lbnQoXG4gICAgYnVja2V0QXJuOiBzdHJpbmcsXG4gICAgYWN0aW9uczogc3RyaW5nW10gPSBbJ3MzOkdldE9iamVjdCcsICdzMzpQdXRPYmplY3QnXSxcbiAgICBpbmNsdWRlT2JqZWN0czogYm9vbGVhbiA9IHRydWUsXG4gICk6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IFtidWNrZXRBcm5dO1xuICAgIGlmIChpbmNsdWRlT2JqZWN0cykge1xuICAgICAgcmVzb3VyY2VzLnB1c2goYCR7YnVja2V0QXJufS8qYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBvbGljeSBzdGF0ZW1lbnQgZm9yIFNRUyBxdWV1ZSBhY2Nlc3NcbiAgICpcbiAgICogQHBhcmFtIHF1ZXVlQXJuIFRoZSBBUk4gb2YgdGhlIFNRUyBxdWV1ZVxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgU1FTIGFjdGlvbnMgdG8gYWxsb3dcbiAgICogQHJldHVybnMgUG9saWN5U3RhdGVtZW50IGZvciBTUVMgYWNjZXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVNxc1BvbGljeVN0YXRlbWVudChcbiAgICBxdWV1ZUFybjogc3RyaW5nLFxuICAgIGFjdGlvbnM6IHN0cmluZ1tdID0gWydzcXM6UmVjZWl2ZU1lc3NhZ2UnLCAnc3FzOkRlbGV0ZU1lc3NhZ2UnLCAnc3FzOkdldFF1ZXVlQXR0cmlidXRlcyddLFxuICApOiBpYW0uUG9saWN5U3RhdGVtZW50IHtcbiAgICByZXR1cm4gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlczogW3F1ZXVlQXJuXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcG9saWN5IHN0YXRlbWVudCBmb3IgU05TIHRvcGljIGFjY2Vzc1xuICAgKlxuICAgKiBAcGFyYW0gdG9waWNBcm4gVGhlIEFSTiBvZiB0aGUgU05TIHRvcGljXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBTTlMgYWN0aW9ucyB0byBhbGxvd1xuICAgKiBAcmV0dXJucyBQb2xpY3lTdGF0ZW1lbnQgZm9yIFNOUyBhY2Nlc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlU25zUG9saWN5U3RhdGVtZW50KFxuICAgIHRvcGljQXJuOiBzdHJpbmcsXG4gICAgYWN0aW9uczogc3RyaW5nW10gPSBbJ3NuczpQdWJsaXNoJ10sXG4gICk6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQge1xuICAgIHJldHVybiBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VzOiBbdG9waWNBcm5dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwb2xpY3kgc3RhdGVtZW50IGZvciBTdGVwIEZ1bmN0aW9ucyBleGVjdXRpb25cbiAgICpcbiAgICogQHBhcmFtIHN0YXRlTWFjaGluZUFybiBUaGUgQVJOIG9mIHRoZSBTdGVwIEZ1bmN0aW9ucyBzdGF0ZSBtYWNoaW5lXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBTdGVwIEZ1bmN0aW9ucyBhY3Rpb25zIHRvIGFsbG93XG4gICAqIEByZXR1cm5zIFBvbGljeVN0YXRlbWVudCBmb3IgU3RlcCBGdW5jdGlvbnMgYWNjZXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVN0ZXBGdW5jdGlvbnNQb2xpY3lTdGF0ZW1lbnQoXG4gICAgc3RhdGVNYWNoaW5lQXJuOiBzdHJpbmcsXG4gICAgYWN0aW9uczogc3RyaW5nW10gPSBbJ3N0YXRlczpTdGFydEV4ZWN1dGlvbiddLFxuICApOiBpYW0uUG9saWN5U3RhdGVtZW50IHtcbiAgICByZXR1cm4gbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlczogW3N0YXRlTWFjaGluZUFybl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBvbGljeSBzdGF0ZW1lbnQgZm9yIFNlY3JldHMgTWFuYWdlciBhY2Nlc3NcbiAgICpcbiAgICogQHBhcmFtIHNlY3JldEFybiBUaGUgQVJOIG9mIHRoZSBzZWNyZXRcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIFNlY3JldHMgTWFuYWdlciBhY3Rpb25zIHRvIGFsbG93XG4gICAqIEByZXR1cm5zIFBvbGljeVN0YXRlbWVudCBmb3IgU2VjcmV0cyBNYW5hZ2VyIGFjY2Vzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTZWNyZXRzTWFuYWdlclBvbGljeVN0YXRlbWVudChcbiAgICBzZWNyZXRBcm46IHN0cmluZyxcbiAgICBhY3Rpb25zOiBzdHJpbmdbXSA9IFsnc2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWUnXSxcbiAgKTogaWFtLlBvbGljeVN0YXRlbWVudCB7XG4gICAgcmV0dXJuIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZXM6IFtzZWNyZXRBcm5dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwb2xpY3kgc3RhdGVtZW50IGZvciBLTVMga2V5IGFjY2Vzc1xuICAgKlxuICAgKiBAcGFyYW0ga2V5QXJuIFRoZSBBUk4gb2YgdGhlIEtNUyBrZXlcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIEtNUyBhY3Rpb25zIHRvIGFsbG93XG4gICAqIEByZXR1cm5zIFBvbGljeVN0YXRlbWVudCBmb3IgS01TIGFjY2Vzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVLbXNQb2xpY3lTdGF0ZW1lbnQoXG4gICAga2V5QXJuOiBzdHJpbmcsXG4gICAgYWN0aW9uczogc3RyaW5nW10gPSBbJ2ttczpEZWNyeXB0JywgJ2ttczpHZW5lcmF0ZURhdGFLZXknXSxcbiAgKTogaWFtLlBvbGljeVN0YXRlbWVudCB7XG4gICAgcmV0dXJuIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZXM6IFtrZXlBcm5dLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,15 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
+
var ownKeys = function(o) {
|
|
22
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
+
var ar = [];
|
|
24
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
return ownKeys(o);
|
|
28
|
+
};
|
|
29
|
+
return function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
4
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
38
|
exports.DataMaskingLayerConstruct = void 0;
|
|
6
|
-
const path = require("path");
|
|
7
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
|
|
8
41
|
const constructs_1 = require("constructs");
|
|
9
42
|
/**
|
|
10
43
|
* Construct that creates a Lambda layer for data masking
|
|
11
44
|
*/
|
|
12
45
|
class DataMaskingLayerConstruct extends constructs_1.Construct {
|
|
46
|
+
/**
|
|
47
|
+
* The Lambda layer containing masking utilities
|
|
48
|
+
*/
|
|
49
|
+
layer;
|
|
13
50
|
constructor(scope, id, props = {}) {
|
|
14
51
|
super(scope, id);
|
|
15
52
|
// Create the Lambda layer
|
|
@@ -50,4 +87,4 @@ class DataMaskingLayerConstruct extends constructs_1.Construct {
|
|
|
50
87
|
}
|
|
51
88
|
}
|
|
52
89
|
exports.DataMaskingLayerConstruct = DataMaskingLayerConstruct;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdXNlLWNhc2VzL3V0aWxpdGllcy9sYW1iZGFfbGF5ZXJzL2RhdGEtbWFza2luZy9sYXllci1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0QywyQ0FBNkI7QUFDN0IsK0RBQWlEO0FBQ2pELDJDQUF1QztBQTZCdkM7O0dBRUc7QUFDSCxNQUFhLHlCQUEwQixTQUFRLHNCQUFTO0lBQ3REOztPQUVHO0lBQ2EsS0FBSyxDQUFzQjtJQUUzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQStCLEVBQUU7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQzdELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDO1lBQ2xHLGtCQUFrQixFQUFFO2dCQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2FBQzNCO1lBQ0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUkseUNBQXlDO1lBQzNFLE9BQU8sRUFBRSxZQUFZO1NBQ3RCLENBQUMsQ0FBQztRQUVILGdEQUFnRDtRQUNoRCxNQUFNLGVBQWUsR0FBRztZQUN0QixNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVU7U0FDMUQsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsRUFBbUIsRUFBRSxhQUF3QztRQUNoRixnQ0FBZ0M7UUFDaEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekIsd0NBQXdDO1FBQ3hDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWxERCw4REFrREMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgRGF0YU1hc2tpbmdMYXllckNvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFNYXNraW5nTGF5ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIExhbWJkYSBsYXllclxuICAgKiBAZGVmYXVsdCAnTGFtYmRhIGxheWVyIGZvciBtYXNraW5nIHNlbnNpdGl2ZSBkYXRhIGluIGRvY3VtZW50IHByb2Nlc3NpbmcnXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIG1hc2tpbmcgcGF0dGVybnMgdG8gYWRkIHRvIHRoZSBkZWZhdWx0IG9uZXNcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGN1c3RvbVBhdHRlcm5zPzogUmVjb3JkPHN0cmluZywge1xuICAgIC8qKlxuICAgICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIGFzIHN0cmluZ1xuICAgICAqL1xuICAgIHJlZ2V4OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNYXNrIHRvIGFwcGx5IChzdHJpbmcgb3IgZnVuY3Rpb24gbmFtZSlcbiAgICAgKi9cbiAgICBtYXNrOiBzdHJpbmc7XG4gIH0+O1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBMYW1iZGEgbGF5ZXIgZm9yIGRhdGEgbWFza2luZ1xuICovXG5leHBvcnQgY2xhc3MgRGF0YU1hc2tpbmdMYXllckNvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIGxheWVyIGNvbnRhaW5pbmcgbWFza2luZyB1dGlsaXRpZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsYXllcjogbGFtYmRhLkxheWVyVmVyc2lvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YU1hc2tpbmdMYXllclByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBMYW1iZGEgbGF5ZXJcbiAgICB0aGlzLmxheWVyID0gbmV3IGxhbWJkYS5MYXllclZlcnNpb24odGhpcywgJ0RhdGFNYXNraW5nTGF5ZXInLCB7XG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLy4uL3V0aWxpdGllcy9sYW1iZGFfbGF5ZXJzL2RhdGEtbWFza2luZycpKSxcbiAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW1xuICAgICAgICBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgICAgbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICAgIGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbiB8fCAnTGFtYmRhIGxheWVyIGZvciBtYXNraW5nIHNlbnNpdGl2ZSBkYXRhJyxcbiAgICAgIGxpY2Vuc2U6ICdBcGFjaGUtMi4wJyxcbiAgICB9KTtcblxuICAgIC8vIEFkZCBtZXRhZGF0YSBhYm91dCBhdmFpbGFibGUgbWFza2luZyBwYXR0ZXJuc1xuICAgIGNvbnN0IGRlZmF1bHRQYXR0ZXJucyA9IFtcbiAgICAgICducmljJywgJ3NzbicsICdjcmVkaXRDYXJkJywgJ2VtYWlsJywgJ3Bob25lJywgJ3Bhc3Nwb3J0JyxcbiAgICBdO1xuXG4gICAgLy8gQWRkIGN1c3RvbSBwYXR0ZXJucyBpZiBwcm92aWRlZFxuICAgIGNvbnN0IGFsbFBhdHRlcm5zID0gWy4uLmRlZmF1bHRQYXR0ZXJuc107XG4gICAgaWYgKHByb3BzLmN1c3RvbVBhdHRlcm5zKSB7XG4gICAgICBhbGxQYXR0ZXJucy5wdXNoKC4uLk9iamVjdC5rZXlzKHByb3BzLmN1c3RvbVBhdHRlcm5zKSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGFkYXRhIHRvIHRoZSBjb25zdHJ1Y3RcbiAgICB0aGlzLm5vZGUuYWRkTWV0YWRhdGEoJ21hc2tpbmdQYXR0ZXJucycsIGFsbFBhdHRlcm5zLmpvaW4oJywgJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIG1hc2tpbmcgbGF5ZXIgdG8gYSBMYW1iZGEgZnVuY3Rpb25cbiAgICogQHBhcmFtIGZuIExhbWJkYSBmdW5jdGlvbiB0byBhZGQgdGhlIGxheWVyIHRvXG4gICAqIEBwYXJhbSBtYXNraW5nQ29uZmlnIE9wdGlvbmFsIG1hc2tpbmcgY29uZmlndXJhdGlvbiB0byBhZGQgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICovXG4gIHB1YmxpYyBhZGRUb0Z1bmN0aW9uKGZuOiBsYW1iZGEuRnVuY3Rpb24sIG1hc2tpbmdDb25maWc/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4pOiB2b2lkIHtcbiAgICAvLyBBZGQgdGhlIGxheWVyIHRvIHRoZSBmdW5jdGlvblxuICAgIGZuLmFkZExheWVycyh0aGlzLmxheWVyKTtcblxuICAgIC8vIEFkZCBtYXNraW5nIGNvbmZpZ3VyYXRpb24gaWYgcHJvdmlkZWRcbiAgICBpZiAobWFza2luZ0NvbmZpZykge1xuICAgICAgZm4uYWRkRW52aXJvbm1lbnQoJ01BU0tJTkdfQ09ORklHJywgSlNPTi5zdHJpbmdpZnkobWFza2luZ0NvbmZpZykpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.BedrockObservability = void 0;
|
|
4
|
-
const path = require("path");
|
|
37
|
+
const path = __importStar(require("path"));
|
|
5
38
|
const aws_lambda_python_alpha_1 = require("@aws-cdk/aws-lambda-python-alpha");
|
|
6
39
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
40
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
@@ -13,6 +46,9 @@ const constructs_1 = require("constructs");
|
|
|
13
46
|
const default_runtimes_1 = require("../../framework/custom-resource/default-runtimes");
|
|
14
47
|
const lambda_iam_utils_1 = require("../lambda-iam-utils");
|
|
15
48
|
class BedrockObservability extends constructs_1.Construct {
|
|
49
|
+
logGroup;
|
|
50
|
+
loggingRole;
|
|
51
|
+
encryptionKey;
|
|
16
52
|
constructor(scope, id, props) {
|
|
17
53
|
super(scope, id);
|
|
18
54
|
const { region, account } = aws_cdk_lib_1.Stack.of(this);
|
|
@@ -128,4 +164,4 @@ class BedrockObservability extends constructs_1.Construct {
|
|
|
128
164
|
}
|
|
129
165
|
}
|
|
130
166
|
exports.BedrockObservability = BedrockObservability;
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVkcm9jay1vYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdXNlLWNhc2VzL3V0aWxpdGllcy9vYnNlcnZhYmlsaXR5L2JlZHJvY2stb2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsOEVBQWtFO0FBQ2xFLDZDQUEwRTtBQUMxRSxpREFBc0c7QUFDdEcsaURBQTBDO0FBQzFDLHVEQUFzRDtBQUN0RCxtREFBc0U7QUFDdEUsbUVBQXdEO0FBQ3hELDJDQUF1QztBQUV2Qyx1RkFBbUY7QUFDbkYsMERBQXFEO0FBU3JELE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7SUFLakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0MsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLG1CQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO1lBQ2xFLFNBQVMsRUFBRSxHQUFHO1NBQ2YsQ0FBQyxFQUFFLENBQUM7UUFFTCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsTUFBTSxJQUFJLE9BQU8sY0FBYyxZQUFZLEVBQUUsQ0FBQztRQUNsRixNQUFNLFlBQVksR0FBRyxHQUFHLFdBQVcsMENBQTBDLENBQUM7UUFFOUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLElBQUksSUFBSSxhQUFHLENBQUMsSUFBSSxFQUFFLHVDQUF1QyxFQUFFO1lBQ2xJLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUM1RCxpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsSUFBSSwwQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRTtZQUNoRixVQUFVLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFO29CQUNULG9DQUFvQyxFQUFFLFdBQVc7aUJBQ2xEO2FBQ0Y7U0FDRixDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSwyQkFBMkIsRUFBRTtZQUM5RCxZQUFZO1lBQ1osYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUM1RCxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksK0JBQW9CLENBQUM7Z0JBQ3hHLFdBQVcsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUseUJBQXlCO2FBQ3RFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNmLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLFdBQVcsSUFBSSxJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEVBQUU7WUFDdEYsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsdUJBQXVCLEVBQUU7Z0JBQ3ZELFVBQVUsRUFBRTtvQkFDVixZQUFZLEVBQUU7d0JBQ1osbUJBQW1CLEVBQUUsT0FBTztxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGVBQWUsRUFBRSxtQkFBbUIsTUFBTSxJQUFJLE9BQU8sSUFBSTtxQkFDMUQ7aUJBQ0Y7YUFDRixDQUFDO1lBQ0YsY0FBYyxFQUFFO2dCQUNkLG9CQUFvQixFQUFFLElBQUksd0JBQWMsQ0FBQztvQkFDdkMsVUFBVSxFQUFFO3dCQUNWLElBQUkseUJBQWUsQ0FBQzs0QkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSzs0QkFDcEIsT0FBTyxFQUFFO2dDQUNQLHNCQUFzQjtnQ0FDdEIsbUJBQW1COzZCQUNwQjs0QkFDRCxTQUFTLEVBQUU7Z0NBQ1QsWUFBWTs2QkFDYjt5QkFDRixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILDRDQUE0QztRQUM1QyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7WUFDNUQsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkQsY0FBYyxFQUFFO2dCQUNkLDBCQUEwQixFQUFFLElBQUksd0JBQWMsQ0FBQztvQkFDN0MsVUFBVSxFQUFFO3dCQUNWLElBQUkseUJBQWUsQ0FBQzs0QkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSzs0QkFDcEIsT0FBTyxFQUFFO2dDQUNQLGdEQUFnRDtnQ0FDaEQsZ0RBQWdEOzZCQUNqRDs0QkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7eUJBQ2pCLENBQUM7d0JBQ0YsSUFBSSx5QkFBZSxDQUFDOzRCQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLOzRCQUNwQixPQUFPLEVBQUU7Z0NBQ1AsY0FBYzs2QkFDZjs0QkFDRCxTQUFTLEVBQUU7Z0NBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPOzZCQUN6Qjt5QkFDRixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sdUJBQXVCLEdBQUcsaUNBQWMsQ0FBQyxxQkFBcUIsQ0FBQztZQUNuRSxPQUFPO1lBQ1AsWUFBWSxFQUFFLGlDQUFpQztZQUMvQyxNQUFNO1lBQ04sS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7UUFFSCw0REFBNEQ7UUFDNUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLHdDQUFjLENBQUMsSUFBSSxFQUFFLDhCQUE4QixFQUFFO1lBQ3JGLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxrQkFBa0I7WUFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxzQ0FBc0MsQ0FBQztZQUNoRixPQUFPLEVBQUUsa0NBQWUsQ0FBQyxNQUFNO1lBQy9CLFlBQVksRUFBRSx5QkFBWSxDQUFDLE1BQU07WUFDakMsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQyxDQUFDO1FBRUgsS0FBSyxNQUFNLFNBQVMsSUFBSSx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pFLHFCQUFxQixDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksMkJBQVEsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDNUQsY0FBYyxFQUFFLHFCQUFxQjtTQUN0QyxDQUFDLENBQUM7UUFFSCwrQ0FBK0M7UUFDL0MsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUMvQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDbkMsVUFBVSxFQUFFO2dCQUNWLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVk7Z0JBQ3hDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87Z0JBQ2pDLFFBQVEsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLElBQUksS0FBSzthQUN4RDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWxJRCxvREFrSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUHl0aG9uRnVuY3Rpb24gfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYSc7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgTmFtZXMsIFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUm9sZSwgU2VydmljZVByaW5jaXBhbCwgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QsIFBvbGljeURvY3VtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgRGF0YVByb3RlY3Rpb25Qb2xpY3ksIExvZ0dyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgTG9nR3JvdXBEYXRhUHJvdGVjdGlvblByb3BzIH0gZnJvbSAnLi9sb2ctZ3JvdXAtZGF0YS1wcm90ZWN0aW9uLXByb3BzJztcbmltcG9ydCB7IERlZmF1bHRSdW50aW1lcyB9IGZyb20gJy4uLy4uL2ZyYW1ld29yay9jdXN0b20tcmVzb3VyY2UvZGVmYXVsdC1ydW50aW1lcyc7XG5pbXBvcnQgeyBMYW1iZGFJYW1VdGlscyB9IGZyb20gJy4uL2xhbWJkYS1pYW0tdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJlZHJvY2tPYnNlcnZhYmlsaXR5UHJvcHMge1xuICByZWFkb25seSBsb2dHcm91cERhdGFQcm90ZWN0aW9uPzogTG9nR3JvdXBEYXRhUHJvdGVjdGlvblByb3BzO1xuICByZWFkb25seSBsb2dnaW5nUm9sZT86IFJvbGU7XG4gIHJlYWRvbmx5IG92ZXJyaWRlRXhpc3RpbmdDb25maWd1cmF0aW9uPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbmV4cG9ydCBjbGFzcyBCZWRyb2NrT2JzZXJ2YWJpbGl0eSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBMb2dHcm91cDtcbiAgcmVhZG9ubHkgbG9nZ2luZ1JvbGU6IFJvbGU7XG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk6IEtleTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEJlZHJvY2tPYnNlcnZhYmlsaXR5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHsgcmVnaW9uLCBhY2NvdW50IH0gPSBTdGFjay5vZih0aGlzKTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwTmFtZSA9IGAvYXdzL2JlZHJvY2svJHtOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgbWF4TGVuZ3RoOiAxMDAsXG4gICAgfSl9YDtcblxuICAgIGNvbnN0IGxvZ0dyb3VwQXJuID0gYGFybjphd3M6bG9nczoke3JlZ2lvbn06JHthY2NvdW50fTpsb2ctZ3JvdXA6JHtsb2dHcm91cE5hbWV9YDtcbiAgICBjb25zdCBsb2dTdHJlYW1Bcm4gPSBgJHtsb2dHcm91cEFybn06bG9nLXN0cmVhbTphd3MvYmVkcm9jay9tb2RlbGludm9jYXRpb25zYDtcblxuICAgIHRoaXMuZW5jcnlwdGlvbktleSA9IHByb3BzPy5sb2dHcm91cERhdGFQcm90ZWN0aW9uPy5sb2dHcm91cEVuY3J5cHRpb25LZXkgfHwgbmV3IEtleSh0aGlzLCAnQmVkcm9ja0ludm9jYXRpb25Mb2dnaW5nRW5jcnlwdGlvbktleScsIHtcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGVuYWJsZUtleVJvdGF0aW9uOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5LmdyYW50RW5jcnlwdERlY3J5cHQobmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xvZ3MuYW1hem9uYXdzLmNvbScsIHtcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgQXJuRXF1YWxzOiB7XG4gICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDphd3M6bG9nczphcm4nOiBsb2dHcm91cEFybixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuXG4gICAgdGhpcy5sb2dHcm91cCA9IG5ldyBMb2dHcm91cCh0aGlzLCAnQmVkcm9ja0ludm9jYXRpb25Mb2dHcm91cCcsIHtcbiAgICAgIGxvZ0dyb3VwTmFtZSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGRhdGFQcm90ZWN0aW9uUG9saWN5OiBwcm9wcz8ubG9nR3JvdXBEYXRhUHJvdGVjdGlvbj8uZGF0YVByb3RlY3Rpb25JZGVudGlmaWVycyA/IG5ldyBEYXRhUHJvdGVjdGlvblBvbGljeSh7XG4gICAgICAgIGlkZW50aWZpZXJzOiBwcm9wcz8ubG9nR3JvdXBEYXRhUHJvdGVjdGlvbj8uZGF0YVByb3RlY3Rpb25JZGVudGlmaWVycyxcbiAgICAgIH0pIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2dnaW5nUm9sZSA9IHByb3BzPy5sb2dnaW5nUm9sZSB8fCBuZXcgUm9sZSh0aGlzLCAnQmVkcm9ja0ludm9jYXRpb25Mb2dnaW5nUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2JlZHJvY2suYW1hem9uYXdzLmNvbScsIHtcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2F3czpTb3VyY2VBY2NvdW50JzogYWNjb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEFybkxpa2U6IHtcbiAgICAgICAgICAgICdhd3M6U291cmNlQXJuJzogYGFybjphd3M6YmVkcm9jazoke3JlZ2lvbn06JHthY2NvdW50fToqYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBCZWRyb2NrTG9nZ2luZ1BvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAgICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cycsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGxvZ1N0cmVhbUFybixcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIExhbWJkYSBmdW5jdGlvbiByb2xlIHdpdGggbGVhc3QgcHJpdmlsZWdlXG4gICAgY29uc3QgbGFtYmRhUm9sZSA9IG5ldyBSb2xlKHRoaXMsICdCZWRyb2NrTG9nZ2luZ0NvbmZpZ1JvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgQmVkcm9ja0xvZ2dpbmdDb25maWdQb2xpY3k6IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ2JlZHJvY2s6R2V0TW9kZWxJbnZvY2F0aW9uTG9nZ2luZ0NvbmZpZ3VyYXRpb24nLFxuICAgICAgICAgICAgICAgICdiZWRyb2NrOlB1dE1vZGVsSW52b2NhdGlvbkxvZ2dpbmdDb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ2lhbTpQYXNzUm9sZScsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2luZ1JvbGUucm9sZUFybixcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zID0gTGFtYmRhSWFtVXRpbHMuY3JlYXRlTG9nc1Blcm1pc3Npb25zKHtcbiAgICAgIGFjY291bnQsXG4gICAgICBmdW5jdGlvbk5hbWU6ICdiZWRyb2NrLW1hbmFnZS1sb2dnaW5nLWZ1bmN0aW9uJyxcbiAgICAgIHJlZ2lvbixcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgLy8gUHl0aG9uRnVuY3Rpb24gZm9yIG1hbmFnaW5nIEJlZHJvY2sgbG9nZ2luZyBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgbWFuYWdlTG9nZ2luZ0Z1bmN0aW9uID0gbmV3IFB5dGhvbkZ1bmN0aW9uKHRoaXMsICdCZWRyb2NrTWFuYWdlTG9nZ2luZ0Z1bmN0aW9uJywge1xuICAgICAgZnVuY3Rpb25OYW1lOiBnZW5lcmF0ZWRMb2dQZXJtaXNzaW9ucy51bmlxdWVGdW5jdGlvbk5hbWUsXG4gICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3Jlc291cmNlcycsICdiZWRyb2NrLW1hbmFnZS1sb2dnaW5nLWNvbmZpZ3VyYXRpb24nKSxcbiAgICAgIHJ1bnRpbWU6IERlZmF1bHRSdW50aW1lcy5QWVRIT04sXG4gICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgICByb2xlOiBsYW1iZGFSb2xlLFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgZ2VuZXJhdGVkTG9nUGVybWlzc2lvbnMucG9saWN5U3RhdGVtZW50cykge1xuICAgICAgbWFuYWdlTG9nZ2luZ0Z1bmN0aW9uLnJvbGU/LmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gQ3VzdG9tIHJlc291cmNlIHByb3ZpZGVyXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIodGhpcywgJ0JlZHJvY2tMb2dnaW5nUHJvdmlkZXInLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogbWFuYWdlTG9nZ2luZ0Z1bmN0aW9uLFxuICAgIH0pO1xuXG4gICAgLy8gQ3VzdG9tIHJlc291cmNlIHRvIGNvbmZpZ3VyZSBCZWRyb2NrIGxvZ2dpbmdcbiAgICBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0JlZHJvY2tMb2dnaW5nQ29uZmlnJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogdGhpcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgIHJvbGVBcm46IHRoaXMubG9nZ2luZ1JvbGUucm9sZUFybixcbiAgICAgICAgb3ZlcnJpZGU6IHByb3BzPy5vdmVycmlkZUV4aXN0aW5nQ29uZmlndXJhdGlvbiB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn0iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVkcm9jay1vYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdXNlLWNhc2VzL3V0aWxpdGllcy9vYnNlcnZhYmlsaXR5L2JlZHJvY2stb2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsOEVBQWtFO0FBQ2xFLDZDQUEwRTtBQUMxRSxpREFBc0c7QUFDdEcsaURBQTBDO0FBQzFDLHVEQUFzRDtBQUN0RCxtREFBc0U7QUFDdEUsbUVBQXdEO0FBQ3hELDJDQUF1QztBQUV2Qyx1RkFBbUY7QUFDbkYsMERBQXFEO0FBU3JELE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7SUFDeEMsUUFBUSxDQUFXO0lBQ25CLFdBQVcsQ0FBTztJQUNsQixhQUFhLENBQU07SUFFNUIsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0MsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLG1CQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO1lBQ2xFLFNBQVMsRUFBRSxHQUFHO1NBQ2YsQ0FBQyxFQUFFLENBQUM7UUFFTCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsTUFBTSxJQUFJLE9BQU8sY0FBYyxZQUFZLEVBQUUsQ0FBQztRQUNsRixNQUFNLFlBQVksR0FBRyxHQUFHLFdBQVcsMENBQTBDLENBQUM7UUFFOUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLElBQUksSUFBSSxhQUFHLENBQUMsSUFBSSxFQUFFLHVDQUF1QyxFQUFFO1lBQ2xJLGFBQWEsRUFBRSxL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Q3JGLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxrQkFBa0I7WUFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxzQ0FBc0MsQ0FBQztZQUNoRixPQUFPLEVBQUUsa0NBQWUsQ0FBQyxNQUFNO1lBQy9CLFlBQVksRUFBRSx5QkFBWSxDQUFDLE1BQU07WUFDakMsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQyxDQUFDO1FBRUgsS0FBSyxNQUFNLFNBQVMsSUFBSSx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pFLHFCQUFxQixDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksMkJBQVEsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDNUQsY0FBYyxFQUFFLHFCQUFxQjtTQUN0QyxDQUFDLENBQUM7UUFFSCwrQ0FBK0M7UUFDL0MsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUMvQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDbkMsVUFBVSxFQUFFO2dCQUNWLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVk7Z0JBQ3hDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU87Z0JBQ2pDLFFBQVEsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLElBQUksS0FBSzthQUN4RDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWxJRCxvREFrSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUHl0aG9uRnVuY3Rpb24gfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYSc7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgTmFtZXMsIFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUm9sZSwgU2VydmljZVByaW5jaXBhbCwgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QsIFBvbGljeURvY3VtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgRGF0YVByb3RlY3Rpb25Qb2xpY3ksIExvZ0dyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgTG9nR3JvdXBEYXRhUHJvdGVjdGlvblByb3BzIH0gZnJvbSAnLi9sb2ctZ3JvdXAtZGF0YS1wcm90ZWN0aW9uLXByb3BzJztcbmltcG9ydCB7IERlZmF1bHRSdW50aW1lcyB9IGZyb20gJy4uLy4uL2ZyYW1ld29yay9jdXN0b20tcmVzb3VyY2UvZGVmYXVsdC1ydW50aW1lcyc7XG5pbXBvcnQgeyBMYW1iZGFJYW1VdGlscyB9IGZyb20gJy4uL2xhbWJkYS1pYW0tdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJlZHJvY2tPYnNlcnZhYmlsaXR5UHJvcHMge1xuICByZWFkb25seSBsb2dHcm91cERhdGFQcm90ZWN0aW9uPzogTG9nR3JvdXBEYXRhUHJvdGVjdGlvblByb3BzO1xuICByZWFkb25seSBsb2dnaW5nUm9sZT86IFJvbGU7XG4gIHJlYWRvbmx5IG92ZXJyaWRlRXhpc3RpbmdDb25maWd1cmF0aW9uPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbmV4cG9ydCBjbGFzcyBCZWRyb2NrT2JzZXJ2YWJpbGl0eSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBMb2dHcm91cDtcbiAgcmVhZG9ubHkgbG9nZ2luZ1JvbGU6IFJvbGU7XG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk6IEtleTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEJlZHJvY2tPYnNlcnZhYmlsaXR5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHsgcmVnaW9uLCBhY2NvdW50IH0gPSBTdGFjay5vZih0aGlzKTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwTmFtZSA9IGAvYXdzL2JlZHJvY2svJHtOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgbWF4TGVuZ3RoOiAxMDAsXG4gICAgfSl9YDtcblxuICAgIGNvbnN0IGxvZ0dyb3VwQXJuID0gYGFybjphd3M6bG9nczoke3JlZ2lvbn06JHthY2NvdW50fTpsb2ctZ3JvdXA6JHtsb2dHcm91cE5hbWV9YDtcbiAgICBjb25zdCBsb2dTdHJlYW1Bcm4gPSBgJHtsb2dHcm91cEFybn06bG9nLXN0cmVhbTphd3MvYmVkcm9jay9tb2RlbGludm9jYXRpb25zYDtcblxuICAgIHRoaXMuZW5jcnlwdGlvbktleSA9IHByb3BzPy5sb2dHcm91cERhdGFQcm90ZWN0aW9uPy5sb2dHcm91cEVuY3J5cHRpb25LZXkgfHwgbmV3IEtleSh0aGlzLCAnQmVkcm9ja0ludm9jYXRpb25Mb2dnaW5nRW5jcnlwdGlvbktleScsIHtcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGVuYWJsZUtleVJvdGF0aW9uOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5LmdyYW50RW5jcnlwdERlY3J5cHQobmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xvZ3MuYW1hem9uYXdzLmNvbScsIHtcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgQXJuRXF1YWxzOiB7XG4gICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDphd3M6bG9nczphcm4nOiBsb2dHcm91cEFybixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuXG4gICAgdGhpcy5sb2dHcm91cCA9IG5ldyBMb2dHcm91cCh0aGlzLCAnQmVkcm9ja0ludm9jYXRpb25Mb2dHcm91cCcsIHtcbiAgICAgIGxvZ0dyb3VwTmFtZSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGRhdGFQcm90ZWN0aW9uUG9saWN5OiBwcm9wcz8ubG9nR3JvdXBEYXRhUHJvdGVjdGlvbj8uZGF0YVByb3RlY3Rpb25JZGVudGlmaWVycyA/IG5ldyBEYXRhUHJvdGVjdGlvblBvbGljeSh7XG4gICAgICAgIGlkZW50aWZpZXJzOiBwcm9wcz8ubG9nR3JvdXBEYXRhUHJvdGVjdGlvbj8uZGF0YVByb3RlY3Rpb25JZGVudGlmaWVycyxcbiAgICAgIH0pIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2dnaW5nUm9sZSA9IHByb3BzPy5sb2dnaW5nUm9sZSB8fCBuZXcgUm9sZSh0aGlzLCAnQmVkcm9ja0ludm9jYXRpb25Mb2dnaW5nUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2JlZHJvY2suYW1hem9uYXdzLmNvbScsIHtcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2F3czpTb3VyY2VBY2NvdW50JzogYWNjb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEFybkxpa2U6IHtcbiAgICAgICAgICAgICdhd3M6U291cmNlQXJuJzogYGFybjphd3M6YmVkcm9jazoke3JlZ2lvbn06JHthY2NvdW50fToqYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBCZWRyb2NrTG9nZ2luZ1BvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAgICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cycsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGxvZ1N0cmVhbUFybixcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIExhbWJkYSBmdW5jdGlvbiByb2xlIHdpdGggbGVhc3QgcHJpdmlsZWdlXG4gICAgY29uc3QgbGFtYmRhUm9sZSA9IG5ldyBSb2xlKHRoaXMsICdCZWRyb2NrTG9nZ2luZ0NvbmZpZ1JvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgQmVkcm9ja0xvZ2dpbmdDb25maWdQb2xpY3k6IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ2JlZHJvY2s6R2V0TW9kZWxJbnZvY2F0aW9uTG9nZ2luZ0NvbmZpZ3VyYXRpb24nLFxuICAgICAgICAgICAgICAgICdiZWRyb2NrOlB1dE1vZGVsSW52b2NhdGlvbkxvZ2dpbmdDb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ2lhbTpQYXNzUm9sZScsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2luZ1JvbGUucm9sZUFybixcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zID0gTGFtYmRhSWFtVXRpbHMuY3JlYXRlTG9nc1Blcm1pc3Npb25zKHtcbiAgICAgIGFjY291bnQsXG4gICAgICBmdW5jdGlvbk5hbWU6ICdiZWRyb2NrLW1hbmFnZS1sb2dnaW5nLWZ1bmN0aW9uJyxcbiAgICAgIHJlZ2lvbixcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgLy8gUHl0aG9uRnVuY3Rpb24gZm9yIG1hbmFnaW5nIEJlZHJvY2sgbG9nZ2luZyBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgbWFuYWdlTG9nZ2luZ0Z1bmN0aW9uID0gbmV3IFB5dGhvbkZ1bmN0aW9uKHRoaXMsICdCZWRyb2NrTWFuYWdlTG9nZ2luZ0Z1bmN0aW9uJywge1xuICAgICAgZnVuY3Rpb25OYW1lOiBnZW5lcmF0ZWRMb2dQZXJtaXNzaW9ucy51bmlxdWVGdW5jdGlvbk5hbWUsXG4gICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3Jlc291cmNlcycsICdiZWRyb2NrLW1hbmFnZS1sb2dnaW5nLWNvbmZpZ3VyYXRpb24nKSxcbiAgICAgIHJ1bnRpbWU6IERlZmF1bHRSdW50aW1lcy5QWVRIT04sXG4gICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgICByb2xlOiBsYW1iZGFSb2xlLFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgZ2VuZXJhdGVkTG9nUGVybWlzc2lvbnMucG9saWN5U3RhdGVtZW50cykge1xuICAgICAgbWFuYWdlTG9nZ2luZ0Z1bmN0aW9uLnJvbGU/LmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gQ3VzdG9tIHJlc291cmNlIHByb3ZpZGVyXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIodGhpcywgJ0JlZHJvY2tMb2dnaW5nUHJvdmlkZXInLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogbWFuYWdlTG9nZ2luZ0Z1bmN0aW9uLFxuICAgIH0pO1xuXG4gICAgLy8gQ3VzdG9tIHJlc291cmNlIHRvIGNvbmZpZ3VyZSBCZWRyb2NrIGxvZ2dpbmdcbiAgICBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0JlZHJvY2tMb2dnaW5nQ29uZmlnJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogdGhpcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgIHJvbGVBcm46IHRoaXMubG9nZ2luZ1JvbGUucm9sZUFybixcbiAgICAgICAgb3ZlcnJpZGU6IHByb3BzPy5vdmVycmlkZUV4aXN0aW5nQ29uZmlndXJhdGlvbiB8fCBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn0iXX0=
|