@aws-solutions-constructs/core 2.43.1 → 2.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +864 -485
- package/index.d.ts +0 -1
- package/index.js +1 -2
- package/lib/alb-helper.js +22 -5
- package/lib/apigateway-helper.js +4 -4
- package/lib/cloudfront-distribution-defaults.d.ts +1 -1
- package/lib/cloudfront-distribution-defaults.js +4 -4
- package/lib/cloudfront-distribution-helper.d.ts +5 -0
- package/lib/cloudfront-distribution-helper.js +15 -3
- package/lib/dynamodb-table-helper.d.ts +6 -4
- package/lib/dynamodb-table-helper.js +22 -26
- package/lib/elasticsearch-helper.js +5 -2
- package/lib/eventbridge-helper.d.ts +5 -0
- package/lib/eventbridge-helper.js +14 -2
- package/lib/fargate-helper.d.ts +8 -0
- package/lib/fargate-helper.js +35 -15
- package/lib/glue-job-helper.d.ts +1 -1
- package/lib/glue-job-helper.js +5 -7
- package/lib/glue-table-helper.d.ts +12 -1
- package/lib/glue-table-helper.js +34 -3
- package/lib/kendra-helper.js +6 -7
- package/lib/kinesis-streams-helper.d.ts +5 -0
- package/lib/kinesis-streams-helper.js +14 -2
- package/lib/lambda-helper.d.ts +6 -1
- package/lib/lambda-helper.js +16 -4
- package/lib/mediastore-helper.d.ts +5 -0
- package/lib/mediastore-helper.js +14 -2
- package/lib/opensearch-helper.d.ts +4 -0
- package/lib/opensearch-helper.js +18 -3
- package/lib/s3-bucket-helper.d.ts +9 -0
- package/lib/s3-bucket-helper.js +65 -5
- package/lib/sagemaker-helper.d.ts +6 -1
- package/lib/sagemaker-helper.js +68 -45
- package/lib/secretsmanager-helper.d.ts +7 -2
- package/lib/secretsmanager-helper.js +16 -4
- package/lib/sns-helper.d.ts +8 -0
- package/lib/sns-helper.js +32 -3
- package/lib/sqs-helper.d.ts +9 -0
- package/lib/sqs-helper.js +54 -8
- package/lib/utils.d.ts +6 -2
- package/lib/utils.js +15 -4
- package/lib/vpc-helper.d.ts +6 -0
- package/lib/vpc-helper.js +14 -2
- package/lib/waf-helper.d.ts +5 -0
- package/lib/waf-helper.js +14 -2
- package/package.json +3 -3
- package/test/alb-helper.test.js +39 -1
- package/test/cloudfront-distribution-s3-helper.test.js +18 -1
- package/test/dynamo-table.test.js +18 -48
- package/test/eventbridge-helper.test.js +16 -1
- package/test/fargate-helper.test.js +3 -3
- package/test/glue-job-helper.test.js +85 -66
- package/test/kendra-helper.test.js +5 -5
- package/test/kinesis-streams-helper.test.js +17 -10
- package/test/lambda-helper.test.js +25 -2
- package/test/mediastore-helper.test.js +20 -1
- package/test/s3-bucket.test.js +57 -1
- package/test/sagemaker-helper.test.js +46 -1
- package/test/secretsmanager-helper.test.js +16 -7
- package/test/sns-helper.test.js +85 -1
- package/test/sqs-helper.test.js +125 -1
- package/test/utils.test.js +27 -1
- package/test/vpc-helper.test.js +32 -37
- package/test/waf-helper.test.js +48 -4
- package/lib/input-validation.d.ts +0 -76
- package/lib/input-validation.js +0 -157
- package/node_modules/console-control-strings/README.md~ +0 -140
- package/node_modules/npmlog/CHANGELOG.md +0 -49
- package/node_modules/set-blocking/CHANGELOG.md +0 -26
- package/test/input-validation.test.d.ts +0 -13
- package/test/input-validation.test.js +0 -451
package/index.d.ts
CHANGED
|
@@ -63,7 +63,6 @@ export * from './lib/glue-table-defaults';
|
|
|
63
63
|
export * from './lib/glue-table-helper';
|
|
64
64
|
export * from './lib/glue-database-defaults';
|
|
65
65
|
export * from './lib/glue-database-helper';
|
|
66
|
-
export * from './lib/input-validation';
|
|
67
66
|
export * from './test/test-helper';
|
|
68
67
|
export * from './lib/ssm-string-parameter-helper';
|
|
69
68
|
export * from './lib/eventbridge-helper';
|
package/index.js
CHANGED
|
@@ -75,7 +75,6 @@ __exportStar(require("./lib/glue-table-defaults"), exports);
|
|
|
75
75
|
__exportStar(require("./lib/glue-table-helper"), exports);
|
|
76
76
|
__exportStar(require("./lib/glue-database-defaults"), exports);
|
|
77
77
|
__exportStar(require("./lib/glue-database-helper"), exports);
|
|
78
|
-
__exportStar(require("./lib/input-validation"), exports);
|
|
79
78
|
__exportStar(require("./test/test-helper"), exports);
|
|
80
79
|
__exportStar(require("./lib/ssm-string-parameter-helper"), exports);
|
|
81
80
|
__exportStar(require("./lib/eventbridge-helper"), exports);
|
|
@@ -84,4 +83,4 @@ __exportStar(require("./lib/waf-helper"), exports);
|
|
|
84
83
|
__exportStar(require("./lib/opensearch-defaults"), exports);
|
|
85
84
|
__exportStar(require("./lib/opensearch-helper"), exports);
|
|
86
85
|
__exportStar(require("./lib/kendra-helper"), exports);
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7Ozs7Ozs7Ozs7OztBQUVILHFEQUFtQztBQUNuQyxtREFBaUM7QUFDakMsNERBQTBDO0FBQzFDLDBEQUF3QztBQUN4QyxnRUFBOEM7QUFDOUMsNkRBQTJDO0FBQzNDLDJEQUF5QztBQUN6Qyx5REFBdUM7QUFDdkMsdURBQXFDO0FBQ3JDLGdFQUE4QztBQUM5QyxtRUFBaUQ7QUFDakQsaUVBQStDO0FBQy9DLGlFQUErQztBQUMvQywrREFBNkM7QUFDN0MscUVBQW1EO0FBQ25ELDZFQUEyRDtBQUMzRCxxREFBbUM7QUFDbkMsbURBQWlDO0FBQ2pDLHdEQUFzQztBQUN0QyxzREFBb0M7QUFDcEMsNERBQTBDO0FBQzFDLDBEQUF3QztBQUN4QywyREFBeUM7QUFDekMseURBQXVDO0FBQ3ZDLGdFQUE4QztBQUM5Qyw4REFBNEM7QUFDNUMsOERBQTRDO0FBQzVDLHFEQUFtQztBQUNuQyxtREFBaUM7QUFDakMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyx1RUFBcUQ7QUFDckQseUVBQXVEO0FBQ3ZELDhDQUE0QjtBQUM1Qiw2REFBMkM7QUFDM0MseURBQXVDO0FBQ3ZDLHVEQUFxQztBQUNyQywrREFBNkM7QUFDN0MsNkRBQTJDO0FBQzNDLCtEQUE2QztBQUM3Qyw2REFBMkM7QUFDM0MsOERBQTRDO0FBQzVDLHFEQUFtQztBQUNuQyxtREFBaUM7QUFDakMsMkRBQXlDO0FBQ3pDLHlEQUF1QztBQUN2QyxvRUFBa0Q7QUFDbEQsMERBQXdDO0FBQ3hDLHdEQUFzQztBQUN0Qyw0REFBMEM7QUFDMUMsMERBQXdDO0FBQ3hDLCtEQUE2QztBQUM3Qyw2REFBMkM7QUFDM0MscURBQW1DO0FBQ25DLG9FQUFrRDtBQUNsRCwyREFBeUM7QUFDekMscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyw0REFBMEM7QUFDMUMsMERBQXdDO0FBQ3hDLHNEQUFvQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FsYi1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbGItaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaWdhdGV3YXktZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpZ2F0ZXdheS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHluYW1vZGItdGFibGUtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWxhc3RpY2FjaGUtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWxhc3RpY2FjaGUtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZhcmdhdGUtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmFyZ2F0ZS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW90LXRvcGljLXJ1bGUtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2luZXNpcy1hbmFseXRpY3MtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2luZXNpcy1hbmFseXRpY3MtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2tpbmVzaXMtc3RyZWFtcy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9raW5lc2lzLXN0cmVhbXMtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2tpbmVzaXMtZmlyZWhvc2UtczMtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGFtYmRhLWV2ZW50LXNvdXJjZS1tYXBwaW5nLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ttcy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9rbXMtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xhbWJkYS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sYW1iZGEtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lZGlhc3RvcmUtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVkaWFzdG9yZS1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvczMtYnVja2V0LWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3MzLWJ1Y2tldC1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VjcmV0c21hbmFnZXItZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VjcmV0c21hbmFnZXItaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlY3VyaXR5LWdyb3VwLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbnMtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc25zLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcXMtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3FzLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbG91ZGZyb250LWRpc3RyaWJ1dGlvbi1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xvdWRmcm9udC1kaXN0cmlidXRpb24tZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXZlbnRzLXJ1bGUtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29nbml0by1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2duaXRvLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbGFzdGljc2VhcmNoLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsYXN0aWNzZWFyY2gtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0ZXAtZnVuY3Rpb24tZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RlcC1mdW5jdGlvbi1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHluYW1vZGItdGFibGUtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZwYy1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92cGMtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NhZ2VtYWtlci1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zYWdlbWFrZXItaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nsb3Vkd2F0Y2gtbG9nLWdyb3VwLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbHVlLWpvYi1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbHVlLWpvYi1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x1ZS10YWJsZS1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbHVlLXRhYmxlLWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbHVlLWRhdGFiYXNlLWRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dsdWUtZGF0YWJhc2UtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGVzdC90ZXN0LWhlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zc20tc3RyaW5nLXBhcmFtZXRlci1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXZlbnRicmlkZ2UtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dhZi1kZWZhdWx0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93YWYtaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL29wZW5zZWFyY2gtZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3BlbnNlYXJjaC1oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2VuZHJhLWhlbHBlcic7XG4iXX0=
|
package/lib/alb-helper.js
CHANGED
|
@@ -74,6 +74,9 @@ function AddListener(scope, id, loadBalancer, listenerProps) {
|
|
|
74
74
|
port: "443",
|
|
75
75
|
protocol: "HTTPS",
|
|
76
76
|
};
|
|
77
|
+
// NOSONAR: (typescript:S5332)
|
|
78
|
+
// This listener is explicitly created to redirect non TLS connections
|
|
79
|
+
// The lack of SSL/TLS is intentional
|
|
77
80
|
const httpListener = new elb.ApplicationListener(scope, `${id}-redirect`, {
|
|
78
81
|
loadBalancer,
|
|
79
82
|
protocol: aws_elasticloadbalancingv2_1.ApplicationProtocol.HTTP,
|
|
@@ -150,14 +153,19 @@ exports.GetActiveListener = GetActiveListener;
|
|
|
150
153
|
function CheckAlbProps(props) {
|
|
151
154
|
let errorMessages = '';
|
|
152
155
|
let errorFound = false;
|
|
156
|
+
if (props.loadBalancerProps && props.existingLoadBalancerObj) {
|
|
157
|
+
errorMessages += 'Error - Either provide loadBalancerProps or existingLoadBalancerObj, but not both.\n';
|
|
158
|
+
errorFound = true;
|
|
159
|
+
}
|
|
160
|
+
if ((props?.logAlbAccessLogs === false) && (props.albLoggingBucketProps)) {
|
|
161
|
+
errorMessages += 'Error - If logAlbAccessLogs is false, supplying albLoggingBucketProps is invalid.\n';
|
|
162
|
+
errorFound = true;
|
|
163
|
+
}
|
|
153
164
|
if (props.listenerProps?.certificateArns) {
|
|
154
165
|
errorMessages += "certificateArns is deprecated. Please supply certificates using props.listenerProps.certificates\n";
|
|
155
166
|
errorFound = true;
|
|
156
167
|
}
|
|
157
|
-
if ((
|
|
158
|
-
props.existingLoadBalancerObj.listeners.length === 0) ||
|
|
159
|
-
!props.existingLoadBalancerObj) &&
|
|
160
|
-
!props.listenerProps) {
|
|
168
|
+
if (ValidateAddListenerProps(props)) {
|
|
161
169
|
errorMessages += "When adding the first listener and target to a load balancer, listenerProps must be specified and include at least a certificate or protocol: HTTP\n";
|
|
162
170
|
errorFound = true;
|
|
163
171
|
}
|
|
@@ -190,4 +198,13 @@ function CheckAlbProps(props) {
|
|
|
190
198
|
}
|
|
191
199
|
}
|
|
192
200
|
exports.CheckAlbProps = CheckAlbProps;
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxiLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFsYi1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCw4REFBOEQ7QUFNOUQsdUZBQThGO0FBQzlGLHVFQUF1RTtBQUN2RSxtQ0FBeUQ7QUFDekQsaURBQXNEO0FBQ3RELHlEQUE0RDtBQUM1RCw2REFBc0Q7QUFXdEQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFxQjtJQUVyQixJQUFJLFlBQXlDLENBQUM7SUFFOUMsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEVBQUU7UUFDakMsWUFBWSxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztLQUM5QztTQUFNO1FBQ0wsTUFBTSxpQkFBaUIsR0FBRyx3QkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdILFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsQ0FDNUMsS0FBSyxFQUNMLEdBQUcsRUFBRSxNQUFNLEVBQ1gsaUJBQWlCLENBQ2xCLENBQUM7UUFDRixJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ3JFLE1BQU0sOEJBQThCLEdBQUcsd0JBQWdCLENBQUMsbUNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BHLE1BQU0sYUFBYSxHQUFHLHlDQUFzQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUN4RixZQUFZLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNDO0tBQ0Y7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QixDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNsRCxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQ2hCO1FBQ0EsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFhLElBQUkscUZBQXFGLENBQUM7S0FDeEc7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBSSxLQUFLLENBQUMsdUJBQXVCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1FBQ3ZELFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsYUFBYSxJQUFJLDZIQUE2SCxDQUFDO0tBQ2hKO0lBRUQsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsYUFBYSxJQUFJLGtGQUFrRixDQUFDO0tBQ3JHO0lBRUQsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEVBQUU7UUFDakMsb0JBQVksQ0FDVixpR0FBaUcsQ0FDbEcsQ0FBQztLQUNIO0lBRUQsSUFBSSxVQUFVLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ2hDO0FBQ0gsQ0FBQztBQXpERCxzQ0F5REMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIGVsYiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCAqIGFzIGVjcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblByb3RvY29sLCBMaXN0ZW5lckFjdGlvbiwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCAqIGFzIGVsYnQgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyLXRhcmdldHNcIjtcbmltcG9ydCB7IHByaW50V2FybmluZywgY29uc29saWRhdGVQcm9wcyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBEZWZhdWx0TGlzdGVuZXJQcm9wcyB9IGZyb20gXCIuL2FsYi1kZWZhdWx0c1wiO1xuaW1wb3J0IHsgY3JlYXRlQWxiTG9nZ2luZ0J1Y2tldCB9IGZyb20gXCIuL3MzLWJ1Y2tldC1oZWxwZXJcIjtcbmltcG9ydCB7IERlZmF1bHRTM1Byb3BzIH0gZnJvbSBcIi4vczMtYnVja2V0LWRlZmF1bHRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2J0YWluQWxiUHJvcHMge1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICByZWFkb25seSBwdWJsaWNBcGk6IGJvb2xlYW4sXG4gIHJlYWRvbmx5IGV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqPzogZWxiLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxuICByZWFkb25seSBsb2FkQmFsYW5jZXJQcm9wcz86IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlclByb3BzIHwgYW55LFxuICByZWFkb25seSBsb2dBY2Nlc3NMb2dzPzogYm9vbGVhbixcbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHNcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIFJldHVybnMgdGhlIGNvcnJlY3QgQUxCIExvYWQgQmFsYW5jZXIgdG8gdXNlIGluIHRoaXMgY29uc3RydWN0LCBlaXRoZXIgYW4gZXhpc3RpbmdcbiAqIG9uZSBwcm92aWRlZCBhcyBhbiBhcmd1bWVudCBvciBjcmVhdGUgIG5ldyBvbmUgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT2J0YWluQWxiKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogc3RyaW5nLFxuICBwcm9wczogT2J0YWluQWxiUHJvcHNcbik6IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB7XG4gIGxldCBsb2FkQmFsYW5jZXI6IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcblxuICBpZiAocHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmopIHtcbiAgICBsb2FkQmFsYW5jZXIgPSBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iajtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb25zb2xpZGF0ZWRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoe30sIHByb3BzLmxvYWRCYWxhbmNlclByb3BzLCB7IHZwYzogcHJvcHMudnBjLCBpbnRlcm5ldEZhY2luZzogcHJvcHMucHVibGljQXBpIH0pO1xuICAgIGxvYWRCYWxhbmNlciA9IG5ldyBlbGIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkfS1hbGJgLFxuICAgICAgY29uc29saWRhdGVkUHJvcHNcbiAgICApO1xuICAgIGlmIChwcm9wcy5sb2dBY2Nlc3NMb2dzID09PSB1bmRlZmluZWQgfHwgcHJvcHMubG9nQWNjZXNzTG9ncyA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgY29uc29saWRhdGVkTG9nZ2luZ0J1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpO1xuICAgICAgY29uc3QgbG9nZ2luZ0J1Y2tldCA9IGNyZWF0ZUFsYkxvZ2dpbmdCdWNrZXQoc2NvcGUsIGlkLCBjb25zb2xpZGF0ZWRMb2dnaW5nQnVja2V0UHJvcHMpO1xuICAgICAgbG9hZEJhbGFuY2VyLmxvZ0FjY2Vzc0xvZ3MobG9nZ2luZ0J1Y2tldCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsb2FkQmFsYW5jZXI7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFkZExpc3RlbmVyKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogc3RyaW5nLFxuICBsb2FkQmFsYW5jZXI6IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgbGlzdGVuZXJQcm9wczogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcyB8IGFueVxuKTogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXIge1xuICBsZXQgY29uc29saWRhdGVkTGlzdGVuZXJQcm9wczogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXJQcm9wcztcblxuICBjb25zb2xpZGF0ZWRMaXN0ZW5lclByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0TGlzdGVuZXJQcm9wcyhsb2FkQmFsYW5jZXIpLCBsaXN0ZW5lclByb3BzKTtcblxuICAvLyAgY3JlYXRlIHRoZSBsaXN0ZW5lclxuICBjb25zdCBsaXN0ZW5lciA9IG5ldyBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcihcbiAgICBzY29wZSxcbiAgICBgJHtpZH0tbGlzdGVuZXJgLFxuICAgIGNvbnNvbGlkYXRlZExpc3RlbmVyUHJvcHNcbiAgKTtcbiAgbG9hZEJhbGFuY2VyLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICBpZiAoY29uc29saWRhdGVkTGlzdGVuZXJQcm9wcy5wcm90b2NvbCA9PT0gZWxiLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCkge1xuICAgIC8vIFRoaXMgd2lsbCB1c2UgY29yZS5wcmludFdhcm5pbmcgaW4gdGhlIGFjdHVhbCBjb25zdHJ1Y3RcbiAgICBwcmludFdhcm5pbmcoXG4gICAgICBcIkFXUyByZWNvbW1lbmRzIGVuY3J5cHRpbmcgdHJhZmZpYyB0byBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyIHVzaW5nIEhUVFBTLlwiXG4gICAgKTtcbiAgICBpZiAobGlzdGVuZXJQcm9wcy5jZXJ0aWZpY2F0ZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkhUVFAgbGlzdGVuZXJzIGNhbm5vdCB1c2UgYSBjZXJ0aWZpY2F0ZVwiKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFsaXN0ZW5lclByb3BzLmNlcnRpZmljYXRlcyB8fCBsaXN0ZW5lclByb3BzLmNlcnRpZmljYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgbGlzdGVuZXIgdXNpbmcgSFRUUFMgcHJvdG9jb2wgcmVxdWlyZXMgYSBjZXJ0aWZpY2F0ZVwiKTtcbiAgICB9XG5cbiAgICBsaXN0ZW5lci5hZGRDZXJ0aWZpY2F0ZXMoYCR7aWR9LWNlcnRgLCBsaXN0ZW5lclByb3BzLmNlcnRpZmljYXRlcyk7XG4gIH1cblxuICBpZiAoY29uc29saWRhdGVkTGlzdGVuZXJQcm9wcy5wcm90b2NvbCA9PT0gZWxiLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMpIHtcbiAgICBjb25zdCBvcHQ6IGVsYi5SZWRpcmVjdE9wdGlvbnMgPSB7XG4gICAgICBwb3J0OiBcIjQ0M1wiLFxuICAgICAgcHJvdG9jb2w6IFwiSFRUUFNcIixcbiAgICB9O1xuXG4gICAgY29uc3QgaHR0cExpc3RlbmVyID0gbmV3IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyKFxuICAgICAgc2NvcGUsXG4gICAgICBgJHtpZH0tcmVkaXJlY3RgLFxuICAgICAge1xuICAgICAgICBsb2FkQmFsYW5jZXIsXG4gICAgICAgIHByb3RvY29sOiBBcHBsaWNhdGlvblByb3RvY29sLkhUVFAsXG4gICAgICAgIGRlZmF1bHRBY3Rpb246IExpc3RlbmVyQWN0aW9uLnJlZGlyZWN0KG9wdCksXG4gICAgICB9XG4gICAgKTtcbiAgICBsb2FkQmFsYW5jZXIubGlzdGVuZXJzLnB1c2goaHR0cExpc3RlbmVyKTtcbiAgfVxuXG4gIHJldHVybiBsaXN0ZW5lcjtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIENyZWF0ZXMgYSBUYXJnZXQgR3JvdXAgZm9yIExhbWJkYSBmdW5jdGlvbnMgYW5kIGFkZHMgdGhlXG4gKiBwcm92aWRlZCBmdW5jdGlvbnMgYXMgYSB0YXJnZXQgdG8gdGhhdCBncm91cC4gVGhlbiBhZGRzXG4gKiB0aGUgbmV3IFRhcmdldCBHcm91cCB0byB0aGUgcHJvdmlkZWQgTGlzdGVuZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBBZGRMYW1iZGFUYXJnZXQoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIGN1cnJlbnRMaXN0ZW5lcjogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXIsXG4gIGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuSUZ1bmN0aW9uLFxuICBydWxlUHJvcHM/OiBlbGIuQWRkUnVsZVByb3BzLFxuICB0YXJnZXRQcm9wcz86IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwUHJvcHMsXG4pOiBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cCAge1xuXG4gIC8vICBDcmVhdGUgdGhlIHRhcmdldCBhbmQgYXNzaWduIGl0IHRvIGEgbmV3IHRhcmdldCBncm91cFxuICBjb25zdCBsYW1iZGFUYXJnZXQgPSBuZXcgZWxidC5MYW1iZGFUYXJnZXQobGFtYmRhRnVuY3Rpb24pO1xuICBjb25zdCBuZXdUYXJnZXRHcm91cCA9IG5ldyBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cChzY29wZSwgYCR7aWR9LXRnYCwge1xuICAgIHRhcmdldHM6IFtsYW1iZGFUYXJnZXRdLFxuICAgIHRhcmdldEdyb3VwTmFtZTogdGFyZ2V0UHJvcHMgPyB0YXJnZXRQcm9wcy50YXJnZXRHcm91cE5hbWUgOiB1bmRlZmluZWQsXG4gICAgaGVhbHRoQ2hlY2s6IHRhcmdldFByb3BzID8gdGFyZ2V0UHJvcHMuaGVhbHRoQ2hlY2sgOiB1bmRlZmluZWRcbiAgfSk7XG5cbiAgLy8gVGhlIGludGVyZmFjZSBBZGRSdWxlUHJvcHMgaW5jbHVkZXMgY29uZGl0aW9ucyBhbmQgcHJpb3JpdHksIGNvbWJpbmUgdGhhdFxuICAvLyB3aXRoIHRhcmdldEdyb3VwcyBhbmQgd2UgY2FuIGFzc2VtYmxlIEFkZEFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBQcm9wc1xuICBjb25zdCBjb25zb2xpZGF0ZWRUYXJnZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoe30sIHJ1bGVQcm9wcywgeyB0YXJnZXRHcm91cHM6IFtuZXdUYXJnZXRHcm91cF0gfSk7XG4gIGN1cnJlbnRMaXN0ZW5lci5hZGRUYXJnZXRHcm91cHMoYCR7c2NvcGUubm9kZS5pZH0tdGFyZ2V0c2AsIGNvbnNvbGlkYXRlZFRhcmdldFByb3BzKTtcblxuICBuZXdUYXJnZXRHcm91cC5zZXRBdHRyaWJ1dGUoJ3N0aWNraW5lc3MuZW5hYmxlZCcsIHVuZGVmaW5lZCk7XG4gIHJldHVybiBuZXdUYXJnZXRHcm91cDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQWRkRmFyZ2F0ZVRhcmdldChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgY3VycmVudExpc3RlbmVyOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcixcbiAgZmFyZ2F0ZVNlcnZpY2U6IGVjcy5GYXJnYXRlU2VydmljZSxcbiAgcnVsZVByb3BzPzogZWxiLkFkZFJ1bGVQcm9wcyxcbiAgdGFyZ2V0UHJvcHM/OiBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cFByb3BzLFxuKTogZWxiLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgIHtcblxuICBpZiAodGFyZ2V0UHJvcHM/LnByb3RvY29sICE9PSBlbGIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUykge1xuICAgIHByaW50V2FybmluZygnQVdTIHJlY29tbWVuZHMgdXNpbmcgSFRUUFMgcHJvdG9jb2wgZm9yIFRhcmdldCBHcm91cHMgaW4gcHJvZHVjdGlvbiBhcHBsaWNhdGlvbnMnKTtcbiAgfVxuXG4gIGNvbnN0IG5ld1RhcmdldEdyb3VwID0gbmV3IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKHNjb3BlLCBgJHtpZH0tdGdgLCB0YXJnZXRQcm9wcyk7XG5cbiAgLy8gVGhlIGludGVyZmFjZSBBZGRSdWxlUHJvcHMgaW5jbHVkZXMgY29uZGl0aW9ucyBhbmQgcHJpb3JpdHksIGNvbWJpbmUgdGhhdFxuICAvLyB3aXRoIHRhcmdldEdyb3VwcyBhbmQgd2UgY2FuIGFzc2VtYmxlIGFuIEFkZEFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBQcm9wcyBvYmplY3RcbiAgY29uc3QgY29uc29saWRhdGVkVGFyZ2V0UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKHsgdGFyZ2V0R3JvdXBzOiBbbmV3VGFyZ2V0R3JvdXBdIH0sIHJ1bGVQcm9wcyk7XG5cbiAgY3VycmVudExpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgJHtzY29wZS5ub2RlLmlkfS10YXJnZXRzYCwgY29uc29saWRhdGVkVGFyZ2V0UHJvcHMpO1xuICBuZXdUYXJnZXRHcm91cC5hZGRUYXJnZXQoZmFyZ2F0ZVNlcnZpY2UpO1xuXG4gIHJldHVybiBuZXdUYXJnZXRHcm91cDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIExvb2tzIGZvciB0aGUgbGlzdGVuZXIgYXNzb2NpYXRlZCB3aXRoIFRhcmdldCBHcm91cHNcbiAqIElmIHRoZXJlIGlzIGEgc2luZ2xlIGxpc3RlbmVyLCB0aGlzIHJldHVybnMgaXQgd2hldGhlciBpdCBpcyBIVFRQIG9yIEhUVFBTXG4gKiBJZiB0aGVyZSBhcmUgMiBsaXN0ZW5lcnMsIGl0IGZpbmRzIHRoZSBIVFRQUyBsaXN0ZW5lciAod2UgYXNzdW1lIHRoZSBIVFRQIGxpc3RlbmVyIHJlZGlyZWN0cyB0byBIVFRQUylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEFjdGl2ZUxpc3RlbmVyKGxpc3RlbmVyczogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXJbXSk6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyIHtcbiAgbGV0IGxpc3RlbmVyOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICBpZiAobGlzdGVuZXJzLmxlbmd0aCA9PT0gMCApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGFyZSBubyBsaXN0ZW5lcnMgaW4gdGhlIEFMQmApO1xuICB9XG4gIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAxICkge1xuICAgIGxpc3RlbmVyID0gbGlzdGVuZXJzWzBdO1xuICB9IGVsc2Uge1xuICAgIGxpc3RlbmVyID0gbGlzdGVuZXJzLmZpbmQoaSA9PiAoaS5ub2RlLmNoaWxkcmVuWzBdIGFzIGVsYi5DZm5MaXN0ZW5lcikucHJvdG9jb2wgPT09IFwiSFRUUFNcIikgYXMgZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIH1cbiAgcmV0dXJuIGxpc3RlbmVyO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDaGVja0FsYlByb3BzKHByb3BzOiBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAocHJvcHMubGlzdGVuZXJQcm9wcz8uY2VydGlmaWNhdGVBcm5zKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcImNlcnRpZmljYXRlQXJucyBpcyBkZXByZWNhdGVkLiBQbGVhc2Ugc3VwcGx5IGNlcnRpZmljYXRlcyB1c2luZyBwcm9wcy5saXN0ZW5lclByb3BzLmNlcnRpZmljYXRlc1xcblwiO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKFxuICAgICgocHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmogJiZcbiAgICAgIHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqLmxpc3RlbmVycy5sZW5ndGggPT09IDApIHx8XG4gICAgICAhcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmopICYmXG4gICAgIXByb3BzLmxpc3RlbmVyUHJvcHNcbiAgKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcIldoZW4gYWRkaW5nIHRoZSBmaXJzdCBsaXN0ZW5lciBhbmQgdGFyZ2V0IHRvIGEgbG9hZCBiYWxhbmNlciwgbGlzdGVuZXJQcm9wcyBtdXN0IGJlIHNwZWNpZmllZCBhbmQgaW5jbHVkZSBhdCBsZWFzdCBhIGNlcnRpZmljYXRlIG9yIHByb3RvY29sOiBIVFRQXFxuXCI7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoXG4gICAgcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmogJiZcbiAgICBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iai5saXN0ZW5lcnMubGVuZ3RoID4gMCAmJlxuICAgIHByb3BzLmxpc3RlbmVyUHJvcHNcbiAgKSB7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcIlRoaXMgbG9hZCBiYWxhbmNlciBhbHJlYWR5IGhhcyBhIGxpc3RlbmVyLCBsaXN0ZW5lclByb3BzIG1heSBub3QgYmUgc3BlY2lmaWVkXFxuXCI7XG4gIH1cblxuICBpZiAoXG4gICAgcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmogJiZcbiAgICBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iai5saXN0ZW5lcnMubGVuZ3RoID4gMCAmJlxuICAgICFwcm9wcy5ydWxlUHJvcHNcbiAgKSB7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcIldoZW4gYWRkaW5nIGEgc2Vjb25kIHRhcmdldCB0byBhbiBleGlzdGluZyBsaXN0ZW5lciwgdGhlcmUgbXVzdCBiZSBydWxlcyBwcm92aWRlZFxcblwiO1xuICB9XG5cbiAgLy8gQ2hlY2sgY29uc3RydWN0IHNwZWNpZmljIGludmFsaWQgaW5wdXRzXG4gIGlmIChwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iaiAmJiAhcHJvcHMuZXhpc3RpbmdWcGMpIHtcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICBlcnJvck1lc3NhZ2VzICs9IFwiQW4gZXhpc3RpbmcgQUxCIGlzIGFscmVhZHkgaW4gYSBWUEMsIHRoYXQgVlBDIG11c3QgYmUgcHJvdmlkZWQgaW4gcHJvcHMuZXhpc3RpbmdWcGMgZm9yIHRoZSByZXN0IG9mIHRoZSBjb25zdHJ1Y3QgdG8gdXNlLlxcblwiO1xuICB9XG5cbiAgaWYgKHByb3BzLmxvYWRCYWxhbmNlclByb3BzPy52cGMpIHtcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdTcGVjaWZ5IGFueSBleGlzdGluZyBWUEMgYXQgdGhlIGNvbnN0cnVjdCBsZXZlbCwgbm90IHdpdGhpbiBsb2FkQmFsYW5jZXJQcm9wcy5cXG4nO1xuICB9XG5cbiAgaWYgKHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqKSB7XG4gICAgcHJpbnRXYXJuaW5nKFxuICAgICAgXCJUaGUgcHVibGljL3ByaXZhdGUgcHJvcGVydHkgb2YgYW4gZXhpc3RpbmcgQUxCIG11c3QgbWF0Y2ggdGhlIHByb3BzLnB1YmxpY0FwaSBzZXR0aW5nIHByb3ZpZGVkLlwiXG4gICAgKTtcbiAgfVxuXG4gIGlmIChlcnJvckZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXMpO1xuICB9XG59Il19
|
|
201
|
+
function ValidateAddListenerProps(props) {
|
|
202
|
+
if (((props.existingLoadBalancerObj &&
|
|
203
|
+
props.existingLoadBalancerObj.listeners.length === 0) ||
|
|
204
|
+
!props.existingLoadBalancerObj) &&
|
|
205
|
+
!props.listenerProps) {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxiLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFsYi1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCw4REFBOEQ7QUFNOUQsdUZBQThGO0FBQzlGLHVFQUF1RTtBQUN2RSxtQ0FBeUQ7QUFDekQsaURBQXNEO0FBQ3RELHlEQUE0RDtBQUM1RCw2REFBc0Q7QUFXdEQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFxQjtJQUVyQixJQUFJLFlBQXlDLENBQUM7SUFFOUMsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEVBQUU7UUFDakMsWUFBWSxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztLQUM5QztTQUFNO1FBQ0wsTUFBTSxpQkFBaUIsR0FBRyx3QkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdILFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsQ0FDNUMsS0FBSyxFQUNMLEdBQUcsRUFBRSxNQUFNLEVBQ1gsaUJBQWlCLENBQ2xCLENBQUM7UUFDRixJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ3JFLE1BQU0sOEJBQThCLEdBQUcsd0JBQWdCLENBQUMsbUNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BHLE1BQU0sYUFBYSxHQUFHLHlDQUFzQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUN4RixZQUFZLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNDO0tBQ0Y7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QUNiO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBlbGIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgKiBhcyBzMyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Qcm90b2NvbCwgTGlzdGVuZXJBY3Rpb24sIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQgKiBhcyBlbGJ0IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi10YXJnZXRzXCI7XG5pbXBvcnQgeyBwcmludFdhcm5pbmcsIGNvbnNvbGlkYXRlUHJvcHMgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgRGVmYXVsdExpc3RlbmVyUHJvcHMgfSBmcm9tIFwiLi9hbGItZGVmYXVsdHNcIjtcbmltcG9ydCB7IGNyZWF0ZUFsYkxvZ2dpbmdCdWNrZXQgfSBmcm9tIFwiLi9zMy1idWNrZXQtaGVscGVyXCI7XG5pbXBvcnQgeyBEZWZhdWx0UzNQcm9wcyB9IGZyb20gXCIuL3MzLWJ1Y2tldC1kZWZhdWx0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9idGFpbkFsYlByb3BzIHtcbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYyxcbiAgcmVhZG9ubHkgcHVibGljQXBpOiBib29sZWFuLFxuICByZWFkb25seSBleGlzdGluZ0xvYWRCYWxhbmNlck9iaj86IGVsYi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyUHJvcHM/OiBlbGIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcyB8IGFueSxcbiAgcmVhZG9ubHkgbG9nQWNjZXNzTG9ncz86IGJvb2xlYW4sXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzXG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqXG4gKiBSZXR1cm5zIHRoZSBjb3JyZWN0IEFMQiBMb2FkIEJhbGFuY2VyIHRvIHVzZSBpbiB0aGlzIGNvbnN0cnVjdCwgZWl0aGVyIGFuIGV4aXN0aW5nXG4gKiBvbmUgcHJvdmlkZWQgYXMgYW4gYXJndW1lbnQgb3IgY3JlYXRlICBuZXcgb25lIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9idGFpbkFsYihcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgcHJvcHM6IE9idGFpbkFsYlByb3BzXG4pOiBlbGIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIge1xuICBsZXQgbG9hZEJhbGFuY2VyOiBlbGIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG5cbiAgaWYgKHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqKSB7XG4gICAgbG9hZEJhbGFuY2VyID0gcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmo7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29uc29saWRhdGVkUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKHt9LCBwcm9wcy5sb2FkQmFsYW5jZXJQcm9wcywgeyB2cGM6IHByb3BzLnZwYywgaW50ZXJuZXRGYWNpbmc6IHByb3BzLnB1YmxpY0FwaSB9KTtcbiAgICBsb2FkQmFsYW5jZXIgPSBuZXcgZWxiLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKFxuICAgICAgc2NvcGUsXG4gICAgICBgJHtpZH0tYWxiYCxcbiAgICAgIGNvbnNvbGlkYXRlZFByb3BzXG4gICAgKTtcbiAgICBpZiAocHJvcHMubG9nQWNjZXNzTG9ncyA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmxvZ0FjY2Vzc0xvZ3MgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRlZExvZ2dpbmdCdWNrZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFMzUHJvcHMoKSwgcHJvcHMubG9nZ2luZ0J1Y2tldFByb3BzKTtcbiAgICAgIGNvbnN0IGxvZ2dpbmdCdWNrZXQgPSBjcmVhdGVBbGJMb2dnaW5nQnVja2V0KHNjb3BlLCBpZCwgY29uc29saWRhdGVkTG9nZ2luZ0J1Y2tldFByb3BzKTtcbiAgICAgIGxvYWRCYWxhbmNlci5sb2dBY2Nlc3NMb2dzKGxvZ2dpbmdCdWNrZXQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbG9hZEJhbGFuY2VyO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBBZGRMaXN0ZW5lcihcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgbG9hZEJhbGFuY2VyOiBlbGIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIsXG4gIGxpc3RlbmVyUHJvcHM6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMgfCBhbnlcbik6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyIHtcbiAgbGV0IGNvbnNvbGlkYXRlZExpc3RlbmVyUHJvcHM6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHM7XG5cbiAgY29uc29saWRhdGVkTGlzdGVuZXJQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdExpc3RlbmVyUHJvcHMobG9hZEJhbGFuY2VyKSwgbGlzdGVuZXJQcm9wcyk7XG5cbiAgLy8gIGNyZWF0ZSB0aGUgbGlzdGVuZXJcbiAgY29uc3QgbGlzdGVuZXIgPSBuZXcgZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXIoXG4gICAgc2NvcGUsXG4gICAgYCR7aWR9LWxpc3RlbmVyYCxcbiAgICBjb25zb2xpZGF0ZWRMaXN0ZW5lclByb3BzXG4gICk7XG4gIGxvYWRCYWxhbmNlci5saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgaWYgKGNvbnNvbGlkYXRlZExpc3RlbmVyUHJvcHMucHJvdG9jb2wgPT09IGVsYi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFApIHtcbiAgICAvLyBUaGlzIHdpbGwgdXNlIGNvcmUucHJpbnRXYXJuaW5nIGluIHRoZSBhY3R1YWwgY29uc3RydWN0XG4gICAgcHJpbnRXYXJuaW5nKFxuICAgICAgXCJBV1MgcmVjb21tZW5kcyBlbmNyeXB0aW5nIHRyYWZmaWMgdG8gYW4gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlciB1c2luZyBIVFRQUy5cIlxuICAgICk7XG4gICAgaWYgKGxpc3RlbmVyUHJvcHMuY2VydGlmaWNhdGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJIVFRQIGxpc3RlbmVycyBjYW5ub3QgdXNlIGEgY2VydGlmaWNhdGVcIik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICghbGlzdGVuZXJQcm9wcy5jZXJ0aWZpY2F0ZXMgfHwgbGlzdGVuZXJQcm9wcy5jZXJ0aWZpY2F0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGxpc3RlbmVyIHVzaW5nIEhUVFBTIHByb3RvY29sIHJlcXVpcmVzIGEgY2VydGlmaWNhdGVcIik7XG4gICAgfVxuXG4gICAgbGlzdGVuZXIuYWRkQ2VydGlmaWNhdGVzKGAke2lkfS1jZXJ0YCwgbGlzdGVuZXJQcm9wcy5jZXJ0aWZpY2F0ZXMpO1xuICB9XG5cbiAgaWYgKGNvbnNvbGlkYXRlZExpc3RlbmVyUHJvcHMucHJvdG9jb2wgPT09IGVsYi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFBTKSB7XG4gICAgY29uc3Qgb3B0OiBlbGIuUmVkaXJlY3RPcHRpb25zID0ge1xuICAgICAgcG9ydDogXCI0NDNcIixcbiAgICAgIHByb3RvY29sOiBcIkhUVFBTXCIsXG4gICAgfTtcblxuICAgIC8vIE5PU09OQVI6ICh0eXBlc2NyaXB0OlM1MzMyKVxuICAgIC8vIFRoaXMgbGlzdGVuZXIgaXMgZXhwbGljaXRseSBjcmVhdGVkIHRvIHJlZGlyZWN0IG5vbiBUTFMgY29ubmVjdGlvbnNcbiAgICAvLyBUaGUgbGFjayBvZiBTU0wvVExTIGlzIGludGVudGlvbmFsXG4gICAgY29uc3QgaHR0cExpc3RlbmVyID0gbmV3IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyKFxuICAgICAgc2NvcGUsXG4gICAgICBgJHtpZH0tcmVkaXJlY3RgLFxuICAgICAge1xuICAgICAgICBsb2FkQmFsYW5jZXIsXG4gICAgICAgIHByb3RvY29sOiBBcHBsaWNhdGlvblByb3RvY29sLkhUVFAsIC8vIE5PU09OQVJcbiAgICAgICAgZGVmYXVsdEFjdGlvbjogTGlzdGVuZXJBY3Rpb24ucmVkaXJlY3Qob3B0KSxcbiAgICAgIH1cbiAgICApO1xuICAgIGxvYWRCYWxhbmNlci5saXN0ZW5lcnMucHVzaChodHRwTGlzdGVuZXIpO1xuICB9XG5cbiAgcmV0dXJuIGxpc3RlbmVyO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogQ3JlYXRlcyBhIFRhcmdldCBHcm91cCBmb3IgTGFtYmRhIGZ1bmN0aW9ucyBhbmQgYWRkcyB0aGVcbiAqIHByb3ZpZGVkIGZ1bmN0aW9ucyBhcyBhIHRhcmdldCB0byB0aGF0IGdyb3VwLiBUaGVuIGFkZHNcbiAqIHRoZSBuZXcgVGFyZ2V0IEdyb3VwIHRvIHRoZSBwcm92aWRlZCBMaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFkZExhbWJkYVRhcmdldChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgY3VycmVudExpc3RlbmVyOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcixcbiAgbGFtYmRhRnVuY3Rpb246IGxhbWJkYS5JRnVuY3Rpb24sXG4gIHJ1bGVQcm9wcz86IGVsYi5BZGRSdWxlUHJvcHMsXG4gIHRhcmdldFByb3BzPzogZWxiLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBQcm9wcyxcbik6IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwICB7XG5cbiAgLy8gIENyZWF0ZSB0aGUgdGFyZ2V0IGFuZCBhc3NpZ24gaXQgdG8gYSBuZXcgdGFyZ2V0IGdyb3VwXG4gIGNvbnN0IGxhbWJkYVRhcmdldCA9IG5ldyBlbGJ0LkxhbWJkYVRhcmdldChsYW1iZGFGdW5jdGlvbik7XG4gIGNvbnN0IG5ld1RhcmdldEdyb3VwID0gbmV3IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKHNjb3BlLCBgJHtpZH0tdGdgLCB7XG4gICAgdGFyZ2V0czogW2xhbWJkYVRhcmdldF0sXG4gICAgdGFyZ2V0R3JvdXBOYW1lOiB0YXJnZXRQcm9wcyA/IHRhcmdldFByb3BzLnRhcmdldEdyb3VwTmFtZSA6IHVuZGVmaW5lZCxcbiAgICBoZWFsdGhDaGVjazogdGFyZ2V0UHJvcHMgPyB0YXJnZXRQcm9wcy5oZWFsdGhDaGVjayA6IHVuZGVmaW5lZFxuICB9KTtcblxuICAvLyBUaGUgaW50ZXJmYWNlIEFkZFJ1bGVQcm9wcyBpbmNsdWRlcyBjb25kaXRpb25zIGFuZCBwcmlvcml0eSwgY29tYmluZSB0aGF0XG4gIC8vIHdpdGggdGFyZ2V0R3JvdXBzIGFuZCB3ZSBjYW4gYXNzZW1ibGUgQWRkQXBwbGljYXRpb25UYXJnZXRHcm91cFByb3BzXG4gIGNvbnN0IGNvbnNvbGlkYXRlZFRhcmdldFByb3BzID0gY29uc29saWRhdGVQcm9wcyh7fSwgcnVsZVByb3BzLCB7IHRhcmdldEdyb3VwczogW25ld1RhcmdldEdyb3VwXSB9KTtcbiAgY3VycmVudExpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgJHtzY29wZS5ub2RlLmlkfS10YXJnZXRzYCwgY29uc29saWRhdGVkVGFyZ2V0UHJvcHMpO1xuXG4gIG5ld1RhcmdldEdyb3VwLnNldEF0dHJpYnV0ZSgnc3RpY2tpbmVzcy5lbmFibGVkJywgdW5kZWZpbmVkKTtcbiAgcmV0dXJuIG5ld1RhcmdldEdyb3VwO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBBZGRGYXJnYXRlVGFyZ2V0KFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogc3RyaW5nLFxuICBjdXJyZW50TGlzdGVuZXI6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyLFxuICBmYXJnYXRlU2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlLFxuICBydWxlUHJvcHM/OiBlbGIuQWRkUnVsZVByb3BzLFxuICB0YXJnZXRQcm9wcz86IGVsYi5BcHBsaWNhdGlvblRhcmdldEdyb3VwUHJvcHMsXG4pOiBlbGIuQXBwbGljYXRpb25UYXJnZXRHcm91cCAge1xuXG4gIGlmICh0YXJnZXRQcm9wcz8ucHJvdG9jb2wgIT09IGVsYi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFBTKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdBV1MgcmVjb21tZW5kcyB1c2luZyBIVFRQUyBwcm90b2NvbCBmb3IgVGFyZ2V0IEdyb3VwcyBpbiBwcm9kdWN0aW9uIGFwcGxpY2F0aW9ucycpO1xuICB9XG5cbiAgY29uc3QgbmV3VGFyZ2V0R3JvdXAgPSBuZXcgZWxiLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAoc2NvcGUsIGAke2lkfS10Z2AsIHRhcmdldFByb3BzKTtcblxuICAvLyBUaGUgaW50ZXJmYWNlIEFkZFJ1bGVQcm9wcyBpbmNsdWRlcyBjb25kaXRpb25zIGFuZCBwcmlvcml0eSwgY29tYmluZSB0aGF0XG4gIC8vIHdpdGggdGFyZ2V0R3JvdXBzIGFuZCB3ZSBjYW4gYXNzZW1ibGUgYW4gQWRkQXBwbGljYXRpb25UYXJnZXRHcm91cFByb3BzIG9iamVjdFxuICBjb25zdCBjb25zb2xpZGF0ZWRUYXJnZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoeyB0YXJnZXRHcm91cHM6IFtuZXdUYXJnZXRHcm91cF0gfSwgcnVsZVByb3BzKTtcblxuICBjdXJyZW50TGlzdGVuZXIuYWRkVGFyZ2V0R3JvdXBzKGAke3Njb3BlLm5vZGUuaWR9LXRhcmdldHNgLCBjb25zb2xpZGF0ZWRUYXJnZXRQcm9wcyk7XG4gIG5ld1RhcmdldEdyb3VwLmFkZFRhcmdldChmYXJnYXRlU2VydmljZSk7XG5cbiAgcmV0dXJuIG5ld1RhcmdldEdyb3VwO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogTG9va3MgZm9yIHRoZSBsaXN0ZW5lciBhc3NvY2lhdGVkIHdpdGggVGFyZ2V0IEdyb3Vwc1xuICogSWYgdGhlcmUgaXMgYSBzaW5nbGUgbGlzdGVuZXIsIHRoaXMgcmV0dXJucyBpdCB3aGV0aGVyIGl0IGlzIEhUVFAgb3IgSFRUUFNcbiAqIElmIHRoZXJlIGFyZSAyIGxpc3RlbmVycywgaXQgZmluZHMgdGhlIEhUVFBTIGxpc3RlbmVyICh3ZSBhc3N1bWUgdGhlIEhUVFAgbGlzdGVuZXIgcmVkaXJlY3RzIHRvIEhUVFBTKVxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0QWN0aXZlTGlzdGVuZXIobGlzdGVuZXJzOiBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcltdKTogZWxiLkFwcGxpY2F0aW9uTGlzdGVuZXIge1xuICBsZXQgbGlzdGVuZXI6IGVsYi5BcHBsaWNhdGlvbkxpc3RlbmVyO1xuXG4gIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgYXJlIG5vIGxpc3RlbmVycyBpbiB0aGUgQUxCYCk7XG4gIH1cbiAgaWYgKGxpc3RlbmVycy5sZW5ndGggPT09IDEgKSB7XG4gICAgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbMF07XG4gIH0gZWxzZSB7XG4gICAgbGlzdGVuZXIgPSBsaXN0ZW5lcnMuZmluZChpID0+IChpLm5vZGUuY2hpbGRyZW5bMF0gYXMgZWxiLkNmbkxpc3RlbmVyKS5wcm90b2NvbCA9PT0gXCJIVFRQU1wiKSBhcyBlbGIuQXBwbGljYXRpb25MaXN0ZW5lcjtcbiAgfVxuICByZXR1cm4gbGlzdGVuZXI7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENoZWNrQWxiUHJvcHMocHJvcHM6IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wcy5sb2FkQmFsYW5jZXJQcm9wcyAmJiBwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iaikge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgbG9hZEJhbGFuY2VyUHJvcHMgb3IgZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmosIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKChwcm9wcz8ubG9nQWxiQWNjZXNzTG9ncyA9PT0gZmFsc2UpICYmIChwcm9wcy5hbGJMb2dnaW5nQnVja2V0UHJvcHMpKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBJZiBsb2dBbGJBY2Nlc3NMb2dzIGlzIGZhbHNlLCBzdXBwbHlpbmcgYWxiTG9nZ2luZ0J1Y2tldFByb3BzIGlzIGludmFsaWQuXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wcy5saXN0ZW5lclByb3BzPy5jZXJ0aWZpY2F0ZUFybnMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9IFwiY2VydGlmaWNhdGVBcm5zIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBzdXBwbHkgY2VydGlmaWNhdGVzIHVzaW5nIHByb3BzLmxpc3RlbmVyUHJvcHMuY2VydGlmaWNhdGVzXFxuXCI7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoVmFsaWRhdGVBZGRMaXN0ZW5lclByb3BzKHByb3BzKSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gXCJXaGVuIGFkZGluZyB0aGUgZmlyc3QgbGlzdGVuZXIgYW5kIHRhcmdldCB0byBhIGxvYWQgYmFsYW5jZXIsIGxpc3RlbmVyUHJvcHMgbXVzdCBiZSBzcGVjaWZpZWQgYW5kIGluY2x1ZGUgYXQgbGVhc3QgYSBjZXJ0aWZpY2F0ZSBvciBwcm90b2NvbDogSFRUUFxcblwiO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKFxuICAgIHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqICYmXG4gICAgcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmoubGlzdGVuZXJzLmxlbmd0aCA+IDAgJiZcbiAgICBwcm9wcy5saXN0ZW5lclByb3BzXG4gICkge1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIGVycm9yTWVzc2FnZXMgKz0gXCJUaGlzIGxvYWQgYmFsYW5jZXIgYWxyZWFkeSBoYXMgYSBsaXN0ZW5lciwgbGlzdGVuZXJQcm9wcyBtYXkgbm90IGJlIHNwZWNpZmllZFxcblwiO1xuICB9XG5cbiAgaWYgKFxuICAgIHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqICYmXG4gICAgcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmoubGlzdGVuZXJzLmxlbmd0aCA+IDAgJiZcbiAgICAhcHJvcHMucnVsZVByb3BzXG4gICkge1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIGVycm9yTWVzc2FnZXMgKz0gXCJXaGVuIGFkZGluZyBhIHNlY29uZCB0YXJnZXQgdG8gYW4gZXhpc3RpbmcgbGlzdGVuZXIsIHRoZXJlIG11c3QgYmUgcnVsZXMgcHJvdmlkZWRcXG5cIjtcbiAgfVxuXG4gIC8vIENoZWNrIGNvbnN0cnVjdCBzcGVjaWZpYyBpbnZhbGlkIGlucHV0c1xuICBpZiAocHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmogJiYgIXByb3BzLmV4aXN0aW5nVnBjKSB7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgZXJyb3JNZXNzYWdlcyArPSBcIkFuIGV4aXN0aW5nIEFMQiBpcyBhbHJlYWR5IGluIGEgVlBDLCB0aGF0IFZQQyBtdXN0IGJlIHByb3ZpZGVkIGluIHByb3BzLmV4aXN0aW5nVnBjIGZvciB0aGUgcmVzdCBvZiB0aGUgY29uc3RydWN0IHRvIHVzZS5cXG5cIjtcbiAgfVxuXG4gIGlmIChwcm9wcy5sb2FkQmFsYW5jZXJQcm9wcz8udnBjKSB7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnU3BlY2lmeSBhbnkgZXhpc3RpbmcgVlBDIGF0IHRoZSBjb25zdHJ1Y3QgbGV2ZWwsIG5vdCB3aXRoaW4gbG9hZEJhbGFuY2VyUHJvcHMuXFxuJztcbiAgfVxuXG4gIGlmIChwcm9wcy5leGlzdGluZ0xvYWRCYWxhbmNlck9iaikge1xuICAgIHByaW50V2FybmluZyhcbiAgICAgIFwiVGhlIHB1YmxpYy9wcml2YXRlIHByb3BlcnR5IG9mIGFuIGV4aXN0aW5nIEFMQiBtdXN0IG1hdGNoIHRoZSBwcm9wcy5wdWJsaWNBcGkgc2V0dGluZyBwcm92aWRlZC5cIlxuICAgICk7XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxuXG59XG5cbmZ1bmN0aW9uIFZhbGlkYXRlQWRkTGlzdGVuZXJQcm9wcyhwcm9wczogYW55KSB7XG4gIGlmICgoKHByb3BzLmV4aXN0aW5nTG9hZEJhbGFuY2VyT2JqICYmXG4gICAgcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmoubGlzdGVuZXJzLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAhcHJvcHMuZXhpc3RpbmdMb2FkQmFsYW5jZXJPYmopICYmXG4gICFwcm9wcy5saXN0ZW5lclByb3BzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19
|
package/lib/apigateway-helper.js
CHANGED
|
@@ -56,7 +56,7 @@ function configureCloudwatchRoleForApi(scope, api) {
|
|
|
56
56
|
utils_1.addCfnSuppressRules(deployment, [
|
|
57
57
|
{
|
|
58
58
|
id: 'W45',
|
|
59
|
-
reason: `ApiGateway has AccessLogging enabled in AWS::ApiGateway::Stage resource, but cfn_nag
|
|
59
|
+
reason: `ApiGateway has AccessLogging enabled in AWS::ApiGateway::Stage resource, but cfn_nag checks for it in AWS::ApiGateway::Deployment resource`
|
|
60
60
|
}
|
|
61
61
|
]);
|
|
62
62
|
// Return the CW Role
|
|
@@ -286,8 +286,8 @@ function addProxyMethodToApiResource(params) {
|
|
|
286
286
|
requestModels: params.requestModel
|
|
287
287
|
};
|
|
288
288
|
// Setup the API Gateway method
|
|
289
|
-
const
|
|
290
|
-
return params.apiResource.addMethod(params.apiMethod, apiGatewayIntegration,
|
|
289
|
+
const overriddenProps = utils_1.consolidateProps(defaultMethodOptions, params.methodOptions);
|
|
290
|
+
return params.apiResource.addMethod(params.apiMethod, apiGatewayIntegration, overriddenProps);
|
|
291
291
|
}
|
|
292
292
|
exports.addProxyMethodToApiResource = addProxyMethodToApiResource;
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpZ2F0ZXdheS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcGlnYXRld2F5LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQVVILG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCwrRUFBOEQ7QUFDOUQsbUNBQWdFO0FBS2hFOzs7O0dBSUc7QUFDSCxTQUFTLDZCQUE2QixDQUFDLEtBQWdCLEVBQUUsR0FBMkI7SUFDbEYsdURBQXVEO0lBQ3ZELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSw2QkFBNkIsRUFBRTtRQUMvRSxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7UUFDL0QsY0FBYyxFQUFFO1lBQ2QsaUNBQWlDLEVBQUUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDO2dCQUN4RCxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ25DLE9BQU8sRUFBRTs0QkFDUCxxQkFBcUI7NEJBQ3JCLHNCQUFzQjs0QkFDdEIsd0JBQXdCOzRCQUN4Qix5QkFBeUI7NEJBQ3pCLG1CQUFtQjs0QkFDbkIsbUJBQW1COzRCQUNuQixzQkFBc0I7eUJBQ3ZCO3dCQUNELFNBQVMsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQztxQkFDdkYsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsb0ZBQW9GO0lBQ3BGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBMEIsQ0FBQztJQUN2RSxNQUFNLFVBQVUsR0FB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LENBQUM7SUFDcEYsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQy9GLENBQUM7QUF4RUQsa0VBd0VDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBhcGlnYXRld2F5IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5JztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGFwaURlZmF1bHRzIGZyb20gJy4vYXBpZ2F0ZXdheS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBidWlsZExvZ0dyb3VwIH0gZnJvbSAnLi9jbG91ZHdhdGNoLWxvZy1ncm91cC1oZWxwZXInO1xuaW1wb3J0IHsgYWRkQ2ZuU3VwcHJlc3NSdWxlcywgY29uc29saWRhdGVQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgSVJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhbmQgY29uZmlndXJlcyBhY2Nlc3MgbG9nZ2luZyBmb3IgQVBJIEdhdGV3YXkgcmVzb3VyY2VzLlxuICogQHBhcmFtIHNjb3BlIC0gdGhlIGNvbnN0cnVjdCB0byB3aGljaCB0aGUgYWNjZXNzIGxvZ2dpbmcgY2FwYWJpbGl0aWVzIHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAqIEBwYXJhbSBhcGkgLSBhbiBleGlzdGluZyBhcGkuUmVzdEFwaSBvciBhcGkuTGFtYmRhUmVzdEFwaS5cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlQ2xvdWR3YXRjaFJvbGVGb3JBcGkoc2NvcGU6IENvbnN0cnVjdCwgYXBpOiBhcGlnYXRld2F5LlJlc3RBcGlCYXNlKTogaWFtLlJvbGUge1xuICAvLyBTZXR1cCB0aGUgSUFNIFJvbGUgZm9yIEFQSSBHYXRld2F5IENsb3VkV2F0Y2ggYWNjZXNzXG4gIGNvbnN0IHJlc3RBcGlDbG91ZHdhdGNoUm9sZSA9IG5ldyBpYW0uUm9sZShzY29wZSwgJ0xhbWJkYVJlc3RBcGlDbG91ZFdhdGNoUm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJyksXG4gICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgIExhbWJkYVJlc3RBcGlDbG91ZFdhdGNoUm9sZVBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgIHN0YXRlbWVudHM6IFtuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJyxcbiAgICAgICAgICAgICdsb2dzOkRlc2NyaWJlTG9nR3JvdXBzJyxcbiAgICAgICAgICAgICdsb2dzOkRlc2NyaWJlTG9nU3RyZWFtcycsXG4gICAgICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgICAgICAgJ2xvZ3M6R2V0TG9nRXZlbnRzJyxcbiAgICAgICAgICAgICdsb2dzOkZpbHRlckxvZ0V2ZW50cydcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06bG9nczoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06KmBdXG4gICAgICAgIH0pXVxuICAgICAgfSlcbiAgICB9XG4gIH0pO1xuICAvLyBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBBV1M6OkFwaUdhdGV3YXk6OkFjY291bnQgd2l0aCBDbG91ZFdhdGNoIFJvbGUgZm9yIEFwaUdhdGV3YXlcbiAgY29uc3QgQ2ZuQXBpID0gYXBpLm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGFwaWdhdGV3YXkuQ2ZuUmVzdEFwaTtcbiAgY29uc3QgY2ZuQWNjb3VudDogYXBpZ2F0ZXdheS5DZm5BY2NvdW50ID0gbmV3IGFwaWdhdGV3YXkuQ2ZuQWNjb3VudChzY29wZSwgJ0xhbWJkYVJlc3RBcGlBY2NvdW50Jywge1xuICAgIGNsb3VkV2F0Y2hSb2xlQXJuOiByZXN0QXBpQ2xvdWR3YXRjaFJvbGUucm9sZUFyblxuICB9KTtcbiAgY2ZuQWNjb3VudC5hZGREZXBlbmRlbmN5KENmbkFwaSk7XG5cbiAgLy8gU3VwcHJlc3MgQ2ZuIE5hZyB3YXJuaW5nIGZvciBBUElHXG4gIGNvbnN0IGRlcGxveW1lbnQ6IGFwaWdhdGV3YXkuQ2ZuRGVwbG95bWVudCA9IGFwaS5sYXRlc3REZXBsb3ltZW50Py5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBhcGlnYXRld2F5LkNmbkRlcGxveW1lbnQ7XG4gIGFkZENmblN1cHByZXNzUnVsZXMoZGVwbG95bWVudCwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzQ1JyxcbiAgICAgIHJlYXNvbjogYEFwaUdhdGV3YXkgaGFzIEFjY2Vzc0xvZ2dpbmcgZW5hYmxlZCBpbiBBV1M6OkFwaUdhdGV3YXk6OlN0YWdlIHJlc291cmNlLCBidXQgY2ZuX25hZyBjaGVja2VzIGZvciBpdCBpbiBBV1M6OkFwaUdhdGV3YXk6OkRlcGxveW1lbnQgcmVzb3VyY2VgXG4gICAgfVxuICBdKTtcblxuICAvLyBSZXR1cm4gdGhlIENXIFJvbGVcbiAgcmV0dXJuIHJlc3RBcGlDbG91ZHdhdGNoUm9sZTtcbn1cblxuaW50ZXJmYWNlIENvbmZpZ3VyZUxhbWJkYVJlc3RBcGlSZXNwb25zZSB7XG4gIGFwaTogYXBpZ2F0ZXdheS5SZXN0QXBpLFxuICByb2xlPzogaWFtLlJvbGVcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuZCBjb25maWd1cmVzIGFuIGFwaS5MYW1iZGFSZXN0QXBpLlxuICogQHBhcmFtIHNjb3BlIC0gdGhlIGNvbnN0cnVjdCB0byB3aGljaCB0aGUgTGFtYmRhUmVzdEFwaSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gZGVmYXVsdEFwaUdhdGV3YXlQcm9wcyAtIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgZm9yIHRoZSBMYW1iZGFSZXN0QXBpLlxuICogQHBhcmFtIGFwaUdhdGV3YXlQcm9wcyAtIChvcHRpb25hbCkgdXNlci1zcGVjaWZpZWQgcHJvcGVydGllcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICovXG5mdW5jdGlvbiBjb25maWd1cmVMYW1iZGFSZXN0QXBpKHNjb3BlOiBDb25zdHJ1Y3QsIGRlZmF1bHRBcGlHYXRld2F5UHJvcHM6IGFwaWdhdGV3YXkuTGFtYmRhUmVzdEFwaVByb3BzLFxuICBhcGlHYXRld2F5UHJvcHM/OiBhcGlnYXRld2F5LkxhbWJkYVJlc3RBcGlQcm9wcyk6IENvbmZpZ3VyZUxhbWJkYVJlc3RBcGlSZXNwb25zZSB7XG5cbiAgLy8gQVBJIEdhdGV3YXkgZG9lc24ndCBhbGxvdyBib3RoIGVuZHBvaW50VHlwZXMgYW5kIGVuZHBvaW50Q29uZmlndXJhdGlvbiwgY2hlY2sgd2hldGhlciBlbmRQb2ludFR5cGVzIGV4aXN0c1xuICBpZiAoYXBpR2F0ZXdheVByb3BzPy5lbmRwb2ludFR5cGVzKSB7XG4gICAgdGhyb3cgRXJyb3IoJ1NvbHV0aW9ucyBDb25zdHJ1Y3RzIGludGVybmFsbHkgdXNlcyBlbmRwb2ludENvbmZpZ3VyYXRpb24sIHVzZSBlbmRwb2ludENvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBlbmRwb2ludFR5cGVzJyk7XG4gIH1cblxuICAvLyBEZWZpbmUgdGhlIEFQSSBvYmplY3RcbiAgbGV0IGFwaTogYXBpZ2F0ZXdheS5SZXN0QXBpO1xuICBpZiAoYXBpR2F0ZXdheVByb3BzKSB7XG4gICAgLy8gSWYgcHJvcGVydHkgb3ZlcnJpZGVzIGhhdmUgYmVlbiBwcm92aWRlZCwgaW5jb3Jwb3JhdGUgdGhlbSBhbmQgZGVwbG95XG4gICAgY29uc3QgY29uc29saWRhdGVkQXBpR2F0ZXdheVByb3BzID0gY29uc29saWRhdGVQcm9wcyhkZWZhdWx0QXBpR2F0ZXdheVByb3BzLCBhcGlHYXRld2F5UHJvcHMsIHsgY2xvdWRXYXRjaFJvbGU6IGZhbHNlIH0pO1xuICAgIGFwaSA9IG5ldyBhcGlnYXRld2F5LkxhbWJkYVJlc3RBcGkoc2NvcGUsICdMYW1iZGFSZXN0QXBpJywgY29uc29saWRhdGVkQXBpR2F0ZXdheVByb3BzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBubyBwcm9wZXJ0eSBvdmVycmlkZXMsIGRlcGxveSB1c2luZyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAgYXBpID0gbmV3IGFwaWdhdGV3YXkuTGFtYmRhUmVzdEFwaShzY29wZSwgJ0xhbWJkYVJlc3RBcGknLCBkZWZhdWx0QXBpR2F0ZXdheVByb3BzKTtcbiAgfVxuICAvLyBDb25maWd1cmUgQVBJIGFjY2VzcyBsb2dnaW5nXG4gIGNvbnN0IGN3Um9sZSA9IChhcGlHYXRld2F5UHJvcHM/LmNsb3VkV2F0Y2hSb2xlICE9PSBmYWxzZSkgPyBjb25maWd1cmVDbG91ZHdhdGNoUm9sZUZvckFwaShzY29wZSwgYXBpKSA6IHVuZGVmaW5lZDtcblxuICAvLyBDb25maWd1cmUgVXNhZ2UgUGxhblxuICBjb25zdCB1c2FnZVBsYW5Qcm9wczogYXBpZ2F0ZXdheS5Vc2FnZVBsYW5Qcm9wcyA9IHtcbiAgICBhcGlTdGFnZXM6IFt7XG4gICAgICBhcGksXG4gICAgICBzdGFnZTogYXBpLmRlcGxveW1lbnRTdGFnZVxuICAgIH1dXG4gIH07XG5cbiAgY29uc3QgcGxhbiA9IGFwaS5hZGRVc2FnZVBsYW4oJ1VzYWdlUGxhbicsIHVzYWdlUGxhblByb3BzKTtcblxuICAvLyBJZiByZXF1aXJlQXBpS2V5IHBhcmFtIGlzIHNldCB0byB0cnVlLCBjcmVhdGUgYSBhcGkga2V5ICYgYXNzb2NpYXRlIHRvIFVzYWdlIFBsYW5cbiAgaWYgKGFwaUdhdGV3YXlQcm9wcz8uZGVmYXVsdE1ldGhvZE9wdGlvbnM/LmFwaUtleVJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgLy8gQ29uZmlndXJlIFVzYWdlIFBsYW4gd2l0aCBBUEkgS2V5XG4gICAgY29uc3Qga2V5ID0gYXBpLmFkZEFwaUtleSgnQXBpS2V5Jyk7XG4gICAgcGxhbi5hZGRBcGlLZXkoa2V5KTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgQVBJIGFuZCBDVyBSb2xlXG4gIHJldHVybiB7IGFwaSwgcm9sZTogY3dSb2xlfTtcbn1cblxuaW50ZXJmYWNlIENvbmZpZ3VyZVJlc3RBcGlSZXNwb25zZSB7XG4gIGFwaTogYXBpZ2F0ZXdheS5SZXN0QXBpLFxuICByb2xlPzogaWFtLlJvbGVcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuZCBjb25maWd1cmVzIGFuIGFwaS5SZXN0QXBpLlxuICogQHBhcmFtIHNjb3BlIC0gdGhlIGNvbnN0cnVjdCB0byB3aGljaCB0aGUgUmVzdEFwaSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gZGVmYXVsdEFwaUdhdGV3YXlQcm9wcyAtIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgZm9yIHRoZSBSZXN0QXBpLlxuICogQHBhcmFtIGFwaUdhdGV3YXlQcm9wcyAtIChvcHRpb25hbCkgdXNlci1zcGVjaWZpZWQgcHJvcGVydGllcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICovXG5mdW5jdGlvbiBjb25maWd1cmVSZXN0QXBpKHNjb3BlOiBDb25zdHJ1Y3QsIGRlZmF1bHRBcGlHYXRld2F5UHJvcHM6IGFwaWdhdGV3YXkuUmVzdEFwaVByb3BzLFxuICBhcGlHYXRld2F5UHJvcHM/OiBhcGlnYXRld2F5LlJlc3RBcGlQcm9wcyk6IENvbmZpZ3VyZVJlc3RBcGlSZXNwb25zZSB7XG5cbiAgLy8gQVBJIEdhdGV3YXkgZG9lc24ndCBhbGxvdyBib3RoIGVuZHBvaW50VHlwZXMgYW5kIGVuZHBvaW50Q29uZmlndXJhdGlvbiwgY2hlY2sgd2hldGhlciBlbmRQb2ludFR5cGVzIGV4aXN0c1xuICBpZiAoYXBpR2F0ZXdheVByb3BzPy5lbmRwb2ludFR5cGVzKSB7XG4gICAgdGhyb3cgRXJyb3IoJ1NvbHV0aW9ucyBDb25zdHJ1Y3RzIGludGVybmFsbHkgdXNlcyBlbmRwb2ludENvbmZpZ3VyYXRpb24sIHVzZSBlbmRwb2ludENvbmZpZ3VyYXRpb24gaW5zdGVhZCBvZiBlbmRwb2ludFR5cGVzJyk7XG4gIH1cblxuICBjb25zdCBjb25zb2xpZGF0ZWRBcGlHYXRld2F5UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRBcGlHYXRld2F5UHJvcHMsIGFwaUdhdGV3YXlQcm9wcywgeyBjbG91ZFdhdGNoUm9sZTogZmFsc2UgfSk7XG4gIGNvbnN0IGFwaSA9IG5ldyBhcGlnYXRld2F5LlJlc3RBcGkoc2NvcGUsICdSZXN0QXBpJywgY29uc29saWRhdGVkQXBpR2F0ZXdheVByb3BzKTtcblxuICBsZXQgY3dSb2xlO1xuXG4gIC8vIENvbmZpZ3VyZSBBUEkgYWNjZXNzIGxvZ2dpbmdcbiAgaWYgKGFwaUdhdGV3YXlQcm9wcz8uY2xvdWRXYXRjaFJvbGUgIT09IGZhbHNlKSB7XG4gICAgY3dSb2xlID0gY29uZmlndXJlQ2xvdWR3YXRjaFJvbGVGb3JBcGkoc2NvcGUsIGFwaSk7XG4gIH1cblxuICAvLyBDb25maWd1cmUgVXNhZ2UgUGxhblxuICBjb25zdCB1c2FnZVBsYW5Qcm9wczogYXBpZ2F0ZXdheS5Vc2FnZVBsYW5Qcm9wcyA9IHtcbiAgICBhcGlTdGFnZXM6IFt7XG4gICAgICBhcGksXG4gICAgICBzdGFnZTogYXBpLmRlcGxveW1lbnRTdGFnZVxuICAgIH1dXG4gIH07XG5cbiAgY29uc3QgcGxhbiA9IGFwaS5hZGRVc2FnZVBsYW4oJ1VzYWdlUGxhbicsIHVzYWdlUGxhblByb3BzKTtcblxuICAvLyBJZiByZXF1aXJlQXBpS2V5IHBhcmFtIGlzIHNldCB0byB0cnVlLCBjcmVhdGUgYSBhcGkga2V5ICYgYXNzb2NpYXRlIHRvIFVzYWdlIFBsYW5cbiAgaWYgKGFwaUdhdGV3YXlQcm9wcz8uZGVmYXVsdE1ldGhvZE9wdGlvbnM/LmFwaUtleVJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgLy8gQ29uZmlndXJlIFVzYWdlIFBsYW4gd2l0aCBBUEkgS2V5XG4gICAgY29uc3Qga2V5ID0gYXBpLmFkZEFwaUtleSgnQXBpS2V5Jyk7XG4gICAgcGxhbi5hZGRBcGlLZXkoa2V5KTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgQVBJIGFuZCBDVyBSb2xlXG4gIHJldHVybiB7IGFwaSwgcm9sZTogY3dSb2xlIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsTGFtYmRhUmVzdEFwaVJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgYXBpOiBhcGlnYXRld2F5LlJlc3RBcGksXG4gIHJlYWRvbmx5IHJvbGU/OiBpYW0uUm9sZSxcbiAgcmVhZG9ubHkgZ3JvdXA6IGxvZ3MuTG9nR3JvdXBcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIGdsb2JhbCBhcGkuUmVzdEFwaSBkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggYW4gQVdTIExhbWJkYSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzY29wZSAtIHRoZSBjb25zdHJ1Y3QgdG8gd2hpY2ggdGhlIFJlc3RBcGkgc2hvdWxkIGJlIGF0dGFjaGVkIHRvLlxuICogQHBhcmFtIF9leGlzdGluZ0xhbWJkYU9iaiAtIGFuIGV4aXN0aW5nIEFXUyBMYW1iZGEgZnVuY3Rpb24uXG4gKiBAcGFyYW0gYXBpR2F0ZXdheVByb3BzIC0gKG9wdGlvbmFsKSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHbG9iYWxMYW1iZGFSZXN0QXBpKHNjb3BlOiBDb25zdHJ1Y3QsIF9leGlzdGluZ0xhbWJkYU9iajogbGFtYmRhLkZ1bmN0aW9uLFxuICBhcGlHYXRld2F5UHJvcHM/OiBhcGlnYXRld2F5LkxhbWJkYVJlc3RBcGlQcm9wcywgbG9nR3JvdXBQcm9wcz86IGxvZ3MuTG9nR3JvdXBQcm9wcyk6IEdsb2JhbExhbWJkYVJlc3RBcGlSZXNwb25zZSB7XG4gIC8vIENvbmZpZ3VyZSBsb2cgZ3JvdXAgZm9yIEFQSSBHYXRld2F5IEFjY2Vzc0xvZ2dpbmdcbiAgY29uc3QgbG9nR3JvdXAgPSBidWlsZExvZ0dyb3VwKHNjb3BlLCAnQXBpQWNjZXNzTG9nR3JvdXAnLCBsb2dHcm91cFByb3BzKTtcblxuICBjb25zdCBkZWZhdWx0UHJvcHMgPSBhcGlEZWZhdWx0cy5EZWZhdWx0R2xvYmFsTGFtYmRhUmVzdEFwaVByb3BzKF9leGlzdGluZ0xhbWJkYU9iaiwgbG9nR3JvdXApO1xuICBjb25zdCBjb25maWd1cmVMYW1iZGFSZXN0QXBpUmVzcG9uc2UgPSBjb25maWd1cmVMYW1iZGFSZXN0QXBpKHNjb3BlLCBkZWZhdWx0UHJvcHMsIGFwaUdhdGV3YXlQcm9wcyk7XG4gIHJldHVybiB7IGFwaTogY29uZmlndXJlTGFtYmRhUmVzdEFwaVJlc3BvbnNlLmFwaSwgcm9sZTogY29uZmlndXJlTGFtYmRhUmVzdEFwaVJlc3BvbnNlLnJvbGUsIGdyb3VwOiBsb2dHcm91cH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uYWxMYW1iZGFSZXN0QXBpUmVzcG9uc2Uge1xuICByZWFkb25seSBhcGk6IGFwaWdhdGV3YXkuUmVzdEFwaSxcbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5Sb2xlLFxuICByZWFkb25seSBncm91cDogbG9ncy5Mb2dHcm91cCxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIHJlZ2lvbmFsIGFwaS5SZXN0QXBpIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCBhbiBBV1MgTGFtYmRhIGZ1bmN0aW9uLlxuICogQHBhcmFtIHNjb3BlIC0gdGhlIGNvbnN0cnVjdCB0byB3aGljaCB0aGUgUmVzdEFwaSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gZXhpc3RpbmdMYW1iZGFPYmogLSBhbiBleGlzdGluZyBBV1MgTGFtYmRhIGZ1bmN0aW9uLlxuICogQHBhcmFtIGFwaUdhdGV3YXlQcm9wcyAtIChvcHRpb25hbCkgdXNlci1zcGVjaWZpZWQgcHJvcGVydGllcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVnaW9uYWxMYW1iZGFSZXN0QXBpKHNjb3BlOiBDb25zdHJ1Y3QsIGV4aXN0aW5nTGFtYmRhT2JqOiBsYW1iZGEuRnVuY3Rpb24sXG4gIGFwaUdhdGV3YXlQcm9wcz86IGFwaWdhdGV3YXkuTGFtYmRhUmVzdEFwaVByb3BzLCBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzKTogUmVnaW9uYWxMYW1iZGFSZXN0QXBpUmVzcG9uc2Uge1xuICAvLyBDb25maWd1cmUgbG9nIGdyb3VwIGZvciBBUEkgR2F0ZXdheSBBY2Nlc3NMb2dnaW5nXG4gIGNvbnN0IGxvZ0dyb3VwID0gYnVpbGRMb2dHcm91cChzY29wZSwgJ0FwaUFjY2Vzc0xvZ0dyb3VwJywgbG9nR3JvdXBQcm9wcyk7XG5cbiAgY29uc3QgZGVmYXVsdFByb3BzID0gYXBpRGVmYXVsdHMuRGVmYXVsdFJlZ2lvbmFsTGFtYmRhUmVzdEFwaVByb3BzKGV4aXN0aW5nTGFtYmRhT2JqLCBsb2dHcm91cCk7XG4gIGNvbnN0IGNvbmZpZ3VyZUxhbWJkYVJlc3RBcGlSZXNwb25zZSA9IGNvbmZpZ3VyZUxhbWJkYVJlc3RBcGkoc2NvcGUsIGRlZmF1bHRQcm9wcywgYXBpR2F0ZXdheVByb3BzKTtcbiAgcmV0dXJuIHsgYXBpOiBjb25maWd1cmVMYW1iZGFSZXN0QXBpUmVzcG9uc2UuYXBpLCByb2xlOiBjb25maWd1cmVMYW1iZGFSZXN0QXBpUmVzcG9uc2Uucm9sZSwgZ3JvdXA6IGxvZ0dyb3VwfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxSZXN0QXBpUmVzcG9uc2Uge1xuICByZWFkb25seSBhcGk6IGFwaWdhdGV3YXkuUmVzdEFwaSxcbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5Sb2xlLFxuICByZWFkb25seSBsb2dHcm91cDogbG9ncy5Mb2dHcm91cCxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIHN0YW5kYXJkIGFwaS5SZXN0QXBpLlxuICogQHBhcmFtIHNjb3BlIC0gdGhlIGNvbnN0cnVjdCB0byB3aGljaCB0aGUgUmVzdEFwaSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gYXBpR2F0ZXdheVByb3BzIC0gKG9wdGlvbmFsKSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHbG9iYWxSZXN0QXBpKHNjb3BlOiBDb25zdHJ1Y3QsIGFwaUdhdGV3YXlQcm9wcz86IGFwaWdhdGV3YXkuUmVzdEFwaVByb3BzLFxuICBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzKTogR2xvYmFsUmVzdEFwaVJlc3BvbnNlIHtcbiAgLy8gQ29uZmlndXJlIGxvZyBncm91cCBmb3IgQVBJIEdhdGV3YXkgQWNjZXNzTG9nZ2luZ1xuICBjb25zdCBsb2dHcm91cCA9IGJ1aWxkTG9nR3JvdXAoc2NvcGUsICdBcGlBY2Nlc3NMb2dHcm91cCcsIGxvZ0dyb3VwUHJvcHMpO1xuXG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IGFwaURlZmF1bHRzLkRlZmF1bHRHbG9iYWxSZXN0QXBpUHJvcHMobG9nR3JvdXApO1xuICBjb25zdCBjb25maWd1cmVSZXN0QXBpUmVzcG9uc2UgPSBjb25maWd1cmVSZXN0QXBpKHNjb3BlLCBkZWZhdWx0UHJvcHMsIGFwaUdhdGV3YXlQcm9wcyk7XG4gIHJldHVybiB7IGFwaTogY29uZmlndXJlUmVzdEFwaVJlc3BvbnNlLmFwaSwgcm9sZTogY29uZmlndXJlUmVzdEFwaVJlc3BvbnNlLnJvbGUsIGxvZ0dyb3VwIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uYWxSZXN0QXBpUmVzcG9uc2Uge1xuICByZWFkb25seSBhcGk6IGFwaWdhdGV3YXkuUmVzdEFwaSxcbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5Sb2xlLFxuICByZWFkb25seSBsb2dHcm91cDogbG9ncy5Mb2dHcm91cCxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIFJlZ2lvbmFsIGFwaS5SZXN0QXBpLlxuICogQHBhcmFtIHNjb3BlIC0gdGhlIGNvbnN0cnVjdCB0byB3aGljaCB0aGUgUmVzdEFwaSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gYXBpR2F0ZXdheVByb3BzIC0gKG9wdGlvbmFsKSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZWdpb25hbFJlc3RBcGkoc2NvcGU6IENvbnN0cnVjdCwgYXBpR2F0ZXdheVByb3BzPzogYXBpZ2F0ZXdheS5SZXN0QXBpUHJvcHMsXG4gIGxvZ0dyb3VwUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHMpOiBSZWdpb25hbFJlc3RBcGlSZXNwb25zZSB7XG4gIC8vIENvbmZpZ3VyZSBsb2cgZ3JvdXAgZm9yIEFQSSBHYXRld2F5IEFjY2Vzc0xvZ2dpbmdcbiAgY29uc3QgbG9nR3JvdXAgPSBidWlsZExvZ0dyb3VwKHNjb3BlLCAnQXBpQWNjZXNzTG9nR3JvdXAnLCBsb2dHcm91cFByb3BzKTtcblxuICBjb25zdCBkZWZhdWx0UHJvcHMgPSBhcGlEZWZhdWx0cy5EZWZhdWx0UmVnaW9uYWxSZXN0QXBpUHJvcHMobG9nR3JvdXApO1xuICBjb25zdCBjb25maWd1cmVSZXN0QXBpUmVzcG9uc2UgPSBjb25maWd1cmVSZXN0QXBpKHNjb3BlLCBkZWZhdWx0UHJvcHMsIGFwaUdhdGV3YXlQcm9wcyk7XG4gIHJldHVybiB7IGFwaTogY29uZmlndXJlUmVzdEFwaVJlc3BvbnNlLmFwaSwgcm9sZTogY29uZmlndXJlUmVzdEFwaVJlc3BvbnNlLnJvbGUsIGxvZ0dyb3VwIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU3BlY1Jlc3RBcGlSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGFwaTogYXBpZ2F0ZXdheS5TcGVjUmVzdEFwaSxcbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5Sb2xlLFxuICByZWFkb25seSBsb2dHcm91cDogbG9ncy5Mb2dHcm91cCxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZVNwZWNSZXN0QXBpKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBhcGlHYXRld2F5UHJvcHM6IGFwaWdhdGV3YXkuU3BlY1Jlc3RBcGlQcm9wcyxcbiAgbG9nR3JvdXBQcm9wcz86IGxvZ3MuTG9nR3JvdXBQcm9wcyk6IENyZWF0ZVNwZWNSZXN0QXBpUmVzcG9uc2Uge1xuXG4gIGNvbnN0IGxvZ0dyb3VwID0gYnVpbGRMb2dHcm91cChzY29wZSwgJ0FwaUFjY2Vzc0xvZ0dyb3VwJywgbG9nR3JvdXBQcm9wcyk7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IGFwaURlZmF1bHRzLkRlZmF1bHRTcGVjUmVzdEFwaVByb3BzKHNjb3BlLCBsb2dHcm91cCk7XG5cbiAgLy8gRGVmaW5lIHRoZSBBUEkgb2JqZWN0XG4gIGxldCBhcGk6IGFwaWdhdGV3YXkuU3BlY1Jlc3RBcGk7XG4gIC8vIElmIHByb3BlcnR5IG92ZXJyaWRlcyBoYXZlIGJlZW4gcHJvdmlkZWQsIGluY29ycG9yYXRlIHRoZW0gYW5kIGRlcGxveVxuICBjb25zdCBjb25zb2xpZGF0ZWRBcGlHYXRld2F5UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRQcm9wcywgYXBpR2F0ZXdheVByb3BzLCB7IGNsb3VkV2F0Y2hSb2xlOiBmYWxzZSB9KTtcbiAgYXBpID0gbmV3IGFwaWdhdGV3YXkuU3BlY1Jlc3RBcGkoc2NvcGUsICdTcGVjUmVzdEFwaScsIGNvbnNvbGlkYXRlZEFwaUdhdGV3YXlQcm9wcyk7XG4gIC8vIENvbmZpZ3VyZSBBUEkgYWNjZXNzIGxvZ2dpbmdcbiAgY29uc3QgY3dSb2xlID0gKGFwaUdhdGV3YXlQcm9wcz8uY2xvdWRXYXRjaFJvbGUgIT09IGZhbHNlKSA/IGNvbmZpZ3VyZUNsb3Vkd2F0Y2hSb2xlRm9yQXBpKHNjb3BlLCBhcGkpIDogdW5kZWZpbmVkO1xuXG4gIC8vIENvbmZpZ3VyZSBVc2FnZSBQbGFuXG4gIGNvbnN0IHVzYWdlUGxhblByb3BzOiBhcGlnYXRld2F5LlVzYWdlUGxhblByb3BzID0ge1xuICAgIGFwaVN0YWdlczogW3tcbiAgICAgIGFwaSxcbiAgICAgIHN0YWdlOiBhcGkuZGVwbG95bWVudFN0YWdlXG4gICAgfV1cbiAgfTtcblxuICBhcGkuYWRkVXNhZ2VQbGFuKCdVc2FnZVBsYW4nLCB1c2FnZVBsYW5Qcm9wcyk7XG5cbiAgcmV0dXJuIHsgYXBpLCByb2xlOiBjd1JvbGUsIGxvZ0dyb3VwfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2VJbnB1dFBhcmFtcyB7XG4gIHJlYWRvbmx5IHNlcnZpY2U6IHN0cmluZyxcbiAgcmVhZG9ubHkgYWN0aW9uPzogc3RyaW5nLFxuICByZWFkb25seSBwYXRoPzogc3RyaW5nLFxuICByZWFkb25seSBhcGlSZXNvdXJjZTogYXBpZ2F0ZXdheS5JUmVzb3VyY2UsXG4gIHJlYWRvbmx5IGFwaU1ldGhvZDogc3RyaW5nLFxuICByZWFkb25seSBhcGlHYXRld2F5Um9sZTogSVJvbGUsXG4gIHJlYWRvbmx5IHJlcXVlc3RUZW1wbGF0ZTogc3RyaW5nLFxuICByZWFkb25seSBhZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlcz86IHsgW2NvbnRlbnRUeXBlOiBzdHJpbmddOiBzdHJpbmc7IH0sXG4gIHJlYWRvbmx5IGludGVncmF0aW9uUmVzcG9uc2VzPzogY2RrLmF3c19hcGlnYXRld2F5LkludGVncmF0aW9uUmVzcG9uc2VbXSxcbiAgcmVhZG9ubHkgY29udGVudFR5cGU/OiBzdHJpbmcsXG4gIHJlYWRvbmx5IHJlcXVlc3RWYWxpZGF0b3I/OiBhcGlnYXRld2F5LklSZXF1ZXN0VmFsaWRhdG9yLFxuICByZWFkb25seSByZXF1ZXN0TW9kZWw/OiB7IFtjb250ZW50VHlwZTogc3RyaW5nXTogYXBpZ2F0ZXdheS5JTW9kZWw7IH0sXG4gIHJlYWRvbmx5IGF3c0ludGVncmF0aW9uUHJvcHM/OiBhcGlnYXRld2F5LkF3c0ludGVncmF0aW9uUHJvcHMgfCBhbnksXG4gIHJlYWRvbmx5IG1ldGhvZE9wdGlvbnM/OiBhcGlnYXRld2F5Lk1ldGhvZE9wdGlvbnNcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKHBhcmFtczogQWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlSW5wdXRQYXJhbXMpOiBhcGlnYXRld2F5Lk1ldGhvZCB7XG4gIC8vIE1ha2Ugc3VyZSB0aGUgdXNlciBoYXNuJ3QgYWxzbyBzcGVjaWZpZWQgdGhlIGFwcGxpY2F0aW9uL2pzb24gY29udGVudC10eXBlIGluIHRoZSBhZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlcyBvcHRpb25hbCBwcm9wZXJ0eVxuICBpZiAocGFyYW1zLmFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzICYmICdhcHBsaWNhdGlvbi9qc29uJyBpbiBwYXJhbXMuYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgVGVtcGxhdGUgZm9yIHRoZSBhcHBsaWNhdGlvbi9qc29uIGNvbnRlbnQtdHlwZSBtdXN0IGJlIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdFRlbXBsYXRlIHByb3BlcnR5IGFuZCBub3QgaW4gdGhlIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzIHByb3BlcnR5IGApO1xuICB9XG5cbiAgY29uc3QgcmVxdWVzdFRlbXBsYXRlcyA9IHtcbiAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogcGFyYW1zLnJlcXVlc3RUZW1wbGF0ZSxcbiAgICAuLi5wYXJhbXMuYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXNcbiAgfTtcblxuICAvLyBVc2UgdXNlci1wcm92aWRlZCBpbnRlZ3JhdGlvbiByZXNwb25zZXMsIG90aGVyd2lzZSBmYWxsYmFjayB0byB0aGUgZGVmYXVsdCBvbmVzIHdlIHByb3ZpZGUuXG4gIGNvbnN0IGludGVncmF0aW9uUmVzcG9uc2VzID0gcGFyYW1zLmludGVncmF0aW9uUmVzcG9uc2VzID8/IGFwaURlZmF1bHRzLkRlZmF1bHRJbnRlZ3JhdGlvblJlc3BvbnNlcygpO1xuXG4gIGxldCBiYXNlUHJvcHM6IGFwaWdhdGV3YXkuQXdzSW50ZWdyYXRpb25Qcm9wcyA9IHtcbiAgICBzZXJ2aWNlOiBwYXJhbXMuc2VydmljZSxcbiAgICBpbnRlZ3JhdGlvbkh0dHBNZXRob2Q6IFwiUE9TVFwiLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHBhc3N0aHJvdWdoQmVoYXZpb3I6IGFwaWdhdGV3YXkuUGFzc3Rocm91Z2hCZWhhdmlvci5ORVZFUixcbiAgICAgIGNyZWRlbnRpYWxzUm9sZTogcGFyYW1zLmFwaUdhdGV3YXlSb2xlLFxuICAgICAgcmVxdWVzdFBhcmFtZXRlcnM6IHtcbiAgICAgICAgXCJpbnRlZ3JhdGlvbi5yZXF1ZXN0LmhlYWRlci5Db250ZW50LVR5cGVcIjogcGFyYW1zLmNvbnRlbnRUeXBlID8gcGFyYW1zLmNvbnRlbnRUeXBlIDogXCInYXBwbGljYXRpb24vanNvbidcIlxuICAgICAgfSxcbiAgICAgIHJlcXVlc3RUZW1wbGF0ZXMsXG4gICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlc1xuICAgIH1cbiAgfTtcblxuICBsZXQgZXh0cmFQcm9wcztcblxuICBpZiAocGFyYW1zLmFjdGlvbikge1xuICAgIGV4dHJhUHJvcHMgPSB7XG4gICAgICBhY3Rpb246IHBhcmFtcy5hY3Rpb25cbiAgICB9O1xuICB9IGVsc2UgaWYgKHBhcmFtcy5wYXRoKSB7XG4gICAgZXh0cmFQcm9wcyA9IHtcbiAgICAgIHBhdGg6IHBhcmFtcy5wYXRoXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBFcnJvcignRWl0aGVyIGFjdGlvbiBvciBwYXRoIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgQVdTIEludGVncmF0aW9uXG4gIGJhc2VQcm9wcyA9IE9iamVjdC5hc3NpZ24oYmFzZVByb3BzLCBleHRyYVByb3BzKTtcblxuICBsZXQgYXBpR2F0ZXdheUludGVncmF0aW9uO1xuICBjb25zdCBuZXdQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoYmFzZVByb3BzLCBwYXJhbXMuYXdzSW50ZWdyYXRpb25Qcm9wcyk7XG5cbiAgYXBpR2F0ZXdheUludGVncmF0aW9uID0gbmV3IGFwaWdhdGV3YXkuQXdzSW50ZWdyYXRpb24obmV3UHJvcHMpO1xuXG4gIGNvbnN0IGRlZmF1bHRNZXRob2RPcHRpb25zID0ge1xuICAgIG1ldGhvZFJlc3BvbnNlczogW1xuICAgICAge1xuICAgICAgICBzdGF0dXNDb2RlOiBcIjIwMFwiLFxuICAgICAgICByZXNwb25zZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBcIm1ldGhvZC5yZXNwb25zZS5oZWFkZXIuQ29udGVudC1UeXBlXCI6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzQ29kZTogXCI1MDBcIixcbiAgICAgICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgXCJtZXRob2QucmVzcG9uc2UuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgXSxcbiAgICByZXF1ZXN0VmFsaWRhdG9yOiBwYXJhbXMucmVxdWVzdFZhbGlkYXRvcixcbiAgICByZXF1ZXN0TW9kZWxzOiBwYXJhbXMucmVxdWVzdE1vZGVsXG4gIH07XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IG1ldGhvZFxuICBjb25zdCBvdmVycmlkZW5Qcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdE1ldGhvZE9wdGlvbnMsIHBhcmFtcy5tZXRob2RPcHRpb25zKTtcbiAgcmV0dXJuIHBhcmFtcy5hcGlSZXNvdXJjZS5hZGRNZXRob2QocGFyYW1zLmFwaU1ldGhvZCwgYXBpR2F0ZXdheUludGVncmF0aW9uLCBvdmVycmlkZW5Qcm9wcyk7XG59Il19
|
|
293
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpZ2F0ZXdheS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcGlnYXRld2F5LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQVVILG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCwrRUFBOEQ7QUFDOUQsbUNBQWdFO0FBS2hFOzs7O0dBSUc7QUFDSCxTQUFTLDZCQUE2QixDQUFDLEtBQWdCLEVBQUUsR0FBMkI7SUFDbEYsdURBQXVEO0lBQ3ZELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSw2QkFBNkIsRUFBRTtRQUMvRSxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7UUFDL0QsY0FBYyxFQUFFO1lBQ2QsaUNBQWlDLEVBQUUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDO2dCQUN4RCxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ25DLE9BQU8sRUFBRTs0QkFDUCxxQkFBcUI7NEJBQ3JCLHNCQUFzQjs0QkFDdEIsd0JBQXdCOzRCQUN4Qix5QkFBeUI7NEJBQ3pCLG1CQUFtQjs0QkFDbkIsbUJBQW1COzRCQUNuQixzQkFBc0I7eUJBQ3ZCO3dCQUNELFNBQVMsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQztxQkFDdkYsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsb0ZBQW9GO0lBQ3BGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBMEIsQ0FBQztJQUN2RSxNQUFNLFVBQVUsR0FB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LENBQUM7SUFDckYsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUF4RUQsa0VBd0VDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBhcGlnYXRld2F5IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5JztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGFwaURlZmF1bHRzIGZyb20gJy4vYXBpZ2F0ZXdheS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBidWlsZExvZ0dyb3VwIH0gZnJvbSAnLi9jbG91ZHdhdGNoLWxvZy1ncm91cC1oZWxwZXInO1xuaW1wb3J0IHsgYWRkQ2ZuU3VwcHJlc3NSdWxlcywgY29uc29saWRhdGVQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgSVJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhbmQgY29uZmlndXJlcyBhY2Nlc3MgbG9nZ2luZyBmb3IgQVBJIEdhdGV3YXkgcmVzb3VyY2VzLlxuICogQHBhcmFtIHNjb3BlIC0gdGhlIGNvbnN0cnVjdCB0byB3aGljaCB0aGUgYWNjZXNzIGxvZ2dpbmcgY2FwYWJpbGl0aWVzIHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAqIEBwYXJhbSBhcGkgLSBhbiBleGlzdGluZyBhcGkuUmVzdEFwaSBvciBhcGkuTGFtYmRhUmVzdEFwaS5cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlQ2xvdWR3YXRjaFJvbGVGb3JBcGkoc2NvcGU6IENvbnN0cnVjdCwgYXBpOiBhcGlnYXRld2F5LlJlc3RBcGlCYXNlKTogaWFtLlJvbGUge1xuICAvLyBTZXR1cCB0aGUgSUFNIFJvbGUgZm9yIEFQSSBHYXRld2F5IENsb3VkV2F0Y2ggYWNjZXNzXG4gIGNvbnN0IHJlc3RBcGlDbG91ZHdhdGNoUm9sZSA9IG5ldyBpYW0uUm9sZShzY29wZSwgJ0xhbWJkYVJlc3RBcGlDbG91ZFdhdGNoUm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJyksXG4gICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgIExhbWJkYVJlc3RBcGlDbG91ZFdhdGNoUm9sZVBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgIHN0YXRlbWVudHM6IFtuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJyxcbiAgICAgICAgICAgICdsb2dzOkRlc2NyaWJlTG9nR3JvdXBzJyxcbiAgICAgICAgICAgICdsb2dzOkRlc2NyaWJlTG9nU3RyZWFtcycsXG4gICAgICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgICAgICAgJ2xvZ3M6R2V0TG9nRXZlbnRzJyxcbiAgICAgICAgICAgICdsb2dzOkZpbHRlckxvZ0V2ZW50cydcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06bG9nczoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06KmBdXG4gICAgICAgIH0pXVxuICAgICAgfSlcbiAgICB9XG4gIH0pO1xuICAvLyBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBBV1M6OkFwaUdhdGV3YXk6OkFjY291bnQgd2l0aCBDbG91ZFdhdGNoIFJvbGUgZm9yIEFwaUdhdGV3YXlcbiAgY29uc3QgQ2ZuQXBpID0gYXBpLm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGFwaWdhdGV3YXkuQ2ZuUmVzdEFwaTtcbiAgY29uc3QgY2ZuQWNjb3VudDogYXBpZ2F0ZXdheS5DZm5BY2NvdW50ID0gbmV3IGFwaWdhdGV3YXkuQ2ZuQWNjb3VudChzY29wZSwgJ0xhbWJkYVJlc3RBcGlBY2NvdW50Jywge1xuICAgIGNsb3VkV2F0Y2hSb2xlQXJuOiByZXN0QXBpQ2xvdWR3YXRjaFJvbGUucm9sZUFyblxuICB9KTtcbiAgY2ZuQWNjb3VudC5hZGREZXBlbmRlbmN5KENmbkFwaSk7XG5cbiAgLy8gU3VwcHJlc3MgQ2ZuIE5hZyB3YXJuaW5nIGZvciBBUElHXG4gIGNvbnN0IGRlcGxveW1lbnQ6IGFwaWdhdGV3YXkuQ2ZuRGVwbG95bWVudCA9IGFwaS5sYXRlc3REZXBsb3ltZW50Py5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBhcGlnYXRld2F5LkNmbkRlcGxveW1lbnQ7XG4gIGFkZENmblN1cHByZXNzUnVsZXMoZGVwbG95bWVudCwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzQ1JyxcbiAgICAgIHJlYXNvbjogYEFwaUdhdGV3YXkgaGFzIEFjY2Vzc0xvZ2dpbmcgZW5hYmxlZCBpbiBBV1M6OkFwaUdhdGV3YXk6OlN0YWdlIHJlc291cmNlLCBidXQgY2ZuX25hZyBjaGVja3MgZm9yIGl0IGluIEFXUzo6QXBpR2F0ZXdheTo6RGVwbG95bWVudCByZXNvdXJjZWBcbiAgICB9XG4gIF0pO1xuXG4gIC8vIFJldHVybiB0aGUgQ1cgUm9sZVxuICByZXR1cm4gcmVzdEFwaUNsb3Vkd2F0Y2hSb2xlO1xufVxuXG5pbnRlcmZhY2UgQ29uZmlndXJlTGFtYmRhUmVzdEFwaVJlc3BvbnNlIHtcbiAgYXBpOiBhcGlnYXRld2F5LlJlc3RBcGksXG4gIHJvbGU/OiBpYW0uUm9sZVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIGNvbmZpZ3VyZXMgYW4gYXBpLkxhbWJkYVJlc3RBcGkuXG4gKiBAcGFyYW0gc2NvcGUgLSB0aGUgY29uc3RydWN0IHRvIHdoaWNoIHRoZSBMYW1iZGFSZXN0QXBpIHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAqIEBwYXJhbSBkZWZhdWx0QXBpR2F0ZXdheVByb3BzIC0gdGhlIGRlZmF1bHQgcHJvcGVydGllcyBmb3IgdGhlIExhbWJkYVJlc3RBcGkuXG4gKiBAcGFyYW0gYXBpR2F0ZXdheVByb3BzIC0gKG9wdGlvbmFsKSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbmZpZ3VyZUxhbWJkYVJlc3RBcGkoc2NvcGU6IENvbnN0cnVjdCwgZGVmYXVsdEFwaUdhdGV3YXlQcm9wczogYXBpZ2F0ZXdheS5MYW1iZGFSZXN0QXBpUHJvcHMsXG4gIGFwaUdhdGV3YXlQcm9wcz86IGFwaWdhdGV3YXkuTGFtYmRhUmVzdEFwaVByb3BzKTogQ29uZmlndXJlTGFtYmRhUmVzdEFwaVJlc3BvbnNlIHtcblxuICAvLyBBUEkgR2F0ZXdheSBkb2Vzbid0IGFsbG93IGJvdGggZW5kcG9pbnRUeXBlcyBhbmQgZW5kcG9pbnRDb25maWd1cmF0aW9uLCBjaGVjayB3aGV0aGVyIGVuZFBvaW50VHlwZXMgZXhpc3RzXG4gIGlmIChhcGlHYXRld2F5UHJvcHM/LmVuZHBvaW50VHlwZXMpIHtcbiAgICB0aHJvdyBFcnJvcignU29sdXRpb25zIENvbnN0cnVjdHMgaW50ZXJuYWxseSB1c2VzIGVuZHBvaW50Q29uZmlndXJhdGlvbiwgdXNlIGVuZHBvaW50Q29uZmlndXJhdGlvbiBpbnN0ZWFkIG9mIGVuZHBvaW50VHlwZXMnKTtcbiAgfVxuXG4gIC8vIERlZmluZSB0aGUgQVBJIG9iamVjdFxuICBsZXQgYXBpOiBhcGlnYXRld2F5LlJlc3RBcGk7XG4gIGlmIChhcGlHYXRld2F5UHJvcHMpIHtcbiAgICAvLyBJZiBwcm9wZXJ0eSBvdmVycmlkZXMgaGF2ZSBiZWVuIHByb3ZpZGVkLCBpbmNvcnBvcmF0ZSB0aGVtIGFuZCBkZXBsb3lcbiAgICBjb25zdCBjb25zb2xpZGF0ZWRBcGlHYXRld2F5UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRBcGlHYXRld2F5UHJvcHMsIGFwaUdhdGV3YXlQcm9wcywgeyBjbG91ZFdhdGNoUm9sZTogZmFsc2UgfSk7XG4gICAgYXBpID0gbmV3IGFwaWdhdGV3YXkuTGFtYmRhUmVzdEFwaShzY29wZSwgJ0xhbWJkYVJlc3RBcGknLCBjb25zb2xpZGF0ZWRBcGlHYXRld2F5UHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIC8vIElmIG5vIHByb3BlcnR5IG92ZXJyaWRlcywgZGVwbG95IHVzaW5nIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICBhcGkgPSBuZXcgYXBpZ2F0ZXdheS5MYW1iZGFSZXN0QXBpKHNjb3BlLCAnTGFtYmRhUmVzdEFwaScsIGRlZmF1bHRBcGlHYXRld2F5UHJvcHMpO1xuICB9XG4gIC8vIENvbmZpZ3VyZSBBUEkgYWNjZXNzIGxvZ2dpbmdcbiAgY29uc3QgY3dSb2xlID0gKGFwaUdhdGV3YXlQcm9wcz8uY2xvdWRXYXRjaFJvbGUgIT09IGZhbHNlKSA/IGNvbmZpZ3VyZUNsb3Vkd2F0Y2hSb2xlRm9yQXBpKHNjb3BlLCBhcGkpIDogdW5kZWZpbmVkO1xuXG4gIC8vIENvbmZpZ3VyZSBVc2FnZSBQbGFuXG4gIGNvbnN0IHVzYWdlUGxhblByb3BzOiBhcGlnYXRld2F5LlVzYWdlUGxhblByb3BzID0ge1xuICAgIGFwaVN0YWdlczogW3tcbiAgICAgIGFwaSxcbiAgICAgIHN0YWdlOiBhcGkuZGVwbG95bWVudFN0YWdlXG4gICAgfV1cbiAgfTtcblxuICBjb25zdCBwbGFuID0gYXBpLmFkZFVzYWdlUGxhbignVXNhZ2VQbGFuJywgdXNhZ2VQbGFuUHJvcHMpO1xuXG4gIC8vIElmIHJlcXVpcmVBcGlLZXkgcGFyYW0gaXMgc2V0IHRvIHRydWUsIGNyZWF0ZSBhIGFwaSBrZXkgJiBhc3NvY2lhdGUgdG8gVXNhZ2UgUGxhblxuICBpZiAoYXBpR2F0ZXdheVByb3BzPy5kZWZhdWx0TWV0aG9kT3B0aW9ucz8uYXBpS2V5UmVxdWlyZWQgPT09IHRydWUpIHtcbiAgICAvLyBDb25maWd1cmUgVXNhZ2UgUGxhbiB3aXRoIEFQSSBLZXlcbiAgICBjb25zdCBrZXkgPSBhcGkuYWRkQXBpS2V5KCdBcGlLZXknKTtcbiAgICBwbGFuLmFkZEFwaUtleShrZXkpO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRoZSBBUEkgYW5kIENXIFJvbGVcbiAgcmV0dXJuIHsgYXBpLCByb2xlOiBjd1JvbGV9O1xufVxuXG5pbnRlcmZhY2UgQ29uZmlndXJlUmVzdEFwaVJlc3BvbnNlIHtcbiAgYXBpOiBhcGlnYXRld2F5LlJlc3RBcGksXG4gIHJvbGU/OiBpYW0uUm9sZVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW5kIGNvbmZpZ3VyZXMgYW4gYXBpLlJlc3RBcGkuXG4gKiBAcGFyYW0gc2NvcGUgLSB0aGUgY29uc3RydWN0IHRvIHdoaWNoIHRoZSBSZXN0QXBpIHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAqIEBwYXJhbSBkZWZhdWx0QXBpR2F0ZXdheVByb3BzIC0gdGhlIGRlZmF1bHQgcHJvcGVydGllcyBmb3IgdGhlIFJlc3RBcGkuXG4gKiBAcGFyYW0gYXBpR2F0ZXdheVByb3BzIC0gKG9wdGlvbmFsKSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbmZpZ3VyZVJlc3RBcGkoc2NvcGU6IENvbnN0cnVjdCwgZGVmYXVsdEFwaUdhdGV3YXlQcm9wczogYXBpZ2F0ZXdheS5SZXN0QXBpUHJvcHMsXG4gIGFwaUdhdGV3YXlQcm9wcz86IGFwaWdhdGV3YXkuUmVzdEFwaVByb3BzKTogQ29uZmlndXJlUmVzdEFwaVJlc3BvbnNlIHtcblxuICAvLyBBUEkgR2F0ZXdheSBkb2Vzbid0IGFsbG93IGJvdGggZW5kcG9pbnRUeXBlcyBhbmQgZW5kcG9pbnRDb25maWd1cmF0aW9uLCBjaGVjayB3aGV0aGVyIGVuZFBvaW50VHlwZXMgZXhpc3RzXG4gIGlmIChhcGlHYXRld2F5UHJvcHM/LmVuZHBvaW50VHlwZXMpIHtcbiAgICB0aHJvdyBFcnJvcignU29sdXRpb25zIENvbnN0cnVjdHMgaW50ZXJuYWxseSB1c2VzIGVuZHBvaW50Q29uZmlndXJhdGlvbiwgdXNlIGVuZHBvaW50Q29uZmlndXJhdGlvbiBpbnN0ZWFkIG9mIGVuZHBvaW50VHlwZXMnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnNvbGlkYXRlZEFwaUdhdGV3YXlQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdEFwaUdhdGV3YXlQcm9wcywgYXBpR2F0ZXdheVByb3BzLCB7IGNsb3VkV2F0Y2hSb2xlOiBmYWxzZSB9KTtcbiAgY29uc3QgYXBpID0gbmV3IGFwaWdhdGV3YXkuUmVzdEFwaShzY29wZSwgJ1Jlc3RBcGknLCBjb25zb2xpZGF0ZWRBcGlHYXRld2F5UHJvcHMpO1xuXG4gIGxldCBjd1JvbGU7XG5cbiAgLy8gQ29uZmlndXJlIEFQSSBhY2Nlc3MgbG9nZ2luZ1xuICBpZiAoYXBpR2F0ZXdheVByb3BzPy5jbG91ZFdhdGNoUm9sZSAhPT0gZmFsc2UpIHtcbiAgICBjd1JvbGUgPSBjb25maWd1cmVDbG91ZHdhdGNoUm9sZUZvckFwaShzY29wZSwgYXBpKTtcbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSBVc2FnZSBQbGFuXG4gIGNvbnN0IHVzYWdlUGxhblByb3BzOiBhcGlnYXRld2F5LlVzYWdlUGxhblByb3BzID0ge1xuICAgIGFwaVN0YWdlczogW3tcbiAgICAgIGFwaSxcbiAgICAgIHN0YWdlOiBhcGkuZGVwbG95bWVudFN0YWdlXG4gICAgfV1cbiAgfTtcblxuICBjb25zdCBwbGFuID0gYXBpLmFkZFVzYWdlUGxhbignVXNhZ2VQbGFuJywgdXNhZ2VQbGFuUHJvcHMpO1xuXG4gIC8vIElmIHJlcXVpcmVBcGlLZXkgcGFyYW0gaXMgc2V0IHRvIHRydWUsIGNyZWF0ZSBhIGFwaSBrZXkgJiBhc3NvY2lhdGUgdG8gVXNhZ2UgUGxhblxuICBpZiAoYXBpR2F0ZXdheVByb3BzPy5kZWZhdWx0TWV0aG9kT3B0aW9ucz8uYXBpS2V5UmVxdWlyZWQgPT09IHRydWUpIHtcbiAgICAvLyBDb25maWd1cmUgVXNhZ2UgUGxhbiB3aXRoIEFQSSBLZXlcbiAgICBjb25zdCBrZXkgPSBhcGkuYWRkQXBpS2V5KCdBcGlLZXknKTtcbiAgICBwbGFuLmFkZEFwaUtleShrZXkpO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRoZSBBUEkgYW5kIENXIFJvbGVcbiAgcmV0dXJuIHsgYXBpLCByb2xlOiBjd1JvbGUgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxMYW1iZGFSZXN0QXBpUmVzcG9uc2Uge1xuICByZWFkb25seSBhcGk6IGFwaWdhdGV3YXkuUmVzdEFwaSxcbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5Sb2xlLFxuICByZWFkb25seSBncm91cDogbG9ncy5Mb2dHcm91cFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogQnVpbGRzIGFuZCByZXR1cm5zIGEgZ2xvYmFsIGFwaS5SZXN0QXBpIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCBhbiBBV1MgTGFtYmRhIGZ1bmN0aW9uLlxuICogQHBhcmFtIHNjb3BlIC0gdGhlIGNvbnN0cnVjdCB0byB3aGljaCB0aGUgUmVzdEFwaSBzaG91bGQgYmUgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gX2V4aXN0aW5nTGFtYmRhT2JqIC0gYW4gZXhpc3RpbmcgQVdTIExhbWJkYSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhcGlHYXRld2F5UHJvcHMgLSAob3B0aW9uYWwpIHVzZXItc3BlY2lmaWVkIHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdsb2JhbExhbWJkYVJlc3RBcGkoc2NvcGU6IENvbnN0cnVjdCwgX2V4aXN0aW5nTGFtYmRhT2JqOiBsYW1iZGEuRnVuY3Rpb24sXG4gIGFwaUdhdGV3YXlQcm9wcz86IGFwaWdhdGV3YXkuTGFtYmRhUmVzdEFwaVByb3BzLCBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzKTogR2xvYmFsTGFtYmRhUmVzdEFwaVJlc3BvbnNlIHtcbiAgLy8gQ29uZmlndXJlIGxvZyBncm91cCBmb3IgQVBJIEdhdGV3YXkgQWNjZXNzTG9nZ2luZ1xuICBjb25zdCBsb2dHcm91cCA9IGJ1aWxkTG9nR3JvdXAoc2NvcGUsICdBcGlBY2Nlc3NMb2dHcm91cCcsIGxvZ0dyb3VwUHJvcHMpO1xuXG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IGFwaURlZmF1bHRzLkRlZmF1bHRHbG9iYWxMYW1iZGFSZXN0QXBpUHJvcHMoX2V4aXN0aW5nTGFtYmRhT2JqLCBsb2dHcm91cCk7XG4gIGNvbnN0IGNvbmZpZ3VyZUxhbWJkYVJlc3RBcGlSZXNwb25zZSA9IGNvbmZpZ3VyZUxhbWJkYVJlc3RBcGkoc2NvcGUsIGRlZmF1bHRQcm9wcywgYXBpR2F0ZXdheVByb3BzKTtcbiAgcmV0dXJuIHsgYXBpOiBjb25maWd1cmVMYW1iZGFSZXN0QXBpUmVzcG9uc2UuYXBpLCByb2xlOiBjb25maWd1cmVMYW1iZGFSZXN0QXBpUmVzcG9uc2Uucm9sZSwgZ3JvdXA6IGxvZ0dyb3VwfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpb25hbExhbWJkYVJlc3RBcGlSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGFwaTogYXBpZ2F0ZXdheS5SZXN0QXBpLFxuICByZWFkb25seSByb2xlPzogaWFtLlJvbGUsXG4gIHJlYWRvbmx5IGdyb3VwOiBsb2dzLkxvZ0dyb3VwLFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogQnVpbGRzIGFuZCByZXR1cm5zIGEgcmVnaW9uYWwgYXBpLlJlc3RBcGkgZGVzaWduZWQgdG8gYmUgdXNlZCB3aXRoIGFuIEFXUyBMYW1iZGEgZnVuY3Rpb24uXG4gKiBAcGFyYW0gc2NvcGUgLSB0aGUgY29uc3RydWN0IHRvIHdoaWNoIHRoZSBSZXN0QXBpIHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAqIEBwYXJhbSBleGlzdGluZ0xhbWJkYU9iaiAtIGFuIGV4aXN0aW5nIEFXUyBMYW1iZGEgZnVuY3Rpb24uXG4gKiBAcGFyYW0gYXBpR2F0ZXdheVByb3BzIC0gKG9wdGlvbmFsKSB1c2VyLXNwZWNpZmllZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZWdpb25hbExhbWJkYVJlc3RBcGkoc2NvcGU6IENvbnN0cnVjdCwgZXhpc3RpbmdMYW1iZGFPYmo6IGxhbWJkYS5GdW5jdGlvbixcbiAgYXBpR2F0ZXdheVByb3BzPzogYXBpZ2F0ZXdheS5MYW1iZGFSZXN0QXBpUHJvcHMsIGxvZ0dyb3VwUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHMpOiBSZWdpb25hbExhbWJkYVJlc3RBcGlSZXNwb25zZSB7XG4gIC8vIENvbmZpZ3VyZSBsb2cgZ3JvdXAgZm9yIEFQSSBHYXRld2F5IEFjY2Vzc0xvZ2dpbmdcbiAgY29uc3QgbG9nR3JvdXAgPSBidWlsZExvZ0dyb3VwKHNjb3BlLCAnQXBpQWNjZXNzTG9nR3JvdXAnLCBsb2dHcm91cFByb3BzKTtcblxuICBjb25zdCBkZWZhdWx0UHJvcHMgPSBhcGlEZWZhdWx0cy5EZWZhdWx0UmVnaW9uYWxMYW1iZGFSZXN0QXBpUHJvcHMoZXhpc3RpbmdMYW1iZGFPYmosIGxvZ0dyb3VwKTtcbiAgY29uc3QgY29uZmlndXJlTGFtYmRhUmVzdEFwaVJlc3BvbnNlID0gY29uZmlndXJlTGFtYmRhUmVzdEFwaShzY29wZSwgZGVmYXVsdFByb3BzLCBhcGlHYXRld2F5UHJvcHMpO1xuICByZXR1cm4geyBhcGk6IGNvbmZpZ3VyZUxhbWJkYVJlc3RBcGlSZXNwb25zZS5hcGksIHJvbGU6IGNvbmZpZ3VyZUxhbWJkYVJlc3RBcGlSZXNwb25zZS5yb2xlLCBncm91cDogbG9nR3JvdXB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFJlc3RBcGlSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGFwaTogYXBpZ2F0ZXdheS5SZXN0QXBpLFxuICByZWFkb25seSByb2xlPzogaWFtLlJvbGUsXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLkxvZ0dyb3VwLFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogQnVpbGRzIGFuZCByZXR1cm5zIGEgc3RhbmRhcmQgYXBpLlJlc3RBcGkuXG4gKiBAcGFyYW0gc2NvcGUgLSB0aGUgY29uc3RydWN0IHRvIHdoaWNoIHRoZSBSZXN0QXBpIHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAqIEBwYXJhbSBhcGlHYXRld2F5UHJvcHMgLSAob3B0aW9uYWwpIHVzZXItc3BlY2lmaWVkIHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdsb2JhbFJlc3RBcGkoc2NvcGU6IENvbnN0cnVjdCwgYXBpR2F0ZXdheVByb3BzPzogYXBpZ2F0ZXdheS5SZXN0QXBpUHJvcHMsXG4gIGxvZ0dyb3VwUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHMpOiBHbG9iYWxSZXN0QXBpUmVzcG9uc2Uge1xuICAvLyBDb25maWd1cmUgbG9nIGdyb3VwIGZvciBBUEkgR2F0ZXdheSBBY2Nlc3NMb2dnaW5nXG4gIGNvbnN0IGxvZ0dyb3VwID0gYnVpbGRMb2dHcm91cChzY29wZSwgJ0FwaUFjY2Vzc0xvZ0dyb3VwJywgbG9nR3JvdXBQcm9wcyk7XG5cbiAgY29uc3QgZGVmYXVsdFByb3BzID0gYXBpRGVmYXVsdHMuRGVmYXVsdEdsb2JhbFJlc3RBcGlQcm9wcyhsb2dHcm91cCk7XG4gIGNvbnN0IGNvbmZpZ3VyZVJlc3RBcGlSZXNwb25zZSA9IGNvbmZpZ3VyZVJlc3RBcGkoc2NvcGUsIGRlZmF1bHRQcm9wcywgYXBpR2F0ZXdheVByb3BzKTtcbiAgcmV0dXJuIHsgYXBpOiBjb25maWd1cmVSZXN0QXBpUmVzcG9uc2UuYXBpLCByb2xlOiBjb25maWd1cmVSZXN0QXBpUmVzcG9uc2Uucm9sZSwgbG9nR3JvdXAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpb25hbFJlc3RBcGlSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGFwaTogYXBpZ2F0ZXdheS5SZXN0QXBpLFxuICByZWFkb25seSByb2xlPzogaWFtLlJvbGUsXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLkxvZ0dyb3VwLFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKlxuICogQnVpbGRzIGFuZCByZXR1cm5zIGEgUmVnaW9uYWwgYXBpLlJlc3RBcGkuXG4gKiBAcGFyYW0gc2NvcGUgLSB0aGUgY29uc3RydWN0IHRvIHdoaWNoIHRoZSBSZXN0QXBpIHNob3VsZCBiZSBhdHRhY2hlZCB0by5cbiAqIEBwYXJhbSBhcGlHYXRld2F5UHJvcHMgLSAob3B0aW9uYWwpIHVzZXItc3BlY2lmaWVkIHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlZ2lvbmFsUmVzdEFwaShzY29wZTogQ29uc3RydWN0LCBhcGlHYXRld2F5UHJvcHM/OiBhcGlnYXRld2F5LlJlc3RBcGlQcm9wcyxcbiAgbG9nR3JvdXBQcm9wcz86IGxvZ3MuTG9nR3JvdXBQcm9wcyk6IFJlZ2lvbmFsUmVzdEFwaVJlc3BvbnNlIHtcbiAgLy8gQ29uZmlndXJlIGxvZyBncm91cCBmb3IgQVBJIEdhdGV3YXkgQWNjZXNzTG9nZ2luZ1xuICBjb25zdCBsb2dHcm91cCA9IGJ1aWxkTG9nR3JvdXAoc2NvcGUsICdBcGlBY2Nlc3NMb2dHcm91cCcsIGxvZ0dyb3VwUHJvcHMpO1xuXG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IGFwaURlZmF1bHRzLkRlZmF1bHRSZWdpb25hbFJlc3RBcGlQcm9wcyhsb2dHcm91cCk7XG4gIGNvbnN0IGNvbmZpZ3VyZVJlc3RBcGlSZXNwb25zZSA9IGNvbmZpZ3VyZVJlc3RBcGkoc2NvcGUsIGRlZmF1bHRQcm9wcywgYXBpR2F0ZXdheVByb3BzKTtcbiAgcmV0dXJuIHsgYXBpOiBjb25maWd1cmVSZXN0QXBpUmVzcG9uc2UuYXBpLCByb2xlOiBjb25maWd1cmVSZXN0QXBpUmVzcG9uc2Uucm9sZSwgbG9nR3JvdXAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTcGVjUmVzdEFwaVJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgYXBpOiBhcGlnYXRld2F5LlNwZWNSZXN0QXBpLFxuICByZWFkb25seSByb2xlPzogaWFtLlJvbGUsXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLkxvZ0dyb3VwLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3JlYXRlU3BlY1Jlc3RBcGkoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGFwaUdhdGV3YXlQcm9wczogYXBpZ2F0ZXdheS5TcGVjUmVzdEFwaVByb3BzLFxuICBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzKTogQ3JlYXRlU3BlY1Jlc3RBcGlSZXNwb25zZSB7XG5cbiAgY29uc3QgbG9nR3JvdXAgPSBidWlsZExvZ0dyb3VwKHNjb3BlLCAnQXBpQWNjZXNzTG9nR3JvdXAnLCBsb2dHcm91cFByb3BzKTtcbiAgY29uc3QgZGVmYXVsdFByb3BzID0gYXBpRGVmYXVsdHMuRGVmYXVsdFNwZWNSZXN0QXBpUHJvcHMoc2NvcGUsIGxvZ0dyb3VwKTtcblxuICAvLyBEZWZpbmUgdGhlIEFQSSBvYmplY3RcbiAgbGV0IGFwaTogYXBpZ2F0ZXdheS5TcGVjUmVzdEFwaTtcbiAgLy8gSWYgcHJvcGVydHkgb3ZlcnJpZGVzIGhhdmUgYmVlbiBwcm92aWRlZCwgaW5jb3Jwb3JhdGUgdGhlbSBhbmQgZGVwbG95XG4gIGNvbnN0IGNvbnNvbGlkYXRlZEFwaUdhdGV3YXlQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdFByb3BzLCBhcGlHYXRld2F5UHJvcHMsIHsgY2xvdWRXYXRjaFJvbGU6IGZhbHNlIH0pO1xuICBhcGkgPSBuZXcgYXBpZ2F0ZXdheS5TcGVjUmVzdEFwaShzY29wZSwgJ1NwZWNSZXN0QXBpJywgY29uc29saWRhdGVkQXBpR2F0ZXdheVByb3BzKTtcbiAgLy8gQ29uZmlndXJlIEFQSSBhY2Nlc3MgbG9nZ2luZ1xuICBjb25zdCBjd1JvbGUgPSAoYXBpR2F0ZXdheVByb3BzPy5jbG91ZFdhdGNoUm9sZSAhPT0gZmFsc2UpID8gY29uZmlndXJlQ2xvdWR3YXRjaFJvbGVGb3JBcGkoc2NvcGUsIGFwaSkgOiB1bmRlZmluZWQ7XG5cbiAgLy8gQ29uZmlndXJlIFVzYWdlIFBsYW5cbiAgY29uc3QgdXNhZ2VQbGFuUHJvcHM6IGFwaWdhdGV3YXkuVXNhZ2VQbGFuUHJvcHMgPSB7XG4gICAgYXBpU3RhZ2VzOiBbe1xuICAgICAgYXBpLFxuICAgICAgc3RhZ2U6IGFwaS5kZXBsb3ltZW50U3RhZ2VcbiAgICB9XVxuICB9O1xuXG4gIGFwaS5hZGRVc2FnZVBsYW4oJ1VzYWdlUGxhbicsIHVzYWdlUGxhblByb3BzKTtcblxuICByZXR1cm4geyBhcGksIHJvbGU6IGN3Um9sZSwgbG9nR3JvdXB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZUlucHV0UGFyYW1zIHtcbiAgcmVhZG9ubHkgc2VydmljZTogc3RyaW5nLFxuICByZWFkb25seSBhY3Rpb24/OiBzdHJpbmcsXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmcsXG4gIHJlYWRvbmx5IGFwaVJlc291cmNlOiBhcGlnYXRld2F5LklSZXNvdXJjZSxcbiAgcmVhZG9ubHkgYXBpTWV0aG9kOiBzdHJpbmcsXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlSb2xlOiBJUm9sZSxcbiAgcmVhZG9ubHkgcmVxdWVzdFRlbXBsYXRlOiBzdHJpbmcsXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzPzogeyBbY29udGVudFR5cGU6IHN0cmluZ106IHN0cmluZzsgfSxcbiAgcmVhZG9ubHkgaW50ZWdyYXRpb25SZXNwb25zZXM/OiBjZGsuYXdzX2FwaWdhdGV3YXkuSW50ZWdyYXRpb25SZXNwb25zZVtdLFxuICByZWFkb25seSBjb250ZW50VHlwZT86IHN0cmluZyxcbiAgcmVhZG9ubHkgcmVxdWVzdFZhbGlkYXRvcj86IGFwaWdhdGV3YXkuSVJlcXVlc3RWYWxpZGF0b3IsXG4gIHJlYWRvbmx5IHJlcXVlc3RNb2RlbD86IHsgW2NvbnRlbnRUeXBlOiBzdHJpbmddOiBhcGlnYXRld2F5LklNb2RlbDsgfSxcbiAgcmVhZG9ubHkgYXdzSW50ZWdyYXRpb25Qcm9wcz86IGFwaWdhdGV3YXkuQXdzSW50ZWdyYXRpb25Qcm9wcyB8IGFueSxcbiAgcmVhZG9ubHkgbWV0aG9kT3B0aW9ucz86IGFwaWdhdGV3YXkuTWV0aG9kT3B0aW9uc1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2UocGFyYW1zOiBBZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2VJbnB1dFBhcmFtcyk6IGFwaWdhdGV3YXkuTWV0aG9kIHtcbiAgLy8gTWFrZSBzdXJlIHRoZSB1c2VyIGhhc24ndCBhbHNvIHNwZWNpZmllZCB0aGUgYXBwbGljYXRpb24vanNvbiBjb250ZW50LXR5cGUgaW4gdGhlIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzIG9wdGlvbmFsIHByb3BlcnR5XG4gIGlmIChwYXJhbXMuYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXMgJiYgJ2FwcGxpY2F0aW9uL2pzb24nIGluIHBhcmFtcy5hZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVxdWVzdCBUZW1wbGF0ZSBmb3IgdGhlIGFwcGxpY2F0aW9uL2pzb24gY29udGVudC10eXBlIG11c3QgYmUgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0VGVtcGxhdGUgcHJvcGVydHkgYW5kIG5vdCBpbiB0aGUgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXMgcHJvcGVydHkgYCk7XG4gIH1cblxuICBjb25zdCByZXF1ZXN0VGVtcGxhdGVzID0ge1xuICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBwYXJhbXMucmVxdWVzdFRlbXBsYXRlLFxuICAgIC4uLnBhcmFtcy5hZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlc1xuICB9O1xuXG4gIC8vIFVzZSB1c2VyLXByb3ZpZGVkIGludGVncmF0aW9uIHJlc3BvbnNlcywgb3RoZXJ3aXNlIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IG9uZXMgd2UgcHJvdmlkZS5cbiAgY29uc3QgaW50ZWdyYXRpb25SZXNwb25zZXMgPSBwYXJhbXMuaW50ZWdyYXRpb25SZXNwb25zZXMgPz8gYXBpRGVmYXVsdHMuRGVmYXVsdEludGVncmF0aW9uUmVzcG9uc2VzKCk7XG5cbiAgbGV0IGJhc2VQcm9wczogYXBpZ2F0ZXdheS5Bd3NJbnRlZ3JhdGlvblByb3BzID0ge1xuICAgIHNlcnZpY2U6IHBhcmFtcy5zZXJ2aWNlLFxuICAgIGludGVncmF0aW9uSHR0cE1ldGhvZDogXCJQT1NUXCIsXG4gICAgb3B0aW9uczoge1xuICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogYXBpZ2F0ZXdheS5QYXNzdGhyb3VnaEJlaGF2aW9yLk5FVkVSLFxuICAgICAgY3JlZGVudGlhbHNSb2xlOiBwYXJhbXMuYXBpR2F0ZXdheVJvbGUsXG4gICAgICByZXF1ZXN0UGFyYW1ldGVyczoge1xuICAgICAgICBcImludGVncmF0aW9uLnJlcXVlc3QuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiBwYXJhbXMuY29udGVudFR5cGUgPyBwYXJhbXMuY29udGVudFR5cGUgOiBcIidhcHBsaWNhdGlvbi9qc29uJ1wiXG4gICAgICB9LFxuICAgICAgcmVxdWVzdFRlbXBsYXRlcyxcbiAgICAgIGludGVncmF0aW9uUmVzcG9uc2VzXG4gICAgfVxuICB9O1xuXG4gIGxldCBleHRyYVByb3BzO1xuXG4gIGlmIChwYXJhbXMuYWN0aW9uKSB7XG4gICAgZXh0cmFQcm9wcyA9IHtcbiAgICAgIGFjdGlvbjogcGFyYW1zLmFjdGlvblxuICAgIH07XG4gIH0gZWxzZSBpZiAocGFyYW1zLnBhdGgpIHtcbiAgICBleHRyYVByb3BzID0ge1xuICAgICAgcGF0aDogcGFyYW1zLnBhdGhcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHRocm93IEVycm9yKCdFaXRoZXIgYWN0aW9uIG9yIHBhdGggaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSBBV1MgSW50ZWdyYXRpb25cbiAgYmFzZVByb3BzID0gT2JqZWN0LmFzc2lnbihiYXNlUHJvcHMsIGV4dHJhUHJvcHMpO1xuXG4gIGxldCBhcGlHYXRld2F5SW50ZWdyYXRpb247XG4gIGNvbnN0IG5ld1Byb3BzID0gY29uc29saWRhdGVQcm9wcyhiYXNlUHJvcHMsIHBhcmFtcy5hd3NJbnRlZ3JhdGlvblByb3BzKTtcblxuICBhcGlHYXRld2F5SW50ZWdyYXRpb24gPSBuZXcgYXBpZ2F0ZXdheS5Bd3NJbnRlZ3JhdGlvbihuZXdQcm9wcyk7XG5cbiAgY29uc3QgZGVmYXVsdE1ldGhvZE9wdGlvbnMgPSB7XG4gICAgbWV0aG9kUmVzcG9uc2VzOiBbXG4gICAgICB7XG4gICAgICAgIHN0YXR1c0NvZGU6IFwiMjAwXCIsXG4gICAgICAgIHJlc3BvbnNlUGFyYW1ldGVyczoge1xuICAgICAgICAgIFwibWV0aG9kLnJlc3BvbnNlLmhlYWRlci5Db250ZW50LVR5cGVcIjogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzdGF0dXNDb2RlOiBcIjUwMFwiLFxuICAgICAgICByZXNwb25zZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBcIm1ldGhvZC5yZXNwb25zZS5oZWFkZXIuQ29udGVudC1UeXBlXCI6IHRydWVcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICBdLFxuICAgIHJlcXVlc3RWYWxpZGF0b3I6IHBhcmFtcy5yZXF1ZXN0VmFsaWRhdG9yLFxuICAgIHJlcXVlc3RNb2RlbHM6IHBhcmFtcy5yZXF1ZXN0TW9kZWxcbiAgfTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgbWV0aG9kXG4gIGNvbnN0IG92ZXJyaWRkZW5Qcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdE1ldGhvZE9wdGlvbnMsIHBhcmFtcy5tZXRob2RPcHRpb25zKTtcbiAgcmV0dXJuIHBhcmFtcy5hcGlSZXNvdXJjZS5hZGRNZXRob2QocGFyYW1zLmFwaU1ldGhvZCwgYXBpR2F0ZXdheUludGVncmF0aW9uLCBvdmVycmlkZGVuUHJvcHMpO1xufSJdfQ==
|
|
@@ -25,4 +25,4 @@ export declare function DefaultCloudFrontWebDistributionForS3Props(sourceBucket:
|
|
|
25
25
|
/**
|
|
26
26
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
27
27
|
*/
|
|
28
|
-
export declare function
|
|
28
|
+
export declare function DefaultCloudFrontDistributionForMediaStoreProps(mediastoreContainer: mediastore.CfnContainer, loggingBucket: s3.Bucket | undefined, originRequestPolicy: cloudfront.OriginRequestPolicy, setHttpSecurityHeaders: boolean, customHeaders?: Record<string, string>, cfFunction?: cloudfront.IFunction, responseHeadersPolicy?: cloudfront.ResponseHeadersPolicy): cloudfront.DistributionProps;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* and limitations under the License.
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.DefaultCloudFrontDistributionForMediaStoreProps = exports.DefaultCloudFrontWebDistributionForS3Props = exports.DefaultCloudFrontWebDistributionForApiGatewayProps = void 0;
|
|
16
16
|
const cloudfront = require("aws-cdk-lib/aws-cloudfront");
|
|
17
17
|
const aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
|
|
18
18
|
const origins = require("aws-cdk-lib/aws-cloudfront-origins");
|
|
@@ -70,7 +70,7 @@ exports.DefaultCloudFrontWebDistributionForS3Props = DefaultCloudFrontWebDistrib
|
|
|
70
70
|
/**
|
|
71
71
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
72
72
|
*/
|
|
73
|
-
function
|
|
73
|
+
function DefaultCloudFrontDistributionForMediaStoreProps(mediastoreContainer, loggingBucket, originRequestPolicy, setHttpSecurityHeaders, customHeaders, cfFunction, responseHeadersPolicy) {
|
|
74
74
|
const mediaStoreContainerUrlWithoutProtocol = cdk.Fn.select(1, cdk.Fn.split('://', mediastoreContainer.attrEndpoint));
|
|
75
75
|
const mediaStoreContainerDomainName = cdk.Fn.select(0, cdk.Fn.split('/', mediaStoreContainerUrlWithoutProtocol));
|
|
76
76
|
const httpOrigin = customHeaders ?
|
|
@@ -93,7 +93,7 @@ function DefaultCloudFrontDisributionForMediaStoreProps(mediastoreContainer, log
|
|
|
93
93
|
logBucket: loggingBucket
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
|
-
exports.
|
|
96
|
+
exports.DefaultCloudFrontDistributionForMediaStoreProps = DefaultCloudFrontDistributionForMediaStoreProps;
|
|
97
97
|
function getFunctionAssociationsProp(setHttpSecurityHeaders, cfFunction) {
|
|
98
98
|
return (setHttpSecurityHeaders && cfFunction) ? {
|
|
99
99
|
functionAssociations: [
|
|
@@ -104,4 +104,4 @@ function getFunctionAssociationsProp(setHttpSecurityHeaders, cfFunction) {
|
|
|
104
104
|
]
|
|
105
105
|
} : {};
|
|
106
106
|
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1kaXN0cmlidXRpb24tZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZGZyb250LWRpc3RyaWJ1dGlvbi1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQVFILHlEQUF5RDtBQUN6RCwrREFBd0U7QUFDeEUsOERBQThEO0FBRzlELG1DQUFtQztBQUduQzs7R0FFRztBQUNILFNBQWdCLGtEQUFrRCxDQUFDLFdBQXdCLEVBQ3pGLGFBQW9DLEVBQ3BDLHNCQUErQixFQUMvQixVQUFpQyxFQUNqQyxxQkFBd0Q7SUFHeEQsTUFBTSw2QkFBNkIsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDLENBQUM7SUFFakcsSUFBSSxlQUFlLEdBQW9CO1FBQ3JDLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUU7WUFDcEQsVUFBVSxFQUFFLElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUU7U0FDeEQsQ0FBQztRQUNGLEdBQUcsMkJBQTJCLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDO1FBQ2xFLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUI7S0FDeEUsQ0FBQztJQUNGLElBQUkscUJBQXFCLEVBQUU7UUFDekIsZUFBZSxHQUFHLEVBQUMsR0FBRyxlQUFlLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztLQUNoRTtJQUNELE9BQU87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QUFpQixDQUFDLGVBQWU7Z0JBQzVDLFFBQVEsRUFBRSxVQUFVO2FBQ3JCO1NBQ0Y7S0FDRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBhcGkgZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBGdW5jdGlvbkV2ZW50VHlwZSwgSU9yaWdpbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCAqIGFzIG9yaWdpbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQtb3JpZ2lucyc7XG5pbXBvcnQgKiBhcyBtZWRpYXN0b3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1tZWRpYXN0b3JlJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtCZWhhdmlvck9wdGlvbnN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC9saWIvZGlzdHJpYnV0aW9uXCI7XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERlZmF1bHRDbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uRm9yQXBpR2F0ZXdheVByb3BzKGFwaUVuZFBvaW50OiBhcGkuUmVzdEFwaSxcbiAgbG9nZ2luZ0J1Y2tldDogczMuQnVja2V0IHwgdW5kZWZpbmVkLFxuICBzZXRIdHRwU2VjdXJpdHlIZWFkZXJzOiBib29sZWFuLFxuICBjZkZ1bmN0aW9uPzogY2xvdWRmcm9udC5JRnVuY3Rpb24sXG4gIHJlc3BvbnNlSGVhZGVyc1BvbGljeT86IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5LFxuKTogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyB7XG5cbiAgY29uc3QgYXBpRW5kUG9pbnRVcmxXaXRob3V0UHJvdG9jb2wgPSBjZGsuRm4uc2VsZWN0KDEsIGNkay5Gbi5zcGxpdChcIjovL1wiLCBhcGlFbmRQb2ludC51cmwpKTtcbiAgY29uc3QgYXBpRW5kUG9pbnREb21haW5OYW1lID0gY2RrLkZuLnNlbGVjdCgwLCBjZGsuRm4uc3BsaXQoXCIvXCIsIGFwaUVuZFBvaW50VXJsV2l0aG91dFByb3RvY29sKSk7XG5cbiAgbGV0IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zID0ge1xuICAgIG9yaWdpbjogbmV3IG9yaWdpbnMuSHR0cE9yaWdpbihhcGlFbmRQb2ludERvbWFpbk5hbWUsIHtcbiAgICAgIG9yaWdpblBhdGg6IGAvJHthcGlFbmRQb2ludC5kZXBsb3ltZW50U3RhZ2Uuc3RhZ2VOYW1lfWBcbiAgICB9KSxcbiAgICAuLi5nZXRGdW5jdGlvbkFzc29jaWF0aW9uc1Byb3Aoc2V0SHR0cFNlY3VyaXR5SGVhZGVycywgY2ZGdW5jdGlvbiksXG4gICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IGNsb3VkZnJvbnQuVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gIH07XG4gIGlmIChyZXNwb25zZUhlYWRlcnNQb2xpY3kpIHtcbiAgICBkZWZhdWx0QmVoYXZpb3IgPSB7Li4uZGVmYXVsdEJlaGF2aW9yLCByZXNwb25zZUhlYWRlcnNQb2xpY3kgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRlZmF1bHRCZWhhdmlvcixcbiAgICBlbmFibGVMb2dnaW5nOiB0cnVlLFxuICAgIGxvZ0J1Y2tldDogbG9nZ2luZ0J1Y2tldCxcbiAgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb25Gb3JTM1Byb3BzKFxuICBzb3VyY2VCdWNrZXQ6IHMzLklCdWNrZXQsXG4gIGxvZ2dpbmdCdWNrZXQ6IHMzLkJ1Y2tldCB8IHVuZGVmaW5lZCxcbiAgc2V0SHR0cFNlY3VyaXR5SGVhZGVyczogYm9vbGVhbixcbiAgb3JpZ2luUGF0aD86IHN0cmluZyxcbiAgY2ZGdW5jdGlvbj86IGNsb3VkZnJvbnQuSUZ1bmN0aW9uLFxuICByZXNwb25zZUhlYWRlcnNQb2xpY3k/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbik6IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uUHJvcHMge1xuXG4gIGxldCBvcmlnaW46IElPcmlnaW47XG5cbiAgaWYgKG9yaWdpblBhdGgpIHtcbiAgICBvcmlnaW4gPSBuZXcgb3JpZ2lucy5TM09yaWdpbihzb3VyY2VCdWNrZXQsIHsgb3JpZ2luUGF0aCB9KTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW4gPSBuZXcgb3JpZ2lucy5TM09yaWdpbihzb3VyY2VCdWNrZXQpO1xuICB9XG5cbiAgbGV0IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zID0ge1xuICAgIG9yaWdpbixcbiAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogY2xvdWRmcm9udC5WaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAuLi5nZXRGdW5jdGlvbkFzc29jaWF0aW9uc1Byb3Aoc2V0SHR0cFNlY3VyaXR5SGVhZGVycywgY2ZGdW5jdGlvbilcbiAgfTtcbiAgaWYgKHJlc3BvbnNlSGVhZGVyc1BvbGljeSkge1xuICAgIGRlZmF1bHRCZWhhdmlvciA9IHsuLi5kZWZhdWx0QmVoYXZpb3IsIHJlc3BvbnNlSGVhZGVyc1BvbGljeSB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgZGVmYXVsdEJlaGF2aW9yLFxuICAgIGVuYWJsZUxvZ2dpbmc6IHRydWUsXG4gICAgbG9nQnVja2V0OiBsb2dnaW5nQnVja2V0LFxuICAgIGRlZmF1bHRSb290T2JqZWN0OiAnaW5kZXguaHRtbCdcbiAgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdENsb3VkRnJvbnREaXNyaWJ1dGlvbkZvck1lZGlhU3RvcmVQcm9wcyhtZWRpYXN0b3JlQ29udGFpbmVyOiBtZWRpYXN0b3JlLkNmbkNvbnRhaW5lcixcbiAgbG9nZ2luZ0J1Y2tldDogczMuQnVja2V0IHwgdW5kZWZpbmVkLFxuICBvcmlnaW5SZXF1ZXN0UG9saWN5OiBjbG91ZGZyb250Lk9yaWdpblJlcXVlc3RQb2xpY3ksXG4gIHNldEh0dHBTZWN1cml0eUhlYWRlcnM6IGJvb2xlYW4sXG4gIGN1c3RvbUhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBjZkZ1bmN0aW9uPzogY2xvdWRmcm9udC5JRnVuY3Rpb24sXG4gIHJlc3BvbnNlSGVhZGVyc1BvbGljeT86IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5XG4pOiBjbG91ZGZyb250LkRpc3RyaWJ1dGlvblByb3BzIHtcblxuICBjb25zdCBtZWRpYVN0b3JlQ29udGFpbmVyVXJsV2l0aG91dFByb3RvY29sID0gY2RrLkZuLnNlbGVjdCgxLCBjZGsuRm4uc3BsaXQoJzovLycsIG1lZGlhc3RvcmVDb250YWluZXIuYXR0ckVuZHBvaW50KSk7XG4gIGNvbnN0IG1lZGlhU3RvcmVDb250YWluZXJEb21haW5OYW1lID0gY2RrLkZuLnNlbGVjdCgwLCBjZGsuRm4uc3BsaXQoJy8nLCBtZWRpYVN0b3JlQ29udGFpbmVyVXJsV2l0aG91dFByb3RvY29sKSk7XG5cbiAgY29uc3QgaHR0cE9yaWdpbjogb3JpZ2lucy5IdHRwT3JpZ2luID0gY3VzdG9tSGVhZGVycyA/XG4gICAgbmV3IG9yaWdpbnMuSHR0cE9yaWdpbihtZWRpYVN0b3JlQ29udGFpbmVyRG9tYWluTmFtZSwgeyBjdXN0b21IZWFkZXJzIH0pIDpcbiAgICBuZXcgb3JpZ2lucy5IdHRwT3JpZ2luKG1lZGlhU3RvcmVDb250YWluZXJEb21haW5OYW1lKTtcblxuICBsZXQgZGVmYXVsdEJlaGF2aW9yOiBCZWhhdmlvck9wdGlvbnMgPSB7XG4gICAgb3JpZ2luOiBodHRwT3JpZ2luLFxuICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBjbG91ZGZyb250LlZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgIGFsbG93ZWRNZXRob2RzOiBjbG91ZGZyb250LkFsbG93ZWRNZXRob2RzLkFMTE9XX0dFVF9IRUFEX09QVElPTlMsXG4gICAgY2FjaGVkTWV0aG9kczogY2xvdWRmcm9udC5DYWNoZWRNZXRob2RzLkNBQ0hFX0dFVF9IRUFEX09QVElPTlMsXG4gICAgb3JpZ2luUmVxdWVzdFBvbGljeSxcbiAgICAuLi5nZXRGdW5jdGlvbkFzc29jaWF0aW9uc1Byb3Aoc2V0SHR0cFNlY3VyaXR5SGVhZGVycywgY2ZGdW5jdGlvbiksXG4gIH07XG4gIGlmIChyZXNwb25zZUhlYWRlcnNQb2xpY3kpIHtcbiAgICBkZWZhdWx0QmVoYXZpb3IgPSB7Li4uZGVmYXVsdEJlaGF2aW9yLCByZXNwb25zZUhlYWRlcnNQb2xpY3kgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRlZmF1bHRCZWhhdmlvcixcbiAgICBlbmFibGVMb2dnaW5nOiB0cnVlLFxuICAgIGxvZ0J1Y2tldDogbG9nZ2luZ0J1Y2tldFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRGdW5jdGlvbkFzc29jaWF0aW9uc1Byb3Aoc2V0SHR0cFNlY3VyaXR5SGVhZGVyczogYm9vbGVhbiwgY2ZGdW5jdGlvbjogY2xvdWRmcm9udC5JRnVuY3Rpb24gfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIChzZXRIdHRwU2VjdXJpdHlIZWFkZXJzICYmIGNmRnVuY3Rpb24pID8ge1xuICAgIGZ1bmN0aW9uQXNzb2NpYXRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGV2ZW50VHlwZTogRnVuY3Rpb25FdmVudFR5cGUuVklFV0VSX1JFU1BPTlNFLFxuICAgICAgICBmdW5jdGlvbjogY2ZGdW5jdGlvblxuICAgICAgfVxuICAgIF1cbiAgfSA6IHt9O1xufVxuIl19
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1kaXN0cmlidXRpb24tZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZGZyb250LWRpc3RyaWJ1dGlvbi1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQVFILHlEQUF5RDtBQUN6RCwrREFBd0U7QUFDeEUsOERBQThEO0FBRzlELG1DQUFtQztBQUduQzs7R0FFRztBQUNILFNBQWdCLGtEQUFrRCxDQUFDLFdBQXdCLEVBQ3pGLGFBQW9DLEVBQ3BDLHNCQUErQixFQUMvQixVQUFpQyxFQUNqQyxxQkFBd0Q7SUFHeEQsTUFBTSw2QkFBNkIsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDLENBQUM7SUFFakcsSUFBSSxlQUFlLEdBQW9CO1FBQ3JDLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUU7WUFDcEQsVUFBVSxFQUFFLElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUU7U0FDeEQsQ0FBQztRQUNGLEdBQUcsMkJBQTJCLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDO1FBQ2xFLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUI7S0FDeEUsQ0FBQztJQUNGLElBQUkscUJBQXFCLEVBQUU7UUFDekIsZUFBZSxHQUFHLEVBQUMsR0FBRyxlQUFlLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztLQUNoRTtJQUNELE9BQU87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QUFpQixDQUFDLGVBQWU7Z0JBQzVDLFFBQVEsRUFBRSxVQUFVO2FBQ3JCO1NBQ0Y7S0FDRixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBhcGkgZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBGdW5jdGlvbkV2ZW50VHlwZSwgSU9yaWdpbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCAqIGFzIG9yaWdpbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQtb3JpZ2lucyc7XG5pbXBvcnQgKiBhcyBtZWRpYXN0b3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1tZWRpYXN0b3JlJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtCZWhhdmlvck9wdGlvbnN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC9saWIvZGlzdHJpYnV0aW9uXCI7XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERlZmF1bHRDbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uRm9yQXBpR2F0ZXdheVByb3BzKGFwaUVuZFBvaW50OiBhcGkuUmVzdEFwaSxcbiAgbG9nZ2luZ0J1Y2tldDogczMuQnVja2V0IHwgdW5kZWZpbmVkLFxuICBzZXRIdHRwU2VjdXJpdHlIZWFkZXJzOiBib29sZWFuLFxuICBjZkZ1bmN0aW9uPzogY2xvdWRmcm9udC5JRnVuY3Rpb24sXG4gIHJlc3BvbnNlSGVhZGVyc1BvbGljeT86IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5LFxuKTogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyB7XG5cbiAgY29uc3QgYXBpRW5kUG9pbnRVcmxXaXRob3V0UHJvdG9jb2wgPSBjZGsuRm4uc2VsZWN0KDEsIGNkay5Gbi5zcGxpdChcIjovL1wiLCBhcGlFbmRQb2ludC51cmwpKTtcbiAgY29uc3QgYXBpRW5kUG9pbnREb21haW5OYW1lID0gY2RrLkZuLnNlbGVjdCgwLCBjZGsuRm4uc3BsaXQoXCIvXCIsIGFwaUVuZFBvaW50VXJsV2l0aG91dFByb3RvY29sKSk7XG5cbiAgbGV0IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zID0ge1xuICAgIG9yaWdpbjogbmV3IG9yaWdpbnMuSHR0cE9yaWdpbihhcGlFbmRQb2ludERvbWFpbk5hbWUsIHtcbiAgICAgIG9yaWdpblBhdGg6IGAvJHthcGlFbmRQb2ludC5kZXBsb3ltZW50U3RhZ2Uuc3RhZ2VOYW1lfWBcbiAgICB9KSxcbiAgICAuLi5nZXRGdW5jdGlvbkFzc29jaWF0aW9uc1Byb3Aoc2V0SHR0cFNlY3VyaXR5SGVhZGVycywgY2ZGdW5jdGlvbiksXG4gICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IGNsb3VkZnJvbnQuVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gIH07XG4gIGlmIChyZXNwb25zZUhlYWRlcnNQb2xpY3kpIHtcbiAgICBkZWZhdWx0QmVoYXZpb3IgPSB7Li4uZGVmYXVsdEJlaGF2aW9yLCByZXNwb25zZUhlYWRlcnNQb2xpY3kgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRlZmF1bHRCZWhhdmlvcixcbiAgICBlbmFibGVMb2dnaW5nOiB0cnVlLFxuICAgIGxvZ0J1Y2tldDogbG9nZ2luZ0J1Y2tldCxcbiAgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb25Gb3JTM1Byb3BzKFxuICBzb3VyY2VCdWNrZXQ6IHMzLklCdWNrZXQsXG4gIGxvZ2dpbmdCdWNrZXQ6IHMzLkJ1Y2tldCB8IHVuZGVmaW5lZCxcbiAgc2V0SHR0cFNlY3VyaXR5SGVhZGVyczogYm9vbGVhbixcbiAgb3JpZ2luUGF0aD86IHN0cmluZyxcbiAgY2ZGdW5jdGlvbj86IGNsb3VkZnJvbnQuSUZ1bmN0aW9uLFxuICByZXNwb25zZUhlYWRlcnNQb2xpY3k/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbik6IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uUHJvcHMge1xuXG4gIGxldCBvcmlnaW46IElPcmlnaW47XG5cbiAgaWYgKG9yaWdpblBhdGgpIHtcbiAgICBvcmlnaW4gPSBuZXcgb3JpZ2lucy5TM09yaWdpbihzb3VyY2VCdWNrZXQsIHsgb3JpZ2luUGF0aCB9KTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW4gPSBuZXcgb3JpZ2lucy5TM09yaWdpbihzb3VyY2VCdWNrZXQpO1xuICB9XG5cbiAgbGV0IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zID0ge1xuICAgIG9yaWdpbixcbiAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogY2xvdWRmcm9udC5WaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAuLi5nZXRGdW5jdGlvbkFzc29jaWF0aW9uc1Byb3Aoc2V0SHR0cFNlY3VyaXR5SGVhZGVycywgY2ZGdW5jdGlvbilcbiAgfTtcbiAgaWYgKHJlc3BvbnNlSGVhZGVyc1BvbGljeSkge1xuICAgIGRlZmF1bHRCZWhhdmlvciA9IHsuLi5kZWZhdWx0QmVoYXZpb3IsIHJlc3BvbnNlSGVhZGVyc1BvbGljeSB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgZGVmYXVsdEJlaGF2aW9yLFxuICAgIGVuYWJsZUxvZ2dpbmc6IHRydWUsXG4gICAgbG9nQnVja2V0OiBsb2dnaW5nQnVja2V0LFxuICAgIGRlZmF1bHRSb290T2JqZWN0OiAnaW5kZXguaHRtbCdcbiAgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdENsb3VkRnJvbnREaXN0cmlidXRpb25Gb3JNZWRpYVN0b3JlUHJvcHMobWVkaWFzdG9yZUNvbnRhaW5lcjogbWVkaWFzdG9yZS5DZm5Db250YWluZXIsXG4gIGxvZ2dpbmdCdWNrZXQ6IHMzLkJ1Y2tldCB8IHVuZGVmaW5lZCxcbiAgb3JpZ2luUmVxdWVzdFBvbGljeTogY2xvdWRmcm9udC5PcmlnaW5SZXF1ZXN0UG9saWN5LFxuICBzZXRIdHRwU2VjdXJpdHlIZWFkZXJzOiBib29sZWFuLFxuICBjdXN0b21IZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgY2ZGdW5jdGlvbj86IGNsb3VkZnJvbnQuSUZ1bmN0aW9uLFxuICByZXNwb25zZUhlYWRlcnNQb2xpY3k/OiBjbG91ZGZyb250LlJlc3BvbnNlSGVhZGVyc1BvbGljeVxuKTogY2xvdWRmcm9udC5EaXN0cmlidXRpb25Qcm9wcyB7XG5cbiAgY29uc3QgbWVkaWFTdG9yZUNvbnRhaW5lclVybFdpdGhvdXRQcm90b2NvbCA9IGNkay5Gbi5zZWxlY3QoMSwgY2RrLkZuLnNwbGl0KCc6Ly8nLCBtZWRpYXN0b3JlQ29udGFpbmVyLmF0dHJFbmRwb2ludCkpO1xuICBjb25zdCBtZWRpYVN0b3JlQ29udGFpbmVyRG9tYWluTmFtZSA9IGNkay5Gbi5zZWxlY3QoMCwgY2RrLkZuLnNwbGl0KCcvJywgbWVkaWFTdG9yZUNvbnRhaW5lclVybFdpdGhvdXRQcm90b2NvbCkpO1xuXG4gIGNvbnN0IGh0dHBPcmlnaW46IG9yaWdpbnMuSHR0cE9yaWdpbiA9IGN1c3RvbUhlYWRlcnMgP1xuICAgIG5ldyBvcmlnaW5zLkh0dHBPcmlnaW4obWVkaWFTdG9yZUNvbnRhaW5lckRvbWFpbk5hbWUsIHsgY3VzdG9tSGVhZGVycyB9KSA6XG4gICAgbmV3IG9yaWdpbnMuSHR0cE9yaWdpbihtZWRpYVN0b3JlQ29udGFpbmVyRG9tYWluTmFtZSk7XG5cbiAgbGV0IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zID0ge1xuICAgIG9yaWdpbjogaHR0cE9yaWdpbixcbiAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogY2xvdWRmcm9udC5WaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICBhbGxvd2VkTWV0aG9kczogY2xvdWRmcm9udC5BbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRF9PUFRJT05TLFxuICAgIGNhY2hlZE1ldGhvZHM6IGNsb3VkZnJvbnQuQ2FjaGVkTWV0aG9kcy5DQUNIRV9HRVRfSEVBRF9PUFRJT05TLFxuICAgIG9yaWdpblJlcXVlc3RQb2xpY3ksXG4gICAgLi4uZ2V0RnVuY3Rpb25Bc3NvY2lhdGlvbnNQcm9wKHNldEh0dHBTZWN1cml0eUhlYWRlcnMsIGNmRnVuY3Rpb24pLFxuICB9O1xuICBpZiAocmVzcG9uc2VIZWFkZXJzUG9saWN5KSB7XG4gICAgZGVmYXVsdEJlaGF2aW9yID0gey4uLmRlZmF1bHRCZWhhdmlvciwgcmVzcG9uc2VIZWFkZXJzUG9saWN5IH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBkZWZhdWx0QmVoYXZpb3IsXG4gICAgZW5hYmxlTG9nZ2luZzogdHJ1ZSxcbiAgICBsb2dCdWNrZXQ6IGxvZ2dpbmdCdWNrZXRcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RnVuY3Rpb25Bc3NvY2lhdGlvbnNQcm9wKHNldEh0dHBTZWN1cml0eUhlYWRlcnM6IGJvb2xlYW4sIGNmRnVuY3Rpb246IGNsb3VkZnJvbnQuSUZ1bmN0aW9uIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiAoc2V0SHR0cFNlY3VyaXR5SGVhZGVycyAmJiBjZkZ1bmN0aW9uKSA/IHtcbiAgICBmdW5jdGlvbkFzc29jaWF0aW9uczogW1xuICAgICAge1xuICAgICAgICBldmVudFR5cGU6IEZ1bmN0aW9uRXZlbnRUeXBlLlZJRVdFUl9SRVNQT05TRSxcbiAgICAgICAgZnVuY3Rpb246IGNmRnVuY3Rpb25cbiAgICAgIH1cbiAgICBdXG4gIH0gOiB7fTtcbn1cbiJdfQ==
|
|
@@ -47,3 +47,8 @@ export declare function CloudFrontDistributionForMediaStore(scope: Construct, me
|
|
|
47
47
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
48
48
|
*/
|
|
49
49
|
export declare function CloudFrontOriginAccessIdentity(scope: Construct, comment?: string): cloudfront.OriginAccessIdentity;
|
|
50
|
+
export interface CloudFrontProps {
|
|
51
|
+
readonly insertHttpSecurityHeaders?: boolean;
|
|
52
|
+
readonly responseHeadersPolicyProps?: cloudfront.ResponseHeadersPolicyProps;
|
|
53
|
+
}
|
|
54
|
+
export declare function CheckCloudFrontProps(propsObject: CloudFrontProps | any): void;
|