@aws-cdk/aws-bedrock-agentcore-alpha 2.246.0-alpha.0 → 2.248.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +589 -531
- package/lib/gateway/gateway-base.js +1 -1
- package/lib/gateway/gateway.js +10 -9
- package/lib/gateway/inbound-auth/authorizer.js +6 -5
- package/lib/gateway/inbound-auth/custom-claim.js +7 -6
- package/lib/gateway/interceptor.js +1 -1
- package/lib/gateway/outbound-auth/api-key.js +1 -1
- package/lib/gateway/outbound-auth/credential-provider.js +1 -1
- package/lib/gateway/protocol.js +2 -2
- package/lib/gateway/targets/schema/api-schema.js +6 -6
- package/lib/gateway/targets/schema/tool-schema.js +7 -7
- package/lib/gateway/targets/target-base.js +1 -1
- package/lib/gateway/targets/target-configuration.js +26 -25
- package/lib/gateway/targets/target.js +5 -4
- package/lib/memory/memory-strategy.js +1 -1
- package/lib/memory/memory.js +2 -2
- package/lib/memory/strategies/managed-strategy.js +1 -1
- package/lib/memory/strategies/self-managed-strategy.js +1 -1
- package/lib/memory/validation-helpers.js +4 -3
- package/lib/network/network-configuration.js +4 -4
- package/lib/runtime/inbound-auth/custom-claim.js +7 -6
- package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +5 -4
- package/lib/runtime/runtime-artifact.js +6 -5
- package/lib/runtime/runtime-base.js +4 -3
- package/lib/runtime/runtime-endpoint-base.js +1 -1
- package/lib/runtime/runtime-endpoint.js +10 -9
- package/lib/runtime/runtime.js +21 -20
- package/lib/runtime/validation-helpers.js +3 -2
- package/lib/tools/browser.js +5 -4
- package/lib/tools/code-interpreter.js +5 -4
- package/lib/tools/validation-helpers.js +3 -2
- package/package.json +9 -9
|
@@ -25,7 +25,7 @@ var GatewayExceptionLevel;
|
|
|
25
25
|
* Base Class
|
|
26
26
|
*****************************************************************************/
|
|
27
27
|
class GatewayBase extends aws_cdk_lib_1.Resource {
|
|
28
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayBase", version: "2.
|
|
28
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayBase", version: "2.248.0-alpha.0" };
|
|
29
29
|
/**
|
|
30
30
|
* A reference to a Gateway resource.
|
|
31
31
|
*/
|
package/lib/gateway/gateway.js
CHANGED
|
@@ -42,6 +42,7 @@ const bedrockagentcore = require("aws-cdk-lib/aws-bedrockagentcore");
|
|
|
42
42
|
const cognito = require("aws-cdk-lib/aws-cognito");
|
|
43
43
|
const iam = require("aws-cdk-lib/aws-iam");
|
|
44
44
|
const errors_1 = require("aws-cdk-lib/core/lib/errors");
|
|
45
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
45
46
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
46
47
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
47
48
|
const gateway_base_1 = require("./gateway-base");
|
|
@@ -94,7 +95,7 @@ let Gateway = (() => {
|
|
|
94
95
|
Gateway = _classThis = _classDescriptor.value;
|
|
95
96
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
96
97
|
}
|
|
97
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Gateway", version: "2.
|
|
98
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Gateway", version: "2.248.0-alpha.0" };
|
|
98
99
|
/** Uniquely identifies this class. */
|
|
99
100
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.Gateway';
|
|
100
101
|
/**
|
|
@@ -542,11 +543,11 @@ let Gateway = (() => {
|
|
|
542
543
|
fieldName: 'Gateway name',
|
|
543
544
|
});
|
|
544
545
|
if (lengthErrors.length > 0) {
|
|
545
|
-
throw new errors_1.ValidationError(
|
|
546
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `GatewayNameLengthInvalid`, lengthErrors.join('\n'), this);
|
|
546
547
|
}
|
|
547
548
|
const patternErrors = (0, validation_helpers_1.validateFieldPattern)(name, 'Gateway name', /^([0-9a-zA-Z][-]?){1,48}$/, 'Gateway name must contain only alphanumeric characters and hyphens, with hyphens only between characters');
|
|
548
549
|
if (patternErrors.length > 0) {
|
|
549
|
-
throw new errors_1.ValidationError(
|
|
550
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `GatewayNamePatternInvalid`, patternErrors.join('\n'), this);
|
|
550
551
|
}
|
|
551
552
|
}
|
|
552
553
|
/**
|
|
@@ -567,7 +568,7 @@ let Gateway = (() => {
|
|
|
567
568
|
fieldName: 'Description',
|
|
568
569
|
});
|
|
569
570
|
if (errors.length > 0) {
|
|
570
|
-
throw new errors_1.ValidationError(
|
|
571
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `GatewayDescriptionInvalid`, errors.join('\n'), this);
|
|
571
572
|
}
|
|
572
573
|
}
|
|
573
574
|
/**
|
|
@@ -673,13 +674,13 @@ let Gateway = (() => {
|
|
|
673
674
|
const interceptionPoint = interceptor.interceptionPoint;
|
|
674
675
|
if (interceptionPoint === interceptor_1.InterceptionPoint.REQUEST) {
|
|
675
676
|
if (this.requestInterceptorConfig) {
|
|
676
|
-
throw new errors_1.ValidationError(
|
|
677
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `RequestInterceptorAlreadyExists`, 'Gateway already has a REQUEST interceptor configured. A gateway can have at most one REQUEST interceptor.', this);
|
|
677
678
|
}
|
|
678
679
|
this.requestInterceptorConfig = interceptor.bind(this, this);
|
|
679
680
|
}
|
|
680
681
|
else if (interceptionPoint === interceptor_1.InterceptionPoint.RESPONSE) {
|
|
681
682
|
if (this.responseInterceptorConfig) {
|
|
682
|
-
throw new errors_1.ValidationError(
|
|
683
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `ResponseInterceptorAlreadyExists`, 'Gateway already has a RESPONSE interceptor configured. A gateway can have at most one RESPONSE interceptor.', this);
|
|
683
684
|
}
|
|
684
685
|
this.responseInterceptorConfig = interceptor.bind(this, this);
|
|
685
686
|
}
|
|
@@ -692,10 +693,10 @@ let Gateway = (() => {
|
|
|
692
693
|
const requestCount = interceptors.filter(i => i.interceptionPoint === interceptor_1.InterceptionPoint.REQUEST).length;
|
|
693
694
|
const responseCount = interceptors.filter(i => i.interceptionPoint === interceptor_1.InterceptionPoint.RESPONSE).length;
|
|
694
695
|
if (requestCount > 1) {
|
|
695
|
-
throw new errors_1.ValidationError(
|
|
696
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `TooManyRequestInterceptors`, `Gateway can have at most one REQUEST interceptor. Found ${requestCount} REQUEST interceptors.`, this);
|
|
696
697
|
}
|
|
697
698
|
if (responseCount > 1) {
|
|
698
|
-
throw new errors_1.ValidationError(
|
|
699
|
+
throw new errors_1.ValidationError((0, helpers_internal_1.lit) `TooManyResponseInterceptors`, `Gateway can have at most one RESPONSE interceptor. Found ${responseCount} RESPONSE interceptors.`, this);
|
|
699
700
|
}
|
|
700
701
|
for (const interceptor of interceptors) {
|
|
701
702
|
this.addInterceptor(interceptor);
|
|
@@ -723,4 +724,4 @@ let Gateway = (() => {
|
|
|
723
724
|
return Gateway = _classThis;
|
|
724
725
|
})();
|
|
725
726
|
exports.Gateway = Gateway;
|
|
726
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdhdGV3YXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXdEO0FBRXhELHFFQUFxRTtBQUNyRSxtREFBbUQ7QUFDbkQsMkNBQTJDO0FBRzNDLHdEQUE4RDtBQUM5RCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBSTFFLGlEQUE2QztBQUU3QywwREFBOEQ7QUFFOUQsK0NBQWtEO0FBRWxELG1DQUFxRTtBQUVyRSx5Q0FBZ0c7QUFHaEcsNkNBQWlEO0FBRWpELDZEQUFpRjtBQXFTakY7OytFQUUrRTtBQUMvRTs7Ozs7O0dBTUc7SUFFVSxPQUFPOzRCQURuQixvQ0FBa0I7Ozs7c0JBQ1UsMEJBQVc7Ozs7Ozs7O3VCQUFuQixTQUFRLFdBQVc7Ozs7MkNBa1FyQyxJQUFBLGtDQUFjLEdBQUU7NENBK0JoQixJQUFBLGtDQUFjLEdBQUU7MkNBeUJoQixJQUFBLGtDQUFjLEdBQUU7OENBOEJoQixJQUFBLGtDQUFjLEdBQUU7K0NBOEJoQixJQUFBLGtDQUFjLEdBQUU7MENBeU9oQixJQUFBLGtDQUFjLEdBQUU7WUE1VmpCLGdNQUFPLGVBQWUsNkRBb0JyQjtZQVdELG1NQUFPLGdCQUFnQiw2REFjdEI7WUFXRCxnTUFBTyxlQUFlLDZEQWtCckI7WUFZRCx5TUFBTyxrQkFBa0IsNkRBa0J4QjtZQVlELDRNQUFPLG1CQUFtQiw2REFrQnpCO1lBdU5ELDZMQUFPLGNBQWMsNkRBc0JwQjtZQXRuQkgsNktBdXFCQzs7Ozs7UUF0cUJDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsOENBQThDLENBQUM7UUFDdEc7Ozs7Ozs7V0FPRztRQUNJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FDakMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXdCOzs7Ozs7Ozs7O1lBRXhCLE1BQU0sZUFBZ0IsU0FBUSwwQkFBVztnQkFDdkIs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QU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2pEOztZQXRxQlUsdURBQU87Ozs7O0FBQVAsMEJBQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgVG9rZW4sIExhenksIE5hbWVzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBJUmVzdEFwaSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5JztcbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0ICogYXMgY29nbml0byBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29nbml0byc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgdHlwZSAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB0eXBlIHsgSUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9lcnJvcnMnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG4vLyBJbnRlcm5hbCBpbXBvcnRzXG5pbXBvcnQgdHlwZSB7IEdhdGV3YXlFeGNlcHRpb25MZXZlbCwgSUdhdGV3YXkgfSBmcm9tICcuL2dhdGV3YXktYmFzZSc7XG5pbXBvcnQgeyBHYXRld2F5QmFzZSB9IGZyb20gJy4vZ2F0ZXdheS1iYXNlJztcbmltcG9ydCB0eXBlIHsgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIH0gZnJvbSAnLi9pbmJvdW5kLWF1dGgvYXV0aG9yaXplcic7XG5pbXBvcnQgeyBHYXRld2F5QXV0aG9yaXplciB9IGZyb20gJy4vaW5ib3VuZC1hdXRoL2F1dGhvcml6ZXInO1xuaW1wb3J0IHR5cGUgeyBJSW50ZXJjZXB0b3IsIEludGVyY2VwdG9yQmluZENvbmZpZyB9IGZyb20gJy4vaW50ZXJjZXB0b3InO1xuaW1wb3J0IHsgSW50ZXJjZXB0aW9uUG9pbnQgfSBmcm9tICcuL2ludGVyY2VwdG9yJztcbmltcG9ydCB0eXBlIHsgSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB9IGZyb20gJy4vb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmltcG9ydCB7IEdBVEVXQVlfQVNTVU1FX1JPTEUsIEdBVEVXQVlfS01TX0tFWV9QRVJNUyB9IGZyb20gJy4vcGVybXMnO1xuaW1wb3J0IHR5cGUgeyBJR2F0ZXdheVByb3RvY29sQ29uZmlnIH0gZnJvbSAnLi9wcm90b2NvbCc7XG5pbXBvcnQgeyBNY3BHYXRld2F5U2VhcmNoVHlwZSwgTWNwUHJvdG9jb2xDb25maWd1cmF0aW9uLCBNQ1BQcm90b2NvbFZlcnNpb24gfSBmcm9tICcuL3Byb3RvY29sJztcbmltcG9ydCB0eXBlIHsgQXBpU2NoZW1hIH0gZnJvbSAnLi90YXJnZXRzL3NjaGVtYS9hcGktc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgVG9vbFNjaGVtYSB9IGZyb20gJy4vdGFyZ2V0cy9zY2hlbWEvdG9vbC1zY2hlbWEnO1xuaW1wb3J0IHsgR2F0ZXdheVRhcmdldCB9IGZyb20gJy4vdGFyZ2V0cy90YXJnZXQnO1xuaW1wb3J0IHR5cGUgeyBBcGlHYXRld2F5VG9vbENvbmZpZ3VyYXRpb24sIE1ldGFkYXRhQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vdGFyZ2V0cy90YXJnZXQtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0cmluZ0ZpZWxkLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiB9IGZyb20gJy4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3BzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYWRkaW5nIGEgTGFtYmRhIHRhcmdldCB0byBhIGdhdGV3YXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRMYW1iZGFUYXJnZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzIGFyZSBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKSBhbmQgLSAoaHlwaGVuKVxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSBsYW1iZGFGdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdG9vbCBzY2hlbWEgZGVmaW5pbmcgdGhlIGF2YWlsYWJsZSB0b29sc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9vbFNjaGVtYTogVG9vbFNjaGVtYTtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuaWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYWRkaW5nIGFuIE9wZW5BUEkgdGFyZ2V0IHRvIGEgZ2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZE9wZW5BcGlUYXJnZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzIGFyZSBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKSBhbmQgLSAoaHlwaGVuKVxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgT3BlbkFQSSBzY2hlbWEgZGVmaW5pbmcgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgYXBpU2NoZW1hOiBBcGlTY2hlbWE7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdmFsaWRhdGUgdGhlIE9wZW5BUEkgc2NoZW1hIG9yIG5vdFxuICAgKiBOb3RlOiBWYWxpZGF0aW9uIGlzIG9ubHkgcGVyZm9ybWVkIGZvciBpbmxpbmUgYW5kIGFzc2V0LWJhc2VkIHNjaGVtYSBhbmQgIGR1cmluZyBDREsgc3ludGhlc2lzLlxuICAgKiBTMyBzY2hlbWFzIGNhbm5vdCBiZSB2YWxpZGF0ZWQgYXQgc3ludGhlc2lzIHRpbWUuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT3BlbkFwaVNjaGVtYT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhIFNtaXRoeSB0YXJnZXQgdG8gYSBnYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU21pdGh5VGFyZ2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSkgYW5kIC0gKGh5cGhlbilcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFNtaXRoeSBtb2RlbCBkZWZpbmluZyB0aGUgQVBJXG4gICAqL1xuICByZWFkb25seSBzbWl0aHlNb2RlbDogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5pYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhZGRpbmcgYW4gTUNQIFNlcnZlciB0YXJnZXQgdG8gYSBnYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTWNwU2VydmVyVGFyZ2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSkgYW5kIC0gKGh5cGhlbilcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEhUVFBTIGVuZHBvaW50IFVSTCBvZiB0aGUgTUNQIHNlcnZlclxuICAgKlxuICAgKiBUaGUgZW5kcG9pbnQgbXVzdDpcbiAgICogLSBVc2UgSFRUUFMgcHJvdG9jb2xcbiAgICogLSBCZSBwcm9wZXJseSBVUkwtZW5jb2RlZFxuICAgKiAtIFBvaW50IHRvIGFuIE1DUCBzZXJ2ZXIgdGhhdCBpbXBsZW1lbnRzIHRvb2wgY2FwYWJpbGl0aWVzXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogTUNQIHNlcnZlcnMgcmVxdWlyZSBleHBsaWNpdCBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKiBPQXV0aDIgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgb3ZlciBOb0F1dGguXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhbiBBUEkgR2F0ZXdheSB0YXJnZXQgdG8gYSBnYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQXBpR2F0ZXdheVRhcmdldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBSRVNUIEFQSSB0byBpbnRlZ3JhdGUgd2l0aFxuICAgKiBNdXN0IGJlIGluIHRoZSBzYW1lIGFjY291bnQgYW5kIHJlZ2lvbiBhcyB0aGUgZ2F0ZXdheVxuICAgKiBbZGlzYWJsZS1hd3NsaW50OnByZWZlci1yZWYtaW50ZXJmYWNlXVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdEFwaTogSVJlc3RBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBuYW1lIG9mIHRoZSBSRVNUIEFQSVxuICAgKiBAZGVmYXVsdCAtIFVzZXMgdGhlIGRlcGxveW1lbnQgc3RhZ2UgZnJvbSB0aGUgUmVzdEFwaSAocmVzdEFwaS5kZXBsb3ltZW50U3RhZ2Uuc3RhZ2VOYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvb2wgY29uZmlndXJhdGlvbiBkZWZpbmluZyB3aGljaCBvcGVyYXRpb25zIHRvIGV4cG9zZVxuICAgKi9cbiAgcmVhZG9ubHkgYXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uOiBBcGlHYXRld2F5VG9vbENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBBUEkgR2F0ZXdheSB0YXJnZXRzIHN1cHBvcnQgSUFNIGFuZCBBUEkga2V5IGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gRW1wdHkgYXJyYXkgKHNlcnZpY2UgaGFuZGxlcyBJQU0gYXV0b21hdGljYWxseSlcbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBjb25maWd1cmF0aW9uIGZvciBwYXNzaW5nIGhlYWRlcnMgYW5kIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQWxsb3dzIHlvdSB0byBwYXNzIGFkZGl0aW9uYWwgY29udGV4dCB0aHJvdWdoIGhlYWRlcnMgYW5kIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQGRlZmF1bHQgLSBObyBtZXRhZGF0YSBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YUNvbmZpZ3VyYXRpb24/OiBNZXRhZGF0YUNvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYSBHYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB5b3VyIGFjY291bnRcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpLCAtIChoeXBoZW4pIGFuZCBzcGFjZXNcbiAgICogVGhlIGRlc2NyaXB0aW9uIGNhbiBoYXZlIHVwIHRvIDIwMCBjaGFyYWN0ZXJzXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvdG9jb2wgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGRlZmF1bHQgLSBBIGRlZmF1bHQgcHJvdG9jb2wgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgTUNQIHdpdGggZm9sbG93aW5nIHBhcmFtc1xuICAgKiAgc3VwcG9ydGVkVmVyc2lvbnM6IFtNQ1BQcm90b2NvbFZlcnNpb24uTUNQXzIwMjVfMDNfMjZdLFxuICAgKiAgc2VhcmNoVHlwZTogTWNwR2F0ZXdheVNlYXJjaFR5cGUuU0VNQU5USUMsXG4gICAqICBpbnN0cnVjdGlvbnM6IFwiRGVmYXVsdCBnYXRld2F5IHRvIGNvbm5lY3QgdG8gZXh0ZXJuYWwgTUNQIHRvb2xzXCIsXG4gICAqL1xuICByZWFkb25seSBwcm90b2NvbENvbmZpZ3VyYXRpb24/OiBJR2F0ZXdheVByb3RvY29sQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAZGVmYXVsdCAtIEEgZGVmYXVsdCBhdXRob3JpemVyIHdpbGwgYmUgY3JlYXRlZCB1c2luZyBDb2duaXRvXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemVyQ29uZmlndXJhdGlvbj86IElHYXRld2F5QXV0aG9yaXplckNvbmZpZztcblxuICAvKipcbiAgICogVGhlIHZlcmJvc2l0eSBvZiBleGNlcHRpb24gbWVzc2FnZXNcbiAgICogVXNlIERFQlVHIG1vZGUgdG8gc2VlIGdyYW51bGFyIGV4Y2VwdGlvbiBtZXNzYWdlcyBmcm9tIGEgR2F0ZXdheVxuICAgKiBAZGVmYXVsdCAtIEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgc2FuaXRpemVkIGZvciBwcmVzZW50YXRpb24gdG8gZW5kIHVzZXJzXG4gICAqL1xuICByZWFkb25seSBleGNlcHRpb25MZXZlbD86IEdhdGV3YXlFeGNlcHRpb25MZXZlbDtcblxuICAvKipcbiAgICogVGhlIEFXUyBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2F0ZXdheVxuICAgKiBAZGVmYXVsdCAtIE5vIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgdGhhdCBwcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgdGhlIGdhdGV3YXkgdG8gYWNjZXNzIEFXUyBzZXJ2aWNlc1xuICAgKiBAZGVmYXVsdCAtIEEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUYWdzIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBBIGxpc3Qgb2Yga2V5OnZhbHVlIHBhaXJzIG9mIHRhZ3MgdG8gYXBwbHkgdG8gdGhpcyBHYXRld2F5IHJlc291cmNlXG4gICAqIEBkZWZhdWx0IC0gTm8gdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEludGVyY2VwdG9yIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgZ2F0ZXdheVxuICAgKlxuICAgKiBJbnRlcmNlcHRvcnMgYWxsb3cgeW91IHRvIHJ1biBjdXN0b20gY29kZSBkdXJpbmcgZWFjaCBnYXRld2F5IGludm9jYXRpb246XG4gICAqIC0gUkVRVUVTVCBpbnRlcmNlcHRvcnMgZXhlY3V0ZSBiZWZvcmUgdGhlIGdhdGV3YXkgY2FsbHMgdGhlIHRhcmdldFxuICAgKiAtIFJFU1BPTlNFIGludGVyY2VwdG9ycyBleGVjdXRlIGFmdGVyIHRoZSB0YXJnZXQgcmVzcG9uZHNcbiAgICpcbiAgICogQSBnYXRld2F5IGNhbiBoYXZlIGF0IG1vc3Qgb25lIFJFUVVFU1QgaW50ZXJjZXB0b3IgYW5kIG9uZSBSRVNQT05TRSBpbnRlcmNlcHRvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBpbnRlcmNlcHRvcnNcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktaW50ZXJjZXB0b3JzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGludGVyY2VwdG9yQ29uZmlndXJhdGlvbnM/OiBJSW50ZXJjZXB0b3JbXTtcbn1cblxuLyoqXG4gKiBBdHRyaWJ1dGVzIGZvciBpbXBvcnRpbmcgYW4gZXhpc3RpbmcgR2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBnYXRld2F5SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0aGF0IHByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogR2F0ZXdheSByZXNvdXJjZSBmb3IgQVdTIEJlZHJvY2sgQWdlbnQgQ29yZS5cbiAqIFNlcnZlcyBhcyBhbiBpbnRlZ3JhdGlvbiBwb2ludCBiZXR3ZWVuIHlvdXIgYWdlbnQgYW5kIGV4dGVybmFsIHNlcnZpY2VzLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OkdhdGV3YXlcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlLWNvbnRyb2wvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlR2F0ZXdheS5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBHYXRld2F5IGV4dGVuZHMgR2F0ZXdheUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1iZWRyb2NrLWFnZW50Y29yZS1hbHBoYS5HYXRld2F5JztcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBHYXRld2F5IHVzaW5nIGl0cyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBvZiB0aGUgZXhpc3RpbmcgR2F0ZXdheVxuICAgKiBAcmV0dXJucyBBbiBJR2F0ZXdheSBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGltcG9ydGVkIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUdhdGV3YXlBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogR2F0ZXdheUF0dHJpYnV0ZXMsXG4gICk6IElHYXRld2F5IHtcbiAgICBjbGFzcyBJbXBvcnRlZEdhdGV3YXkgZXh0ZW5kcyBHYXRld2F5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheUFybiA9IGF0dHJzLmdhdGV3YXlBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheUlkID0gYXR0cnMuZ2F0ZXdheUlkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IG5hbWUgPSBhdHRycy5nYXRld2F5TmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwcm90b2NvbENvbmZpZ3VyYXRpb246IElHYXRld2F5UHJvdG9jb2xDb25maWc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXplckNvbmZpZ3VyYXRpb246IElHYXRld2F5QXV0aG9yaXplckNvbmZpZztcbiAgICAgIHB1YmxpYyByZWFkb25seSBleGNlcHRpb25MZXZlbCA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBrbXNLZXkgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm9sZSA9IGF0dHJzLnJvbGU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheVVybCA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzUmVhc29uID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdCA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1cGRhdGVkQXQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGkpO1xuICAgICAgICAvLyBDcmVhdGUgcGxhY2Vob2xkZXIgcHJvdG9jb2wgYW5kIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvbnNcbiAgICAgICAgdGhpcy5wcm90b2NvbENvbmZpZ3VyYXRpb24gPSBuZXcgTWNwUHJvdG9jb2xDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICBzdXBwb3J0ZWRWZXJzaW9uczogW01DUFByb3RvY29sVmVyc2lvbi5NQ1BfMjAyNV8wM18yNl0sXG4gICAgICAgICAgc2VhcmNoVHlwZTogTWNwR2F0ZXdheVNlYXJjaFR5cGUuU0VNQU5USUMsXG4gICAgICAgICAgaW5zdHJ1Y3Rpb25zOiAnSW1wb3J0ZWQgZ2F0ZXdheScsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uID0gR2F0ZXdheUF1dGhvcml6ZXIudXNpbmdBd3NJYW0oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEdhdGV3YXkoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYXRld2F5QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvdG9jb2xDb25maWd1cmF0aW9uOiBJR2F0ZXdheVByb3RvY29sQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF1dGhvcml6ZXJDb25maWd1cmF0aW9uOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBleGNlcHRpb24gbGV2ZWwgZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhjZXB0aW9uTGV2ZWw/OiBHYXRld2F5RXhjZXB0aW9uTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgZm9yIGVuY3J5cHRpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIFVSTCBlbmRwb2ludCBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXlVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyByZWFzb25zIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzUmVhc29uPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyBhcHBsaWVkIHRvIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFVzZXIgUG9vbCBjcmVhdGVkIGZvciB0aGUgZ2F0ZXdheSAoaWYgdXNpbmcgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIpXG4gICAqL1xuICBwdWJsaWMgdXNlclBvb2w/OiBjb2duaXRvLklVc2VyUG9vbDtcblxuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIENsaWVudCBjcmVhdGVkIGZvciB0aGUgZ2F0ZXdheSAoaWYgdXNpbmcgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIpXG4gICAqL1xuICBwdWJsaWMgdXNlclBvb2xDbGllbnQ/OiBjb2duaXRvLklVc2VyUG9vbENsaWVudDtcblxuICAvKipcbiAgICogVGhlIFJFUVVFU1QgaW50ZXJjZXB0b3IgY29uZmlndXJhdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVxdWVzdEludGVyY2VwdG9yQ29uZmlnPzogSW50ZXJjZXB0b3JCaW5kQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgUkVTUE9OU0UgaW50ZXJjZXB0b3IgY29uZmlndXJhdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVzcG9uc2VJbnRlcmNlcHRvckNvbmZpZz86IEludGVyY2VwdG9yQmluZENvbmZpZztcblxuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIERvbWFpbiBjcmVhdGVkIGZvciB0aGUgZ2F0ZXdheSAoaWYgdXNpbmcgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIpXG4gICAqL1xuICBwdWJsaWMgdXNlclBvb2xEb21haW4/OiBjb2duaXRvLklVc2VyUG9vbERvbWFpbjtcblxuICAvKipcbiAgICogVGhlIENvZ25pdG8gUmVzb3VyY2UgU2VydmVyIGNyZWF0ZWQgZm9yIHRoZSBnYXRld2F5IChpZiB1c2luZyBkZWZhdWx0IENvZ25pdG8gYXV0aG9yaXplcilcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVNlcnZlcj86IGNvZ25pdG8uSVVzZXJQb29sUmVzb3VyY2VTZXJ2ZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBPQXV0aDIgdG9rZW4gZW5kcG9pbnQgVVJMIGZvciBjbGllbnQgY3JlZGVudGlhbHMgZmxvdy5cbiAgICogT25seSBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5FbmRwb2ludFVybD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9BdXRoMiBzY29wZSBzdHJpbmdzIGZvciBjbGllbnQgY3JlZGVudGlhbHMgZmxvdy5cbiAgICogT25seSBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb2F1dGhTY29wZXM/OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogR2F0ZXdheVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC8vIE1heGltdW0gbmFtZSBsZW5ndGggb2YgNDggY2hhcmFjdGVycyBpcyBjaG9zZW4gaW5zdGVhZCBvZiAxMDAgY2hhcmFjdGVycyB0aGF0IG1lbnRpb25lZCBpbiBkb2N1bWVudGF0aW9uIGJlbG93LFxuICAgICAgLy8gZHVlIHRvIGZhaWx1cmUgaW4gQ0YgZGVwbG95bWVudCB3aGVuIG1vcmUgdGhhbiA0OCBjaGFyYWN0ZXJzIHVzZWRcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9UZW1wbGF0ZVJlZmVyZW5jZS9hd3MtcmVzb3VyY2UtYmVkcm9ja2FnZW50Y29yZS1nYXRld2F5Lmh0bWwjY2ZuLWJlZHJvY2thZ2VudGNvcmUtZ2F0ZXdheS1uYW1lXG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLmdhdGV3YXlOYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDQ4IH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzc2lnbm1lbnRzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICB0aGlzLm5hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcbiAgICB0aGlzLnZhbGlkYXRlR2F0ZXdheU5hbWUodGhpcy5uYW1lKTtcblxuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKHRoaXMuZGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHRoaXMua21zS2V5ID0gcHJvcHMua21zS2V5O1xuICAgIHRoaXMucm9sZSA9IHByb3BzLnJvbGUgPz8gdGhpcy5jcmVhdGVHYXRld2F5Um9sZSgpO1xuXG4gICAgaWYgKHRoaXMua21zS2V5ICYmIHRoaXMucm9sZSkge1xuICAgICAgdGhpcy5rbXNLZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdCh0aGlzLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucHJvdG9jb2xDb25maWd1cmF0aW9uID0gcHJvcHMucHJvdG9jb2xDb25maWd1cmF0aW9uID8/IHRoaXMuY3JlYXRlRGVmYXVsdE1jcFByb3RvY29sQ29uZmlndXJhdGlvbigpO1xuICAgIGlmIChwcm9wcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbikge1xuICAgICAgdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbiA9IHByb3BzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkZWZhdWx0Q29nbml0b0F1dGggPSB0aGlzLmNyZWF0ZURlZmF1bHRDb2duaXRvQXV0aG9yaXplckNvbmZpZygpO1xuICAgICAgdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbiA9IGRlZmF1bHRDb2duaXRvQXV0aC5hdXRob3JpemVyQ29uZmlnO1xuICAgICAgdGhpcy50b2tlbkVuZHBvaW50VXJsID0gZGVmYXVsdENvZ25pdG9BdXRoLnRva2VuRW5kcG9pbnRVcmw7XG4gICAgICB0aGlzLm9hdXRoU2NvcGVzID0gZGVmYXVsdENvZ25pdG9BdXRoLm9hdXRoU2NvcGVzO1xuICAgIH1cbiAgICB0aGlzLmV4Y2VwdGlvbkxldmVsID0gcHJvcHMuZXhjZXB0aW9uTGV2ZWw7XG5cbiAgICB0aGlzLnRhZ3MgPSBwcm9wcy50YWdzID8/IHt9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBpbnRlcmNlcHRvcnMgZnJvbSBwcm9wc1xuICAgIGlmIChwcm9wcy5pbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlQW5kSW5pdGlhbGl6ZUludGVyY2VwdG9ycyhwcm9wcy5pbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBMMSBJbnN0YW50aWF0aW9uXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgX3Jlc291cmNlID0gbmV3IGJlZHJvY2thZ2VudGNvcmUuQ2ZuR2F0ZXdheSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhdXRob3JpemVyQ29uZmlndXJhdGlvbjogdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbi5fcmVuZGVyKCksXG4gICAgICBhdXRob3JpemVyVHlwZTogdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbi5hdXRob3JpemVyVHlwZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgZXhjZXB0aW9uTGV2ZWw6IHRoaXMuZXhjZXB0aW9uTGV2ZWwsXG4gICAgICBpbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zOiBMYXp5LmFueSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVySW50ZXJjZXB0b3JDb25maWd1cmF0aW9ucygpLFxuICAgICAgfSksXG4gICAgICBrbXNLZXlBcm46IHRoaXMua21zS2V5Py5rZXlBcm4sXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBwcm90b2NvbENvbmZpZ3VyYXRpb246IHRoaXMucHJvdG9jb2xDb25maWd1cmF0aW9uLl9yZW5kZXIoKSxcbiAgICAgIHByb3RvY29sVHlwZTogdGhpcy5wcm90b2NvbENvbmZpZ3VyYXRpb24ucHJvdG9jb2xUeXBlLFxuICAgICAgcm9sZUFybjogdGhpcy5yb2xlPy5yb2xlQXJuLFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5nYXRld2F5SWQgPSBfcmVzb3VyY2UuYXR0ckdhdGV3YXlJZGVudGlmaWVyO1xuICAgIHRoaXMuZ2F0ZXdheUFybiA9IF9yZXNvdXJjZS5hdHRyR2F0ZXdheUFybjtcbiAgICB0aGlzLmdhdGV3YXlVcmwgPSBfcmVzb3VyY2UuYXR0ckdhdGV3YXlVcmw7XG4gICAgdGhpcy5zdGF0dXMgPSBfcmVzb3VyY2UuYXR0clN0YXR1cztcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IF9yZXNvdXJjZS5hdHRyQ3JlYXRlZEF0O1xuICAgIHRoaXMudXBkYXRlZEF0ID0gX3Jlc291cmNlLmF0dHJVcGRhdGVkQXQ7XG4gICAgdGhpcy5zdGF0dXNSZWFzb24gPSBfcmVzb3VyY2UuYXR0clN0YXR1c1JlYXNvbnM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgTGFtYmRhIHRhcmdldCB0byB0aGlzIGdhdGV3YXlcbiAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBHYXRld2F5VGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWQgZm9yIHRoZSB0YXJnZXRcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgZm9yIHRoZSBMYW1iZGEgdGFyZ2V0XG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEdhdGV3YXlUYXJnZXRcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRMYW1iZGFUYXJnZXQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQWRkTGFtYmRhVGFyZ2V0T3B0aW9ucyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgLy8gTGFtYmRhIGludm9rZSBwZXJtaXNzaW9ucyBhcmUgYXV0b21hdGljYWxseSBncmFudGVkIGluIExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24uYmluZCgpXG4gICAgLy8gQnVpbGQgdGFyZ2V0IHByb3BzLCBjb25kaXRpb25hbGx5IGluY2x1ZGluZyBjcmVkZW50aWFscyBpZiBhcnJheSBoYXMgaXRlbXNcbiAgICBjb25zdCB0YXJnZXRQcm9wczogYW55ID0ge1xuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZ2F0ZXdheTogdGhpcyxcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiBwcm9wcy5sYW1iZGFGdW5jdGlvbixcbiAgICAgIHRvb2xTY2hlbWE6IHByb3BzLnRvb2xTY2hlbWEsXG4gICAgICAuLi4ocHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgJiYgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMubGVuZ3RoID4gMFxuICAgICAgICA/IHsgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zIH1cbiAgICAgICAgOiB7fSksXG4gICAgfTtcblxuICAgIGNvbnN0IHRhcmdldCA9IEdhdGV3YXlUYXJnZXQuZm9yTGFtYmRhKHRoaXMsIGlkLCB0YXJnZXRQcm9wcyk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBPcGVuQVBJIHRhcmdldCB0byB0aGlzIGdhdGV3YXlcbiAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBHYXRld2F5VGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWQgZm9yIHRoZSB0YXJnZXRcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgZm9yIHRoZSBPcGVuQVBJIHRhcmdldFxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBHYXRld2F5VGFyZ2V0XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkT3BlbkFwaVRhcmdldChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBBZGRPcGVuQXBpVGFyZ2V0T3B0aW9ucyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gR2F0ZXdheVRhcmdldC5mb3JPcGVuQXBpKHRoaXMsIGlkLCB7XG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBnYXRld2F5OiB0aGlzLFxuICAgICAgYXBpU2NoZW1hOiBwcm9wcy5hcGlTY2hlbWEsXG4gICAgICB2YWxpZGF0ZU9wZW5BcGlTY2hlbWE6IHByb3BzLnZhbGlkYXRlT3BlbkFwaVNjaGVtYSxcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICB9KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgU21pdGh5IHRhcmdldCB0byB0aGlzIGdhdGV3YXlcbiAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBHYXRld2F5VGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWQgZm9yIHRoZSB0YXJnZXRcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgZm9yIHRoZSBTbWl0aHkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEdhdGV3YXlUYXJnZXRcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRTbWl0aHlUYXJnZXQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQWRkU21pdGh5VGFyZ2V0T3B0aW9ucyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgLy8gQnVpbGQgdGFyZ2V0IHByb3BzLCBjb25kaXRpb25hbGx5IGluY2x1ZGluZyBjcmVkZW50aWFscyBpZiBhcnJheSBoYXMgaXRlbXNcbiAgICBjb25zdCB0YXJnZXRQcm9wczogYW55ID0ge1xuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZ2F0ZXdheTogdGhpcyxcbiAgICAgIHNtaXRoeU1vZGVsOiBwcm9wcy5zbWl0aHlNb2RlbCxcbiAgICAgIC4uLihwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyAmJiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgID8geyBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gR2F0ZXdheVRhcmdldC5mb3JTbWl0aHkodGhpcywgaWQsIHRhcmdldFByb3BzKTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIE1DUCBzZXJ2ZXIgdGFyZ2V0IHRvIHRoaXMgZ2F0ZXdheVxuICAgKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQgY3JlYXRlcyBhIEdhdGV3YXlUYXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZ2F0ZXdheVxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZCBmb3IgdGhlIHRhcmdldFxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcGVydGllcyBmb3IgdGhlIE1DUCBzZXJ2ZXIgdGFyZ2V0XG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEdhdGV3YXlUYXJnZXRcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktdGFyZ2V0LU1DUHNlcnZlcnMuaHRtbFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZE1jcFNlcnZlclRhcmdldChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBBZGRNY3BTZXJ2ZXJUYXJnZXRPcHRpb25zLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICAvLyBCdWlsZCB0YXJnZXQgcHJvcHMsIGNvbmRpdGlvbmFsbHkgaW5jbHVkaW5nIGNyZWRlbnRpYWxzIGlmIGFycmF5IGhhcyBpdGVtc1xuICAgIGNvbnN0IHRhcmdldFByb3BzOiBhbnkgPSB7XG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBnYXRld2F5OiB0aGlzLFxuICAgICAgZW5kcG9pbnQ6IHByb3BzLmVuZHBvaW50LFxuICAgICAgLi4uKHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zICYmIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG5cbiAgICBjb25zdCB0YXJnZXQgPSBHYXRld2F5VGFyZ2V0LmZvck1jcFNlcnZlcih0aGlzLCBpZCwgdGFyZ2V0UHJvcHMpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gQVBJIEdhdGV3YXkgdGFyZ2V0IHRvIHRoaXMgZ2F0ZXdheVxuICAgKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQgY3JlYXRlcyBhIEdhdGV3YXlUYXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZ2F0ZXdheVxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZCBmb3IgdGhlIHRhcmdldFxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcGVydGllcyBmb3IgdGhlIEFQSSBHYXRld2F5IHRhcmdldFxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBHYXRld2F5VGFyZ2V0XG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LXRhcmdldC1hcGktZ2F0ZXdheS5odG1sXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkQXBpR2F0ZXdheVRhcmdldChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBBZGRBcGlHYXRld2F5VGFyZ2V0T3B0aW9ucyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgLy8gQVBJIEdhdGV3YXkgdGFyZ2V0cyByZXF1aXJlIGV4cGxpY2l0IGNyZWRlbnRpYWwgY29uZmlndXJhdGlvbiBvciBkZWZhdWx0cyB0byBJQU1cbiAgICAvLyBHZXRFeHBvcnQgYW5kIGV4ZWN1dGUtYXBpOkludm9rZSBwZXJtaXNzaW9ucyBhcmUgYXV0b21hdGljYWxseSBncmFudGVkIGluIEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uLmJpbmQoKVxuICAgIGNvbnN0IHRhcmdldCA9IEdhdGV3YXlUYXJnZXQuZm9yQXBpR2F0ZXdheSh0aGlzLCBpZCwge1xuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZ2F0ZXdheTogdGhpcyxcbiAgICAgIHJlc3RBcGk6IHByb3BzLnJlc3RBcGksXG4gICAgICBzdGFnZTogcHJvcHMuc3RhZ2UsXG4gICAgICBhcGlHYXRld2F5VG9vbENvbmZpZ3VyYXRpb246IHByb3BzLmFwaUdhdGV3YXlUb29sQ29uZmlndXJhdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIG1ldGFkYXRhQ29uZmlndXJhdGlvbjogcHJvcHMubWV0YWRhdGFDb25maWd1cmF0aW9uLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBzZXJ2aWNlIHJvbGUgZm9yIHRoZSBnYXRld2F5IHRvIGFzc3VtZVxuICAgKlxuICAgKiBUaGUgc2VydmljZSByb2xlIHN0YXJ0cyB3aXRoIG1pbmltYWwgcGVybWlzc2lvbnMuIEFkZGl0aW9uYWwgcGVybWlzc2lvbnNcbiAgICogYXJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0YXJnZXRzIGFyZSBjb25maWd1cmVkOlxuICAgKiAtIEtNUyBlbmNyeXB0aW9uOiBBdXRvbWF0aWNhbGx5IGdyYW50cyBlbmNyeXB0L2RlY3J5cHQgcGVybWlzc2lvbnNcbiAgICpcbiAgICogRm9yIG90aGVyIHRhcmdldCB0eXBlcywgbWFudWFsbHkgZ3JhbnQgcGVybWlzc2lvbnMgdXNpbmcgc3RhbmRhcmQgQ0RLIGdyYW50IG1ldGhvZHM6XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVHYXRld2F5Um9sZSgpOiBpYW0uUm9sZSB7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnU2VydmljZVJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYmVkcm9jay1hZ2VudGNvcmUuYW1hem9uYXdzLmNvbScpLFxuICAgICAgZGVzY3JpcHRpb246IGBTZXJ2aWNlIHJvbGUgZm9yIEJlZHJvY2sgQWdlbnRDb3JlIEdhdGV3YXkgJHt0aGlzLm5hbWV9YCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICBjb25zdCBhY2NvdW50ID0gU3RhY2sub2YodGhpcykuYWNjb3VudDtcbiAgICBjb25zdCBwYXJ0aXRpb24gPSBTdGFjay5vZih0aGlzKS5wYXJ0aXRpb247XG5cbiAgICAvLyBUaGlzIHJlc3RyaWN0cyByb2xlIGFzc3VtcHRpb24gdG8gdGhlIHNwZWNpZmljIGdhdGV3YXkgcmVzb3VyY2Ugb25seSBpbiB0aGlzIGFjY291bnQsXG4gICAgLy8gcHJldmVudGluZyBvdGhlciBhY2NvdW50cyBmcm9tIGFzc3VtaW5nIHRoaXMgcm9sZS5cbiAgICAvLyBTZWU6aHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LXByZXJlcXVpc2l0ZXMtcGVybWlzc2lvbnMuaHRtbCNnYXRld2F5LXNlcnZpY2Utcm9sZS1wZXJtaXNzaW9uc1xuICAgIHJvbGUuYXNzdW1lUm9sZVBvbGljeT8uYWRkU3RhdGVtZW50cyhcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdiZWRyb2NrLWFnZW50Y29yZS5hbWF6b25hd3MuY29tJyldLFxuICAgICAgICBhY3Rpb25zOiBHQVRFV0FZX0FTU1VNRV9ST0xFLFxuICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICAnYXdzOlNvdXJjZUFjY291bnQnOiBhY2NvdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgQXJuTGlrZToge1xuICAgICAgICAgICAgJ2F3czpTb3VyY2VBcm4nOiBgYXJuOiR7cGFydGl0aW9ufTpiZWRyb2NrLWFnZW50Y29yZToke3JlZ2lvbn06JHthY2NvdW50fTpnYXRld2F5LyR7dGhpcy5uYW1lfSpgLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMua21zS2V5KSB7XG4gICAgICByb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBHQVRFV0FZX0tNU19LRVlfUEVSTVMsXG4gICAgICAgIHJlc291cmNlczogW3RoaXMua21zS2V5LmtleUFybl0sXG4gICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiByb2xlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZ2F0ZXdheSBuYW1lIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeKFswLTlhLXpBLVpdWy1dPyl7MSw0OH0kXG4gICAqIE1heCBsZW5ndGg6IDQ4IGNoYXJhY3RlcnNcbiAgICogQHBhcmFtIG5hbWUgVGhlIGdhdGV3YXkgbmFtZSB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBuYW1lIGlzIGludmFsaWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlR2F0ZXdheU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChuYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDQ4LFxuICAgICAgZmllbGROYW1lOiAnR2F0ZXdheSBuYW1lJyxcbiAgICB9KTtcblxuICAgIGlmIChsZW5ndGhFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignR2F0ZXdheU5hbWVMZW5ndGhJbnZhbGlkJywgbGVuZ3RoRXJyb3JzLmpvaW4oJ1xcbicpLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICBuYW1lLFxuICAgICAgJ0dhdGV3YXkgbmFtZScsXG4gICAgICAvXihbMC05YS16QS1aXVstXT8pezEsNDh9JC8sXG4gICAgICAnR2F0ZXdheSBuYW1lIG11c3QgY29udGFpbiBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBoeXBoZW5zLCB3aXRoIGh5cGhlbnMgb25seSBiZXR3ZWVuIGNoYXJhY3RlcnMnLFxuICAgICk7XG5cbiAgICBpZiAocGF0dGVybkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdHYXRld2F5TmFtZVBhdHRlcm5JbnZhbGlkJywgcGF0dGVybkVycm9ycy5qb2luKCdcXG4nKSwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZGVzY3JpcHRpb24gZm9ybWF0XG4gICAqIE1heCBsZW5ndGg6IDIwMCBjaGFyYWN0ZXJzXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBUaGUgZGVzY3JpcHRpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGRlc2NyaXB0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IGRlc2NyaXB0aW9uLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiAyMDAsXG4gICAgICBmaWVsZE5hbWU6ICdEZXNjcmlwdGlvbicsXG4gICAgfSk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0dhdGV3YXlEZXNjcmlwdGlvbkludmFsaWQnLCBlcnJvcnMuam9pbignXFxuJyksIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIgZm9yIHRoZSBnYXRld2F5XG4gICAqIFByb3Zpc2lvbnMgYSBDb2duaXRvIFVzZXIgUG9vbCBhbmQgY29uZmlndXJlcyBNMk0gKG1hY2hpbmUtdG8tbWFjaGluZSkgSldUIGF1dGhlbnRpY2F0aW9uXG4gICAqIHVzaW5nIE9BdXRoIDIuMCBjbGllbnQgY3JlZGVudGlhbHMgZ3JhbnQgZmxvd1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvaWRlbnRpdHktaWRwLWNvZ25pdG8uaHRtbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRGVmYXVsdENvZ25pdG9BdXRob3JpemVyQ29uZmlnKCk6IHtcbiAgICBhdXRob3JpemVyQ29uZmlnOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWc7XG4gICAgdG9rZW5FbmRwb2ludFVybDogc3RyaW5nO1xuICAgIG9hdXRoU2NvcGVzOiBzdHJpbmdbXTtcbiAgfSB7XG4gICAgY29uc3QgdXNlclBvb2wgPSBuZXcgY29nbml0by5Vc2VyUG9vbCh0aGlzLCAnVXNlclBvb2wnLCB7XG4gICAgICBzaWduSW5DYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc291cmNlU2VydmVyID0gdXNlclBvb2wuYWRkUmVzb3VyY2VTZXJ2ZXIoJ1Jlc291cmNlU2VydmVyJywge1xuICAgICAgaWRlbnRpZmllcjogTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiAyNTYsIHNlcGFyYXRvcjogJy0nIH0pLFxuICAgICAgc2NvcGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzY29wZU5hbWU6ICdyZWFkJyxcbiAgICAgICAgICBzY29wZURlc2NyaXB0aW9uOiAnUmVhZCBhY2Nlc3MgdG8gZ2F0ZXdheSB0b29scycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzY29wZU5hbWU6ICd3cml0ZScsXG4gICAgICAgICAgc2NvcGVEZXNjcmlwdGlvbjogJ1dyaXRlIGFjY2VzcyB0byBnYXRld2F5IHRvb2xzJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBvYXV0aFNjb3BlcyA9IFtcbiAgICAgIGNvZ25pdG8uT0F1dGhTY29wZS5yZXNvdXJjZVNlcnZlcihyZXNvdXJjZVNlcnZlciwge1xuICAgICAgICBzY29wZU5hbWU6ICdyZWFkJyxcbiAgICAgICAgc2NvcGVEZXNjcmlwdGlvbjogJ1JlYWQgYWNjZXNzIHRvIGdhdGV3YXkgdG9vbHMnLFxuICAgICAgfSksXG4gICAgICBjb2duaXRvLk9BdXRoU2NvcGUucmVzb3VyY2VTZXJ2ZXIocmVzb3VyY2VTZXJ2ZXIsIHtcbiAgICAgICAgc2NvcGVOYW1lOiAnd3JpdGUnLFxuICAgICAgICBzY29wZURlc2NyaXB0aW9uOiAnV3JpdGUgYWNjZXNzIHRvIGdhdGV3YXkgdG9vbHMnLFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIGNvbnN0IHVzZXJQb29sQ2xpZW50ID0gdXNlclBvb2wuYWRkQ2xpZW50KCdEZWZhdWx0Q2xpZW50Jywge1xuICAgICAgZ2VuZXJhdGVTZWNyZXQ6IHRydWUsXG4gICAgICBvQXV0aDoge1xuICAgICAgICBmbG93czoge1xuICAgICAgICAgIGNsaWVudENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY29wZXM6IG9hdXRoU2NvcGVzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBDb2duaXRvIERvbWFpbiBmb3IgT0F1dGgyIHRva2VuIGVuZHBvaW50XG4gICAgLy8gVXNlIHVuaXF1ZVJlc291cmNlTmFtZSB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBkb21haW4gcHJlZml4IHRvTG93ZXJDYXNlKCkgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGUgaGFzaCBwb3J0aW9uIGlzIHVwcGVyY2FzZVxuICAgIGNvbnN0IGRvbWFpblByZWZpeCA9IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICBtYXhMZW5ndGg6IDYzLCAvLyBDb2duaXRvIGRvbWFpbiBwcmVmaXggbWF4IGxlbmd0aFxuICAgICAgc2VwYXJhdG9yOiAnLScsXG4gICAgfSkudG9Mb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IHVzZXJQb29sRG9tYWluID0gdXNlclBvb2wuYWRkRG9tYWluKCdEb21haW4nLCB7XG4gICAgICBjb2duaXRvRG9tYWluOiB7XG4gICAgICAgIGRvbWFpblByZWZpeDogZG9tYWluUHJlZml4LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMudXNlclBvb2wgPSB1c2VyUG9vbDtcbiAgICB0aGlzLnVzZXJQb29sQ2xpZW50ID0gdXNlclBvb2xDbGllbnQ7XG4gICAgdGhpcy51c2VyUG9vbERvbWFpbiA9IHVzZXJQb29sRG9tYWluO1xuICAgIHRoaXMucmVzb3VyY2VTZXJ2ZXIgPSByZXNvdXJjZVNlcnZlcjtcblxuICAgIHJldHVybiB7XG4gICAgICBhdXRob3JpemVyQ29uZmlnOiBHYXRld2F5QXV0aG9yaXplci51c2luZ0NvZ25pdG8oe1xuICAgICAgICB1c2VyUG9vbDogdXNlclBvb2wsXG4gICAgICAgIGFsbG93ZWRDbGllbnRzOiBbdXNlclBvb2xDbGllbnRdLFxuICAgICAgfSksXG4gICAgICB0b2tlbkVuZHBvaW50VXJsOiBgaHR0cHM6Ly8ke3VzZXJQb29sRG9tYWluLmRvbWFpbk5hbWV9LmF1dGguJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmNvZ25pdG8uY29tL29hdXRoMi90b2tlbmAsXG4gICAgICBvYXV0aFNjb3Blczogb2F1dGhTY29wZXMubWFwKHNjb3BlID0+IHNjb3BlLnNjb3BlTmFtZSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGVmYXVsdCBNQ1AgcHJvdG9jb2wgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICogUHJvdmlkZXMgc2Vuc2libGUgZGVmYXVsdHMgZm9yIE1DUCBwcm90b2NvbCBzZXR0aW5nc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRGVmYXVsdE1jcFByb3RvY29sQ29uZmlndXJhdGlvbigpOiBJR2F0ZXdheVByb3RvY29sQ29uZmlnIHtcbiAgICByZXR1cm4gbmV3IE1jcFByb3RvY29sQ29uZmlndXJhdGlvbih7XG4gICAgICBzdXBwb3J0ZWRWZXJzaW9uczogW01DUFByb3RvY29sVmVyc2lvbi5NQ1BfMjAyNV8wM18yNl0sXG4gICAgICBzZWFyY2hUeXBlOiBNY3BHYXRld2F5U2VhcmNoVHlwZS5TRU1BTlRJQyxcbiAgICAgIGluc3RydWN0aW9uczogJ0RlZmF1bHQgZ2F0ZXdheSB0byBjb25uZWN0IHRvIGV4dGVybmFsIE1DUCB0b29scycsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGludGVyY2VwdG9yIHRvIHRoaXMgZ2F0ZXdheVxuICAgKlxuICAgKiBJbnRlcmNlcHRvcnMgYWxsb3cgeW91IHRvIHJ1biBjdXN0b20gY29kZSBhdCBzcGVjaWZpYyBwb2ludHMgaW4gdGhlIGdhdGV3YXkgcmVxdWVzdC9yZXNwb25zZSBmbG93OlxuICAgKiAtIFJFUVVFU1QgaW50ZXJjZXB0b3JzIGV4ZWN1dGUgYmVmb3JlIHRoZSBnYXRld2F5IGNhbGxzIHRoZSB0YXJnZXRcbiAgICogLSBSRVNQT05TRSBpbnRlcmNlcHRvcnMgZXhlY3V0ZSBhZnRlciB0aGUgdGFyZ2V0IHJlc3BvbmRzXG4gICAqXG4gICAqIEEgZ2F0ZXdheSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBSRVFVRVNUIGludGVyY2VwdG9yIGFuZCBvbmUgUkVTUE9OU0UgaW50ZXJjZXB0b3IuXG4gICAqIEBwYXJhbSBpbnRlcmNlcHRvciBUaGUgaW50ZXJjZXB0b3IgdG8gYWRkICh1c2UgTGFtYmRhSW50ZXJjZXB0b3IgZmFjdG9yeSBtZXRob2RzKVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGFuIGludGVyY2VwdG9yIG9mIHRoZSBzYW1lIHR5cGUgYWxyZWFkeSBleGlzdHNcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRJbnRlcmNlcHRvcihpbnRlcmNlcHRvcjogSUludGVyY2VwdG9yKTogdm9pZCB7XG4gICAgY29uc3QgaW50ZXJjZXB0aW9uUG9pbnQgPSBpbnRlcmNlcHRvci5pbnRlcmNlcHRpb25Qb2ludDtcblxuICAgIGlmIChpbnRlcmNlcHRpb25Qb2ludCA9PT0gSW50ZXJjZXB0aW9uUG9pbnQuUkVRVUVTVCkge1xuICAgICAgaWYgKHRoaXMucmVxdWVzdEludGVyY2VwdG9yQ29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgJ1JlcXVlc3RJbnRlcmNlcHRvckFscmVhZHlFeGlzdHMnLFxuICAgICAgICAgICdHYXRld2F5IGFscmVhZHkgaGFzIGEgUkVRVUVTVCBpbnRlcmNlcHRvciBjb25maWd1cmVkLiBBIGdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVRVUVTVCBpbnRlcmNlcHRvci4nLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlcXVlc3RJbnRlcmNlcHRvckNvbmZpZyA9IGludGVyY2VwdG9yLmJpbmQodGhpcywgdGhpcyk7XG4gICAgfSBlbHNlIGlmIChpbnRlcmNlcHRpb25Qb2ludCA9PT0gSW50ZXJjZXB0aW9uUG9pbnQuUkVTUE9OU0UpIHtcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JDb25maWcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAnUmVzcG9uc2VJbnRlcmNlcHRvckFscmVhZHlFeGlzdHMnLFxuICAgICAgICAgICdHYXRld2F5IGFscmVhZHkgaGFzIGEgUkVTUE9OU0UgaW50ZXJjZXB0b3IgY29uZmlndXJlZC4gQSBnYXRld2F5IGNhbiBoYXZlIGF0IG1vc3Qgb25lIFJFU1BPTlNFIGludGVyY2VwdG9yLicsXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVzcG9uc2VJbnRlcmNlcHRvckNvbmZpZyA9IGludGVyY2VwdG9yLmJpbmQodGhpcywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgaW5pdGlhbGl6ZXMgaW50ZXJjZXB0b3JzIGZyb20gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb25zXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFuZEluaXRpYWxpemVJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3JzOiBJSW50ZXJjZXB0b3JbXSk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVlc3RDb3VudCA9IGludGVyY2VwdG9ycy5maWx0ZXIoaSA9PiBpLmludGVyY2VwdGlvblBvaW50ID09PSBJbnRlcmNlcHRpb25Qb2ludC5SRVFVRVNUKS5sZW5ndGg7XG4gICAgY29uc3QgcmVzcG9uc2VDb3VudCA9IGludGVyY2VwdG9ycy5maWx0ZXIoaSA9PiBpLmludGVyY2VwdGlvblBvaW50ID09PSBJbnRlcmNlcHRpb25Qb2ludC5SRVNQT05TRSkubGVuZ3RoO1xuXG4gICAgaWYgKHJlcXVlc3RDb3VudCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdUb29NYW55UmVxdWVzdEludGVyY2VwdG9ycycsXG4gICAgICAgIGBHYXRld2F5IGNhbiBoYXZlIGF0IG1vc3Qgb25lIFJFUVVFU1QgaW50ZXJjZXB0b3IuIEZvdW5kICR7cmVxdWVzdENvdW50fSBSRVFVRVNUIGludGVyY2VwdG9ycy5gLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2VDb3VudCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdUb29NYW55UmVzcG9uc2VJbnRlcmNlcHRvcnMnLFxuICAgICAgICBgR2F0ZXdheSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBSRVNQT05TRSBpbnRlcmNlcHRvci4gRm91bmQgJHtyZXNwb25zZUNvdW50fSBSRVNQT05TRSBpbnRlcmNlcHRvcnMuYCxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpbnRlcmNlcHRvciBvZiBpbnRlcmNlcHRvcnMpIHtcbiAgICAgIHRoaXMuYWRkSW50ZXJjZXB0b3IoaW50ZXJjZXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBpbnRlcmNlcHRvciBjb25maWd1cmF0aW9ucyBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogUmV0dXJucyB1bmRlZmluZWQgaWYgbm8gaW50ZXJjZXB0b3JzIGFyZSBjb25maWd1cmVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zKCk6IGFueVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb25maWdzOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMucmVxdWVzdEludGVyY2VwdG9yQ29uZmlnKSB7XG4gICAgICBjb25maWdzLnB1c2godGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3JDb25maWcuY29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzcG9uc2VJbnRlcmNlcHRvckNvbmZpZykge1xuICAgICAgY29uZmlncy5wdXNoKHRoaXMucmVzcG9uc2VJbnRlcmNlcHRvckNvbmZpZy5jb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlncy5sZW5ndGggPiAwID8gY29uZmlncyA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|
|
727
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdhdGV3YXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXdEO0FBRXhELHFFQUFxRTtBQUNyRSxtREFBbUQ7QUFDbkQsMkNBQTJDO0FBRzNDLHdEQUE4RDtBQUM5RCw0RUFBNEQ7QUFDNUQsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUkxRSxpREFBNkM7QUFFN0MsMERBQThEO0FBRTlELCtDQUFrRDtBQUVsRCxtQ0FBcUU7QUFFckUseUNBQWdHO0FBR2hHLDZDQUFpRDtBQUVqRCw2REFBaUY7QUFxU2pGOzsrRUFFK0U7QUFDL0U7Ozs7OztHQU1HO0lBRVUsT0FBTzs0QkFEbkIsb0NBQWtCOzs7O3NCQUNVLDBCQUFXOzs7Ozs7Ozt1QkFBbkIsU0FBUSxXQUFXOzs7OzJDQWtRckMsSUFBQSxrQ0FBYyxHQUFFOzRDQStCaEIsSUFBQSxrQ0FBYyxHQUFFOzJDQXlCaEIsSUFBQSxrQ0FBYyxHQUFFOzhDQThCaEIsSUFBQSxrQ0FBYyxHQUFFOytDQThCaEIsSUFBQSxrQ0FBYyxHQUFFOzBDQXlPaEIsSUFBQSxrQ0FBYyxHQUFFO1lBNVZqQixnTUFBTyxlQUFlLDZEQW9CckI7WUFXRCxtTUFBTyxnQkFBZ0IsNkRBY3RCO1lBV0QsZ01BQU8sZUFBZSw2REFrQnJCO1lBWUQseU1BQU8sa0JBQWtCLDZEQWtCeEI7WUFZRCw0TUFBTyxtQkFBbUIsNkRBa0J6QjtZQXVORCw2TEFBTyxjQUFjLDZEQXNCcEI7WUF0bkJILDZLQXVxQkM7Ozs7O1FBdHFCQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLDhDQUE4QyxDQUFDO1FBQ3RHOzs7Ozs7O1dBT0c7UUFDSSxNQUFNLENBQUMscUJBQXFCLENBQ2pDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUF3Qjs7Ozs7Ozs7OztZQUV4QixNQUFNLGVBQWdCLFNBQVEs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QUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM3RCxDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDakQ7O1lBdHFCVSx1REFBTzs7Ozs7QUFBUCwwQkFBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBUb2tlbiwgTGF6eSwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IElSZXN0QXBpIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0ICogYXMgYmVkcm9ja2FnZW50Y29yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgKiBhcyBjb2duaXRvIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHR5cGUgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuLy8gSW50ZXJuYWwgaW1wb3J0c1xuaW1wb3J0IHR5cGUgeyBHYXRld2F5RXhjZXB0aW9uTGV2ZWwsIElHYXRld2F5IH0gZnJvbSAnLi9nYXRld2F5LWJhc2UnO1xuaW1wb3J0IHsgR2F0ZXdheUJhc2UgfSBmcm9tICcuL2dhdGV3YXktYmFzZSc7XG5pbXBvcnQgdHlwZSB7IElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB9IGZyb20gJy4vaW5ib3VuZC1hdXRoL2F1dGhvcml6ZXInO1xuaW1wb3J0IHsgR2F0ZXdheUF1dGhvcml6ZXIgfSBmcm9tICcuL2luYm91bmQtYXV0aC9hdXRob3JpemVyJztcbmltcG9ydCB0eXBlIHsgSUludGVyY2VwdG9yLCBJbnRlcmNlcHRvckJpbmRDb25maWcgfSBmcm9tICcuL2ludGVyY2VwdG9yJztcbmltcG9ydCB7IEludGVyY2VwdGlvblBvaW50IH0gZnJvbSAnLi9pbnRlcmNlcHRvcic7XG5pbXBvcnQgdHlwZSB7IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWcgfSBmcm9tICcuL291dGJvdW5kLWF1dGgvY3JlZGVudGlhbC1wcm92aWRlcic7XG5pbXBvcnQgeyBHQVRFV0FZX0FTU1VNRV9ST0xFLCBHQVRFV0FZX0tNU19LRVlfUEVSTVMgfSBmcm9tICcuL3Blcm1zJztcbmltcG9ydCB0eXBlIHsgSUdhdGV3YXlQcm90b2NvbENvbmZpZyB9IGZyb20gJy4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgTWNwR2F0ZXdheVNlYXJjaFR5cGUsIE1jcFByb3RvY29sQ29uZmlndXJhdGlvbiwgTUNQUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnLi9wcm90b2NvbCc7XG5pbXBvcnQgdHlwZSB7IEFwaVNjaGVtYSB9IGZyb20gJy4vdGFyZ2V0cy9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IFRvb2xTY2hlbWEgfSBmcm9tICcuL3RhcmdldHMvc2NoZW1hL3Rvb2wtc2NoZW1hJztcbmltcG9ydCB7IEdhdGV3YXlUYXJnZXQgfSBmcm9tICcuL3RhcmdldHMvdGFyZ2V0JztcbmltcG9ydCB0eXBlIHsgQXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uLCBNZXRhZGF0YUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3RhcmdldHMvdGFyZ2V0LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgdmFsaWRhdGVTdHJpbmdGaWVsZCwgdmFsaWRhdGVGaWVsZFBhdHRlcm4gfSBmcm9tICcuL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhIExhbWJkYSB0YXJnZXQgdG8gYSBnYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTGFtYmRhVGFyZ2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSkgYW5kIC0gKGh5cGhlbilcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIExhbWJkYSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIGRlZmluaW5nIHRoZSBhdmFpbGFibGUgdG9vbHNcbiAgICovXG4gIHJlYWRvbmx5IHRvb2xTY2hlbWE6IFRvb2xTY2hlbWE7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhbiBPcGVuQVBJIHRhcmdldCB0byBhIGdhdGV3YXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRPcGVuQXBpVGFyZ2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSkgYW5kIC0gKGh5cGhlbilcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9wZW5BUEkgc2NoZW1hIGRlZmluaW5nIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IGFwaVNjaGVtYTogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHZhbGlkYXRlIHRoZSBPcGVuQVBJIHNjaGVtYSBvciBub3RcbiAgICogTm90ZTogVmFsaWRhdGlvbiBpcyBvbmx5IHBlcmZvcm1lZCBmb3IgaW5saW5lIGFuZCBhc3NldC1iYXNlZCBzY2hlbWEgYW5kICBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAgICogUzMgc2NoZW1hcyBjYW5ub3QgYmUgdmFsaWRhdGVkIGF0IHN5bnRoZXNpcyB0aW1lLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZU9wZW5BcGlTY2hlbWE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5pYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhZGRpbmcgYSBTbWl0aHkgdGFyZ2V0IHRvIGEgZ2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNtaXRoeVRhcmdldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBTbWl0aHkgbW9kZWwgZGVmaW5pbmcgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgc21pdGh5TW9kZWw6IEFwaVNjaGVtYTtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuaWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYWRkaW5nIGFuIE1DUCBTZXJ2ZXIgdGFyZ2V0IHRvIGEgZ2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZE1jcFNlcnZlclRhcmdldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBIVFRQUyBlbmRwb2ludCBVUkwgb2YgdGhlIE1DUCBzZXJ2ZXJcbiAgICpcbiAgICogVGhlIGVuZHBvaW50IG11c3Q6XG4gICAqIC0gVXNlIEhUVFBTIHByb3RvY29sXG4gICAqIC0gQmUgcHJvcGVybHkgVVJMLWVuY29kZWRcbiAgICogLSBQb2ludCB0byBhbiBNQ1Agc2VydmVyIHRoYXQgaW1wbGVtZW50cyB0b29sIGNhcGFiaWxpdGllc1xuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqXG4gICAqIE1DUCBzZXJ2ZXJzIHJlcXVpcmUgZXhwbGljaXQgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICogT0F1dGgyIGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIG92ZXIgTm9BdXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhZGRpbmcgYW4gQVBJIEdhdGV3YXkgdGFyZ2V0IHRvIGEgZ2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZEFwaUdhdGV3YXlUYXJnZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzIGFyZSBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKSBhbmQgLSAoaHlwaGVuKVxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgUkVTVCBBUEkgdG8gaW50ZWdyYXRlIHdpdGhcbiAgICogTXVzdCBiZSBpbiB0aGUgc2FtZSBhY2NvdW50IGFuZCByZWdpb24gYXMgdGhlIGdhdGV3YXlcbiAgICogW2Rpc2FibGUtYXdzbGludDpwcmVmZXItcmVmLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IHJlc3RBcGk6IElSZXN0QXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhZ2UgbmFtZSBvZiB0aGUgUkVTVCBBUElcbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBkZXBsb3ltZW50IHN0YWdlIGZyb20gdGhlIFJlc3RBcGkgKHJlc3RBcGkuZGVwbG95bWVudFN0YWdlLnN0YWdlTmFtZSlcbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUb29sIGNvbmZpZ3VyYXRpb24gZGVmaW5pbmcgd2hpY2ggb3BlcmF0aW9ucyB0byBleHBvc2VcbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlUb29sQ29uZmlndXJhdGlvbjogQXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQVBJIEdhdGV3YXkgdGFyZ2V0cyBzdXBwb3J0IElBTSBhbmQgQVBJIGtleSBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIEVtcHR5IGFycmF5IChzZXJ2aWNlIGhhbmRsZXMgSUFNIGF1dG9tYXRpY2FsbHkpXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcblxuICAvKipcbiAgICogTWV0YWRhdGEgY29uZmlndXJhdGlvbiBmb3IgcGFzc2luZyBoZWFkZXJzIGFuZCBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEFsbG93cyB5b3UgdG8gcGFzcyBhZGRpdGlvbmFsIGNvbnRleHQgdGhyb3VnaCBoZWFkZXJzIGFuZCBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEBkZWZhdWx0IC0gTm8gbWV0YWRhdGEgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGFDb25maWd1cmF0aW9uPzogTWV0YWRhdGFDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGEgR2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheVxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzIGFyZSBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKSBhbmQgLSAoaHlwaGVuKVxuICAgKiBUaGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4geW91ciBhY2NvdW50XG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzIGFyZSBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKSwgLSAoaHlwaGVuKSBhbmQgc3BhY2VzXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBjYW4gaGF2ZSB1cCB0byAyMDAgY2hhcmFjdGVyc1xuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqIEBkZWZhdWx0IC0gQSBkZWZhdWx0IHByb3RvY29sIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHVzaW5nIE1DUCB3aXRoIGZvbGxvd2luZyBwYXJhbXNcbiAgICogIHN1cHBvcnRlZFZlcnNpb25zOiBbTUNQUHJvdG9jb2xWZXJzaW9uLk1DUF8yMDI1XzAzXzI2XSxcbiAgICogIHNlYXJjaFR5cGU6IE1jcEdhdGV3YXlTZWFyY2hUeXBlLlNFTUFOVElDLFxuICAgKiAgaW5zdHJ1Y3Rpb25zOiBcIkRlZmF1bHQgZ2F0ZXdheSB0byBjb25uZWN0IHRvIGV4dGVybmFsIE1DUCB0b29sc1wiLFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdG9jb2xDb25maWd1cmF0aW9uPzogSUdhdGV3YXlQcm90b2NvbENvbmZpZztcblxuICAvKipcbiAgICogVGhlIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGRlZmF1bHQgLSBBIGRlZmF1bHQgYXV0aG9yaXplciB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgQ29nbml0b1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXplckNvbmZpZ3VyYXRpb24/OiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJib3NpdHkgb2YgZXhjZXB0aW9uIG1lc3NhZ2VzXG4gICAqIFVzZSBERUJVRyBtb2RlIHRvIHNlZSBncmFudWxhciBleGNlcHRpb24gbWVzc2FnZXMgZnJvbSBhIEdhdGV3YXlcbiAgICogQGRlZmF1bHQgLSBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIHNhbml0aXplZCBmb3IgcHJlc2VudGF0aW9uIHRvIGVuZCB1c2Vyc1xuICAgKi9cbiAgcmVhZG9ubHkgZXhjZXB0aW9uTGV2ZWw/OiBHYXRld2F5RXhjZXB0aW9uTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGdhdGV3YXlcbiAgICogQGRlZmF1bHQgLSBObyBlbmNyeXB0aW9uXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGFjY2VzcyBBV1Mgc2VydmljZXNcbiAgICogQGRlZmF1bHQgLSBBIG5ldyByb2xlIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGFncyBmb3IgdGhlIGdhdGV3YXlcbiAgICogQSBsaXN0IG9mIGtleTp2YWx1ZSBwYWlycyBvZiB0YWdzIHRvIGFwcGx5IHRvIHRoaXMgR2F0ZXdheSByZXNvdXJjZVxuICAgKiBAZGVmYXVsdCAtIE5vIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBJbnRlcmNlcHRvciBjb25maWd1cmF0aW9ucyBmb3IgdGhlIGdhdGV3YXlcbiAgICpcbiAgICogSW50ZXJjZXB0b3JzIGFsbG93IHlvdSB0byBydW4gY3VzdG9tIGNvZGUgZHVyaW5nIGVhY2ggZ2F0ZXdheSBpbnZvY2F0aW9uOlxuICAgKiAtIFJFUVVFU1QgaW50ZXJjZXB0b3JzIGV4ZWN1dGUgYmVmb3JlIHRoZSBnYXRld2F5IGNhbGxzIHRoZSB0YXJnZXRcbiAgICogLSBSRVNQT05TRSBpbnRlcmNlcHRvcnMgZXhlY3V0ZSBhZnRlciB0aGUgdGFyZ2V0IHJlc3BvbmRzXG4gICAqXG4gICAqIEEgZ2F0ZXdheSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBSRVFVRVNUIGludGVyY2VwdG9yIGFuZCBvbmUgUkVTUE9OU0UgaW50ZXJjZXB0b3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gaW50ZXJjZXB0b3JzXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LWludGVyY2VwdG9ycy5odG1sXG4gICAqL1xuICByZWFkb25seSBpbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zPzogSUludGVyY2VwdG9yW107XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgaW1wb3J0aW5nIGFuIGV4aXN0aW5nIEdhdGV3YXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBnYXRld2F5QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBnYXRld2F5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgdGhhdCBwcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEdhdGV3YXkgcmVzb3VyY2UgZm9yIEFXUyBCZWRyb2NrIEFnZW50IENvcmUuXG4gKiBTZXJ2ZXMgYXMgYW4gaW50ZWdyYXRpb24gcG9pbnQgYmV0d2VlbiB5b3VyIGFnZW50IGFuZCBleHRlcm5hbCBzZXJ2aWNlcy5cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpCZWRyb2NrQWdlbnRDb3JlOjpHYXRld2F5XG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS1jb250cm9sL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUdhdGV3YXkuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgR2F0ZXdheSBleHRlbmRzIEdhdGV3YXlCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtYmVkcm9jay1hZ2VudGNvcmUtYWxwaGEuR2F0ZXdheSc7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgR2F0ZXdheSB1c2luZyBpdHMgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gYXR0cnMgVGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGV4aXN0aW5nIEdhdGV3YXlcbiAgICogQHJldHVybnMgQW4gSUdhdGV3YXkgaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSBpbXBvcnRlZCBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21HYXRld2F5QXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IEdhdGV3YXlBdHRyaWJ1dGVzLFxuICApOiBJR2F0ZXdheSB7XG4gICAgY2xhc3MgSW1wb3J0ZWRHYXRld2F5IGV4dGVuZHMgR2F0ZXdheUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXlBcm4gPSBhdHRycy5nYXRld2F5QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXlJZCA9IGF0dHJzLmdhdGV3YXlJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBuYW1lID0gYXR0cnMuZ2F0ZXdheU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcHJvdG9jb2xDb25maWd1cmF0aW9uOiBJR2F0ZXdheVByb3RvY29sQ29uZmlnO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGF1dGhvcml6ZXJDb25maWd1cmF0aW9uOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZXhjZXB0aW9uTGV2ZWwgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkga21zS2V5ID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJvbGUgPSBhdHRycy5yb2xlO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXlVcmwgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c1JlYXNvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0ID0gdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcbiAgICAgICAgLy8gQ3JlYXRlIHBsYWNlaG9sZGVyIHByb3RvY29sIGFuZCBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb25zXG4gICAgICAgIHRoaXMucHJvdG9jb2xDb25maWd1cmF0aW9uID0gbmV3IE1jcFByb3RvY29sQ29uZmlndXJhdGlvbih7XG4gICAgICAgICAgc3VwcG9ydGVkVmVyc2lvbnM6IFtNQ1BQcm90b2NvbFZlcnNpb24uTUNQXzIwMjVfMDNfMjZdLFxuICAgICAgICAgIHNlYXJjaFR5cGU6IE1jcEdhdGV3YXlTZWFyY2hUeXBlLlNFTUFOVElDLFxuICAgICAgICAgIGluc3RydWN0aW9uczogJ0ltcG9ydGVkIGdhdGV3YXknLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbiA9IEdhdGV3YXlBdXRob3JpemVyLnVzaW5nQXdzSWFtKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRHYXRld2F5KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXlJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm90b2NvbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3RvY29sQ29uZmlndXJhdGlvbjogSUdhdGV3YXlQcm90b2NvbENvbmZpZztcblxuICAvKipcbiAgICogVGhlIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdXRob3JpemVyQ29uZmlndXJhdGlvbjogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhjZXB0aW9uIGxldmVsIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4Y2VwdGlvbkxldmVsPzogR2F0ZXdheUV4Y2VwdGlvbkxldmVsO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGZvciBlbmNyeXB0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSBmb3IgdGhlIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgZW5kcG9pbnQgZm9yIHRoZSBnYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYXRld2F5VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBnYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgcmVhc29ucyBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c1JlYXNvbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgZ2F0ZXdheSB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgZ2F0ZXdheSB3YXMgbGFzdCB1cGRhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgYXBwbGllZCB0byB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBVc2VyIFBvb2wgY3JlYXRlZCBmb3IgdGhlIGdhdGV3YXkgKGlmIHVzaW5nIGRlZmF1bHQgQ29nbml0byBhdXRob3JpemVyKVxuICAgKi9cbiAgcHVibGljIHVzZXJQb29sPzogY29nbml0by5JVXNlclBvb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFVzZXIgUG9vbCBDbGllbnQgY3JlYXRlZCBmb3IgdGhlIGdhdGV3YXkgKGlmIHVzaW5nIGRlZmF1bHQgQ29nbml0byBhdXRob3JpemVyKVxuICAgKi9cbiAgcHVibGljIHVzZXJQb29sQ2xpZW50PzogY29nbml0by5JVXNlclBvb2xDbGllbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBSRVFVRVNUIGludGVyY2VwdG9yIGNvbmZpZ3VyYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlcXVlc3RJbnRlcmNlcHRvckNvbmZpZz86IEludGVyY2VwdG9yQmluZENvbmZpZztcblxuICAvKipcbiAgICogVGhlIFJFU1BPTlNFIGludGVyY2VwdG9yIGNvbmZpZ3VyYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlc3BvbnNlSW50ZXJjZXB0b3JDb25maWc/OiBJbnRlcmNlcHRvckJpbmRDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFVzZXIgUG9vbCBEb21haW4gY3JlYXRlZCBmb3IgdGhlIGdhdGV3YXkgKGlmIHVzaW5nIGRlZmF1bHQgQ29nbml0byBhdXRob3JpemVyKVxuICAgKi9cbiAgcHVibGljIHVzZXJQb29sRG9tYWluPzogY29nbml0by5JVXNlclBvb2xEb21haW47XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFJlc291cmNlIFNlcnZlciBjcmVhdGVkIGZvciB0aGUgZ2F0ZXdheSAoaWYgdXNpbmcgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIpXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VTZXJ2ZXI/OiBjb2duaXRvLklVc2VyUG9vbFJlc291cmNlU2VydmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgT0F1dGgyIHRva2VuIGVuZHBvaW50IFVSTCBmb3IgY2xpZW50IGNyZWRlbnRpYWxzIGZsb3cuXG4gICAqIE9ubHkgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgQ29nbml0byBhdXRob3JpemVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRva2VuRW5kcG9pbnRVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBPQXV0aDIgc2NvcGUgc3RyaW5ncyBmb3IgY2xpZW50IGNyZWRlbnRpYWxzIGZsb3cuXG4gICAqIE9ubHkgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgQ29nbml0byBhdXRob3JpemVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9hdXRoU2NvcGVzPzogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEdhdGV3YXlQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAvLyBNYXhpbXVtIG5hbWUgbGVuZ3RoIG9mIDQ4IGNoYXJhY3RlcnMgaXMgY2hvc2VuIGluc3RlYWQgb2YgMTAwIGNoYXJhY3RlcnMgdGhhdCBtZW50aW9uZWQgaW4gZG9jdW1lbnRhdGlvbiBiZWxvdyxcbiAgICAgIC8vIGR1ZSB0byBmYWlsdXJlIGluIENGIGRlcGxveW1lbnQgd2hlbiBtb3JlIHRoYW4gNDggY2hhcmFjdGVycyB1c2VkXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVGVtcGxhdGVSZWZlcmVuY2UvYXdzLXJlc291cmNlLWJlZHJvY2thZ2VudGNvcmUtZ2F0ZXdheS5odG1sI2Nmbi1iZWRyb2NrYWdlbnRjb3JlLWdhdGV3YXktbmFtZVxuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5nYXRld2F5TmFtZSA/P1xuICAgICAgICBMYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiA0OCB9KSxcbiAgICAgICAgfSksXG4gICAgfSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBBc3NpZ25tZW50c1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgdGhpcy5uYW1lID0gdGhpcy5waHlzaWNhbE5hbWU7XG4gICAgdGhpcy52YWxpZGF0ZUdhdGV3YXlOYW1lKHRoaXMubmFtZSk7XG5cbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgaWYgKHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudmFsaWRhdGVEZXNjcmlwdGlvbih0aGlzLmRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmttc0tleSA9IHByb3BzLmttc0tleTtcbiAgICB0aGlzLnJvbGUgPSBwcm9wcy5yb2xlID8/IHRoaXMuY3JlYXRlR2F0ZXdheVJvbGUoKTtcblxuICAgIGlmICh0aGlzLmttc0tleSAmJiB0aGlzLnJvbGUpIHtcbiAgICAgIHRoaXMua21zS2V5LmdyYW50RW5jcnlwdERlY3J5cHQodGhpcy5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb3RvY29sQ29uZmlndXJhdGlvbiA9IHByb3BzLnByb3RvY29sQ29uZmlndXJhdGlvbiA/PyB0aGlzLmNyZWF0ZURlZmF1bHRNY3BQcm90b2NvbENvbmZpZ3VyYXRpb24oKTtcbiAgICBpZiAocHJvcHMuYXV0aG9yaXplckNvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHRoaXMuYXV0aG9yaXplckNvbmZpZ3VyYXRpb24gPSBwcm9wcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGVmYXVsdENvZ25pdG9BdXRoID0gdGhpcy5jcmVhdGVEZWZhdWx0Q29nbml0b0F1dGhvcml6ZXJDb25maWcoKTtcbiAgICAgIHRoaXMuYXV0aG9yaXplckNvbmZpZ3VyYXRpb24gPSBkZWZhdWx0Q29nbml0b0F1dGguYXV0aG9yaXplckNvbmZpZztcbiAgICAgIHRoaXMudG9rZW5FbmRwb2ludFVybCA9IGRlZmF1bHRDb2duaXRvQXV0aC50b2tlbkVuZHBvaW50VXJsO1xuICAgICAgdGhpcy5vYXV0aFNjb3BlcyA9IGRlZmF1bHRDb2duaXRvQXV0aC5vYXV0aFNjb3BlcztcbiAgICB9XG4gICAgdGhpcy5leGNlcHRpb25MZXZlbCA9IHByb3BzLmV4Y2VwdGlvbkxldmVsO1xuXG4gICAgdGhpcy50YWdzID0gcHJvcHMudGFncyA/PyB7fTtcblxuICAgIC8vIEluaXRpYWxpemUgaW50ZXJjZXB0b3JzIGZyb20gcHJvcHNcbiAgICBpZiAocHJvcHMuaW50ZXJjZXB0b3JDb25maWd1cmF0aW9ucykge1xuICAgICAgdGhpcy52YWxpZGF0ZUFuZEluaXRpYWxpemVJbnRlcmNlcHRvcnMocHJvcHMuaW50ZXJjZXB0b3JDb25maWd1cmF0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTDEgSW5zdGFudGlhdGlvblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IF9yZXNvdXJjZSA9IG5ldyBiZWRyb2NrYWdlbnRjb3JlLkNmbkdhdGV3YXkodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgYXV0aG9yaXplckNvbmZpZ3VyYXRpb246IHRoaXMuYXV0aG9yaXplckNvbmZpZ3VyYXRpb24uX3JlbmRlcigpLFxuICAgICAgYXV0aG9yaXplclR5cGU6IHRoaXMuYXV0aG9yaXplckNvbmZpZ3VyYXRpb24uYXV0aG9yaXplclR5cGUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGV4Y2VwdGlvbkxldmVsOiB0aGlzLmV4Y2VwdGlvbkxldmVsLFxuICAgICAgaW50ZXJjZXB0b3JDb25maWd1cmF0aW9uczogTGF6eS5hbnkoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlckludGVyY2VwdG9yQ29uZmlndXJhdGlvbnMoKSxcbiAgICAgIH0pLFxuICAgICAga21zS2V5QXJuOiB0aGlzLmttc0tleT8ua2V5QXJuLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgcHJvdG9jb2xDb25maWd1cmF0aW9uOiB0aGlzLnByb3RvY29sQ29uZmlndXJhdGlvbi5fcmVuZGVyKCksXG4gICAgICBwcm90b2NvbFR5cGU6IHRoaXMucHJvdG9jb2xDb25maWd1cmF0aW9uLnByb3RvY29sVHlwZSxcbiAgICAgIHJvbGVBcm46IHRoaXMucm9sZT8ucm9sZUFybixcbiAgICAgIHRhZ3M6IHRoaXMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuZ2F0ZXdheUlkID0gX3Jlc291cmNlLmF0dHJHYXRld2F5SWRlbnRpZmllcjtcbiAgICB0aGlzLmdhdGV3YXlBcm4gPSBfcmVzb3VyY2UuYXR0ckdhdGV3YXlBcm47XG4gICAgdGhpcy5nYXRld2F5VXJsID0gX3Jlc291cmNlLmF0dHJHYXRld2F5VXJsO1xuICAgIHRoaXMuc3RhdHVzID0gX3Jlc291cmNlLmF0dHJTdGF0dXM7XG4gICAgdGhpcy5jcmVhdGVkQXQgPSBfcmVzb3VyY2UuYXR0ckNyZWF0ZWRBdDtcbiAgICB0aGlzLnVwZGF0ZWRBdCA9IF9yZXNvdXJjZS5hdHRyVXBkYXRlZEF0O1xuICAgIHRoaXMuc3RhdHVzUmVhc29uID0gX3Jlc291cmNlLmF0dHJTdGF0dXNSZWFzb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIExhbWJkYSB0YXJnZXQgdG8gdGhpcyBnYXRld2F5XG4gICAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgdGhhdCBjcmVhdGVzIGEgR2F0ZXdheVRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhpcyBnYXRld2F5XG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkIGZvciB0aGUgdGFyZ2V0XG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wZXJ0aWVzIGZvciB0aGUgTGFtYmRhIHRhcmdldFxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBHYXRld2F5VGFyZ2V0XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkTGFtYmRhVGFyZ2V0KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEFkZExhbWJkYVRhcmdldE9wdGlvbnMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIC8vIExhbWJkYSBpbnZva2UgcGVybWlzc2lvbnMgYXJlIGF1dG9tYXRpY2FsbHkgZ3JhbnRlZCBpbiBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uLmJpbmQoKVxuICAgIC8vIEJ1aWxkIHRhcmdldCBwcm9wcywgY29uZGl0aW9uYWxseSBpbmNsdWRpbmcgY3JlZGVudGlhbHMgaWYgYXJyYXkgaGFzIGl0ZW1zXG4gICAgY29uc3QgdGFyZ2V0UHJvcHM6IGFueSA9IHtcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGdhdGV3YXk6IHRoaXMsXG4gICAgICBsYW1iZGFGdW5jdGlvbjogcHJvcHMubGFtYmRhRnVuY3Rpb24sXG4gICAgICB0b29sU2NoZW1hOiBwcm9wcy50b29sU2NoZW1hLFxuICAgICAgLi4uKHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zICYmIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG5cbiAgICBjb25zdCB0YXJnZXQgPSBHYXRld2F5VGFyZ2V0LmZvckxhbWJkYSh0aGlzLCBpZCwgdGFyZ2V0UHJvcHMpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gT3BlbkFQSSB0YXJnZXQgdG8gdGhpcyBnYXRld2F5XG4gICAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgdGhhdCBjcmVhdGVzIGEgR2F0ZXdheVRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhpcyBnYXRld2F5XG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkIGZvciB0aGUgdGFyZ2V0XG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wZXJ0aWVzIGZvciB0aGUgT3BlbkFQSSB0YXJnZXRcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgR2F0ZXdheVRhcmdldFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZE9wZW5BcGlUYXJnZXQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQWRkT3BlbkFwaVRhcmdldE9wdGlvbnMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIGNvbnN0IHRhcmdldCA9IEdhdGV3YXlUYXJnZXQuZm9yT3BlbkFwaSh0aGlzLCBpZCwge1xuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZ2F0ZXdheTogdGhpcyxcbiAgICAgIGFwaVNjaGVtYTogcHJvcHMuYXBpU2NoZW1hLFxuICAgICAgdmFsaWRhdGVPcGVuQXBpU2NoZW1hOiBwcm9wcy52YWxpZGF0ZU9wZW5BcGlTY2hlbWEsXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIFNtaXRoeSB0YXJnZXQgdG8gdGhpcyBnYXRld2F5XG4gICAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgdGhhdCBjcmVhdGVzIGEgR2F0ZXdheVRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhpcyBnYXRld2F5XG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkIGZvciB0aGUgdGFyZ2V0XG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wZXJ0aWVzIGZvciB0aGUgU21pdGh5IHRhcmdldFxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBHYXRld2F5VGFyZ2V0XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkU21pdGh5VGFyZ2V0KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEFkZFNtaXRoeVRhcmdldE9wdGlvbnMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIC8vIEJ1aWxkIHRhcmdldCBwcm9wcywgY29uZGl0aW9uYWxseSBpbmNsdWRpbmcgY3JlZGVudGlhbHMgaWYgYXJyYXkgaGFzIGl0ZW1zXG4gICAgY29uc3QgdGFyZ2V0UHJvcHM6IGFueSA9IHtcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGdhdGV3YXk6IHRoaXMsXG4gICAgICBzbWl0aHlNb2RlbDogcHJvcHMuc21pdGh5TW9kZWwsXG4gICAgICAuLi4ocHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgJiYgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMubGVuZ3RoID4gMFxuICAgICAgICA/IHsgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zIH1cbiAgICAgICAgOiB7fSksXG4gICAgfTtcblxuICAgIGNvbnN0IHRhcmdldCA9IEdhdGV3YXlUYXJnZXQuZm9yU21pdGh5KHRoaXMsIGlkLCB0YXJnZXRQcm9wcyk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBNQ1Agc2VydmVyIHRhcmdldCB0byB0aGlzIGdhdGV3YXlcbiAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBHYXRld2F5VGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWQgZm9yIHRoZSB0YXJnZXRcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgZm9yIHRoZSBNQ1Agc2VydmVyIHRhcmdldFxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBHYXRld2F5VGFyZ2V0XG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LXRhcmdldC1NQ1BzZXJ2ZXJzLmh0bWxcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRNY3BTZXJ2ZXJUYXJnZXQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQWRkTWNwU2VydmVyVGFyZ2V0T3B0aW9ucyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgLy8gQnVpbGQgdGFyZ2V0IHByb3BzLCBjb25kaXRpb25hbGx5IGluY2x1ZGluZyBjcmVkZW50aWFscyBpZiBhcnJheSBoYXMgaXRlbXNcbiAgICBjb25zdCB0YXJnZXRQcm9wczogYW55ID0ge1xuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZ2F0ZXdheTogdGhpcyxcbiAgICAgIGVuZHBvaW50OiBwcm9wcy5lbmRwb2ludCxcbiAgICAgIC4uLihwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyAmJiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgID8geyBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gR2F0ZXdheVRhcmdldC5mb3JNY3BTZXJ2ZXIodGhpcywgaWQsIHRhcmdldFByb3BzKTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIEFQSSBHYXRld2F5IHRhcmdldCB0byB0aGlzIGdhdGV3YXlcbiAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBHYXRld2F5VGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWQgZm9yIHRoZSB0YXJnZXRcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgZm9yIHRoZSBBUEkgR2F0ZXdheSB0YXJnZXRcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgR2F0ZXdheVRhcmdldFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvZ2F0ZXdheS10YXJnZXQtYXBpLWdhdGV3YXkuaHRtbFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZEFwaUdhdGV3YXlUYXJnZXQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQWRkQXBpR2F0ZXdheVRhcmdldE9wdGlvbnMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIC8vIEFQSSBHYXRld2F5IHRhcmdldHMgcmVxdWlyZSBleHBsaWNpdCBjcmVkZW50aWFsIGNvbmZpZ3VyYXRpb24gb3IgZGVmYXVsdHMgdG8gSUFNXG4gICAgLy8gR2V0RXhwb3J0IGFuZCBleGVjdXRlLWFwaTpJbnZva2UgcGVybWlzc2lvbnMgYXJlIGF1dG9tYXRpY2FsbHkgZ3JhbnRlZCBpbiBBcGlHYXRld2F5VGFyZ2V0Q29uZmlndXJhdGlvbi5iaW5kKClcbiAgICBjb25zdCB0YXJnZXQgPSBHYXRld2F5VGFyZ2V0LmZvckFwaUdhdGV3YXkodGhpcywgaWQsIHtcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGdhdGV3YXk6IHRoaXMsXG4gICAgICByZXN0QXBpOiBwcm9wcy5yZXN0QXBpLFxuICAgICAgc3RhZ2U6IHByb3BzLnN0YWdlLFxuICAgICAgYXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uOiBwcm9wcy5hcGlHYXRld2F5VG9vbENvbmZpZ3VyYXRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICBtZXRhZGF0YUNvbmZpZ3VyYXRpb246IHByb3BzLm1ldGFkYXRhQ29uZmlndXJhdGlvbixcbiAgICB9KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgc2VydmljZSByb2xlIGZvciB0aGUgZ2F0ZXdheSB0byBhc3N1bWVcbiAgICpcbiAgICogVGhlIHNlcnZpY2Ugcm9sZSBzdGFydHMgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zLiBBZGRpdGlvbmFsIHBlcm1pc3Npb25zXG4gICAqIGFyZSBhZGRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGFyZ2V0cyBhcmUgY29uZmlndXJlZDpcbiAgICogLSBLTVMgZW5jcnlwdGlvbjogQXV0b21hdGljYWxseSBncmFudHMgZW5jcnlwdC9kZWNyeXB0IHBlcm1pc3Npb25zXG4gICAqXG4gICAqIEZvciBvdGhlciB0YXJnZXQgdHlwZXMsIG1hbnVhbGx5IGdyYW50IHBlcm1pc3Npb25zIHVzaW5nIHN0YW5kYXJkIENESyBncmFudCBtZXRob2RzOlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlR2F0ZXdheVJvbGUoKTogaWFtLlJvbGUge1xuICAgIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ1NlcnZpY2VSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2JlZHJvY2stYWdlbnRjb3JlLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgU2VydmljZSByb2xlIGZvciBCZWRyb2NrIEFnZW50Q29yZSBHYXRld2F5ICR7dGhpcy5uYW1lfWAsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZWdpb24gPSBTdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IFN0YWNrLm9mKHRoaXMpLmFjY291bnQ7XG4gICAgY29uc3QgcGFydGl0aW9uID0gU3RhY2sub2YodGhpcykucGFydGl0aW9uO1xuXG4gICAgLy8gVGhpcyByZXN0cmljdHMgcm9sZSBhc3N1bXB0aW9uIHRvIHRoZSBzcGVjaWZpYyBnYXRld2F5IHJlc291cmNlIG9ubHkgaW4gdGhpcyBhY2NvdW50LFxuICAgIC8vIHByZXZlbnRpbmcgb3RoZXIgYWNjb3VudHMgZnJvbSBhc3N1bWluZyB0aGlzIHJvbGUuXG4gICAgLy8gU2VlOmh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvZ2F0ZXdheS1wcmVyZXF1aXNpdGVzLXBlcm1pc3Npb25zLmh0bWwjZ2F0ZXdheS1zZXJ2aWNlLXJvbGUtcGVybWlzc2lvbnNcbiAgICByb2xlLmFzc3VtZVJvbGVQb2xpY3k/LmFkZFN0YXRlbWVudHMoXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYmVkcm9jay1hZ2VudGNvcmUuYW1hem9uYXdzLmNvbScpXSxcbiAgICAgICAgYWN0aW9uczogR0FURVdBWV9BU1NVTUVfUk9MRSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2F3czpTb3VyY2VBY2NvdW50JzogYWNjb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEFybkxpa2U6IHtcbiAgICAgICAgICAgICdhd3M6U291cmNlQXJuJzogYGFybjoke3BhcnRpdGlvbn06YmVkcm9jay1hZ2VudGNvcmU6JHtyZWdpb259OiR7YWNjb3VudH06Z2F0ZXdheS8ke3RoaXMubmFtZX0qYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmttc0tleSkge1xuICAgICAgcm9sZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogR0FURVdBWV9LTVNfS0VZX1BFUk1TLFxuICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmttc0tleS5rZXlBcm5dLFxuICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gcm9sZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGdhdGV3YXkgbmFtZSBmb3JtYXRcbiAgICogUGF0dGVybjogXihbMC05YS16QS1aXVstXT8pezEsNDh9JFxuICAgKiBNYXggbGVuZ3RoOiA0OCBjaGFyYWN0ZXJzXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBnYXRld2F5IG5hbWUgdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgbmFtZSBpcyBpbnZhbGlkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUdhdGV3YXlOYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQobmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGhFcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgIHZhbHVlOiBuYW1lLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiA0OCxcbiAgICAgIGZpZWxkTmFtZTogJ0dhdGV3YXkgbmFtZScsXG4gICAgfSk7XG5cbiAgICBpZiAobGVuZ3RoRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEdhdGV3YXlOYW1lTGVuZ3RoSW52YWxpZGAsIGxlbmd0aEVycm9ycy5qb2luKCdcXG4nKSwgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgbmFtZSxcbiAgICAgICdHYXRld2F5IG5hbWUnLFxuICAgICAgL14oWzAtOWEtekEtWl1bLV0/KXsxLDQ4fSQvLFxuICAgICAgJ0dhdGV3YXkgbmFtZSBtdXN0IGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgaHlwaGVucywgd2l0aCBoeXBoZW5zIG9ubHkgYmV0d2VlbiBjaGFyYWN0ZXJzJyxcbiAgICApO1xuXG4gICAgaWYgKHBhdHRlcm5FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgR2F0ZXdheU5hbWVQYXR0ZXJuSW52YWxpZGAsIHBhdHRlcm5FcnJvcnMuam9pbignXFxuJyksIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGRlc2NyaXB0aW9uIGZvcm1hdFxuICAgKiBNYXggbGVuZ3RoOiAyMDAgY2hhcmFjdGVyc1xuICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChkZXNjcmlwdGlvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgIHZhbHVlOiBkZXNjcmlwdGlvbixcbiAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIG1heExlbmd0aDogMjAwLFxuICAgICAgZmllbGROYW1lOiAnRGVzY3JpcHRpb24nLFxuICAgIH0pO1xuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBHYXRld2F5RGVzY3JpcHRpb25JbnZhbGlkYCwgZXJyb3JzLmpvaW4oJ1xcbicpLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlZmF1bHQgQ29nbml0byBhdXRob3JpemVyIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBQcm92aXNpb25zIGEgQ29nbml0byBVc2VyIFBvb2wgYW5kIGNvbmZpZ3VyZXMgTTJNIChtYWNoaW5lLXRvLW1hY2hpbmUpIEpXVCBhdXRoZW50aWNhdGlvblxuICAgKiB1c2luZyBPQXV0aCAyLjAgY2xpZW50IGNyZWRlbnRpYWxzIGdyYW50IGZsb3dcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2lkZW50aXR5LWlkcC1jb2duaXRvLmh0bWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURlZmF1bHRDb2duaXRvQXV0aG9yaXplckNvbmZpZygpOiB7XG4gICAgYXV0aG9yaXplckNvbmZpZzogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnO1xuICAgIHRva2VuRW5kcG9pbnRVcmw6IHN0cmluZztcbiAgICBvYXV0aFNjb3Blczogc3RyaW5nW107XG4gIH0ge1xuICAgIGNvbnN0IHVzZXJQb29sID0gbmV3IGNvZ25pdG8uVXNlclBvb2wodGhpcywgJ1VzZXJQb29sJywge1xuICAgICAgc2lnbkluQ2FzZVNlbnNpdGl2ZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNvdXJjZVNlcnZlciA9IHVzZXJQb29sLmFkZFJlc291cmNlU2VydmVyKCdSZXNvdXJjZVNlcnZlcicsIHtcbiAgICAgIGlkZW50aWZpZXI6IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMjU2LCBzZXBhcmF0b3I6ICctJyB9KSxcbiAgICAgIHNjb3BlczogW1xuICAgICAgICB7XG4gICAgICAgICAgc2NvcGVOYW1lOiAncmVhZCcsXG4gICAgICAgICAgc2NvcGVEZXNjcmlwdGlvbjogJ1JlYWQgYWNjZXNzIHRvIGdhdGV3YXkgdG9vbHMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc2NvcGVOYW1lOiAnd3JpdGUnLFxuICAgICAgICAgIHNjb3BlRGVzY3JpcHRpb246ICdXcml0ZSBhY2Nlc3MgdG8gZ2F0ZXdheSB0b29scycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb2F1dGhTY29wZXMgPSBbXG4gICAgICBjb2duaXRvLk9BdXRoU2NvcGUucmVzb3VyY2VTZXJ2ZXIocmVzb3VyY2VTZXJ2ZXIsIHtcbiAgICAgICAgc2NvcGVOYW1lOiAncmVhZCcsXG4gICAgICAgIHNjb3BlRGVzY3JpcHRpb246ICdSZWFkIGFjY2VzcyB0byBnYXRld2F5IHRvb2xzJyxcbiAgICAgIH0pLFxuICAgICAgY29nbml0by5PQXV0aFNjb3BlLnJlc291cmNlU2VydmVyKHJlc291cmNlU2VydmVyLCB7XG4gICAgICAgIHNjb3BlTmFtZTogJ3dyaXRlJyxcbiAgICAgICAgc2NvcGVEZXNjcmlwdGlvbjogJ1dyaXRlIGFjY2VzcyB0byBnYXRld2F5IHRvb2xzJyxcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICBjb25zdCB1c2VyUG9vbENsaWVudCA9IHVzZXJQb29sLmFkZENsaWVudCgnRGVmYXVsdENsaWVudCcsIHtcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgb0F1dGg6IHtcbiAgICAgICAgZmxvd3M6IHtcbiAgICAgICAgICBjbGllbnRDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcGVzOiBvYXV0aFNjb3BlcyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQ29nbml0byBEb21haW4gZm9yIE9BdXRoMiB0b2tlbiBlbmRwb2ludFxuICAgIC8vIFVzZSB1bmlxdWVSZXNvdXJjZU5hbWUgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgZG9tYWluIHByZWZpeCB0b0xvd2VyQ2FzZSgpIGlzIHJlcXVpcmVkIGJlY2F1c2UgdGhlIGhhc2ggcG9ydGlvbiBpcyB1cHBlcmNhc2VcbiAgICBjb25zdCBkb21haW5QcmVmaXggPSBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgbWF4TGVuZ3RoOiA2MywgLy8gQ29nbml0byBkb21haW4gcHJlZml4IG1heCBsZW5ndGhcbiAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgIH0pLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBjb25zdCB1c2VyUG9vbERvbWFpbiA9IHVzZXJQb29sLmFkZERvbWFpbignRG9tYWluJywge1xuICAgICAgY29nbml0b0RvbWFpbjoge1xuICAgICAgICBkb21haW5QcmVmaXg6IGRvbWFpblByZWZpeCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnVzZXJQb29sID0gdXNlclBvb2w7XG4gICAgdGhpcy51c2VyUG9vbENsaWVudCA9IHVzZXJQb29sQ2xpZW50O1xuICAgIHRoaXMudXNlclBvb2xEb21haW4gPSB1c2VyUG9vbERvbWFpbjtcbiAgICB0aGlzLnJlc291cmNlU2VydmVyID0gcmVzb3VyY2VTZXJ2ZXI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXV0aG9yaXplckNvbmZpZzogR2F0ZXdheUF1dGhvcml6ZXIudXNpbmdDb2duaXRvKHtcbiAgICAgICAgdXNlclBvb2w6IHVzZXJQb29sLFxuICAgICAgICBhbGxvd2VkQ2xpZW50czogW3VzZXJQb29sQ2xpZW50XSxcbiAgICAgIH0pLFxuICAgICAgdG9rZW5FbmRwb2ludFVybDogYGh0dHBzOi8vJHt1c2VyUG9vbERvbWFpbi5kb21haW5OYW1lfS5hdXRoLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25jb2duaXRvLmNvbS9vYXV0aDIvdG9rZW5gLFxuICAgICAgb2F1dGhTY29wZXM6IG9hdXRoU2NvcGVzLm1hcChzY29wZSA9PiBzY29wZS5zY29wZU5hbWUpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlZmF1bHQgTUNQIHByb3RvY29sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqIFByb3ZpZGVzIHNlbnNpYmxlIGRlZmF1bHRzIGZvciBNQ1AgcHJvdG9jb2wgc2V0dGluZ3NcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURlZmF1bHRNY3BQcm90b2NvbENvbmZpZ3VyYXRpb24oKTogSUdhdGV3YXlQcm90b2NvbENvbmZpZyB7XG4gICAgcmV0dXJuIG5ldyBNY3BQcm90b2NvbENvbmZpZ3VyYXRpb24oe1xuICAgICAgc3VwcG9ydGVkVmVyc2lvbnM6IFtNQ1BQcm90b2NvbFZlcnNpb24uTUNQXzIwMjVfMDNfMjZdLFxuICAgICAgc2VhcmNoVHlwZTogTWNwR2F0ZXdheVNlYXJjaFR5cGUuU0VNQU5USUMsXG4gICAgICBpbnN0cnVjdGlvbnM6ICdEZWZhdWx0IGdhdGV3YXkgdG8gY29ubmVjdCB0byBleHRlcm5hbCBNQ1AgdG9vbHMnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBpbnRlcmNlcHRvciB0byB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogSW50ZXJjZXB0b3JzIGFsbG93IHlvdSB0byBydW4gY3VzdG9tIGNvZGUgYXQgc3BlY2lmaWMgcG9pbnRzIGluIHRoZSBnYXRld2F5IHJlcXVlc3QvcmVzcG9uc2UgZmxvdzpcbiAgICogLSBSRVFVRVNUIGludGVyY2VwdG9ycyBleGVjdXRlIGJlZm9yZSB0aGUgZ2F0ZXdheSBjYWxscyB0aGUgdGFyZ2V0XG4gICAqIC0gUkVTUE9OU0UgaW50ZXJjZXB0b3JzIGV4ZWN1dGUgYWZ0ZXIgdGhlIHRhcmdldCByZXNwb25kc1xuICAgKlxuICAgKiBBIGdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVRVUVTVCBpbnRlcmNlcHRvciBhbmQgb25lIFJFU1BPTlNFIGludGVyY2VwdG9yLlxuICAgKiBAcGFyYW0gaW50ZXJjZXB0b3IgVGhlIGludGVyY2VwdG9yIHRvIGFkZCAodXNlIExhbWJkYUludGVyY2VwdG9yIGZhY3RvcnkgbWV0aG9kcylcbiAgICogQHRocm93cyBFcnJvciBpZiBhbiBpbnRlcmNlcHRvciBvZiB0aGUgc2FtZSB0eXBlIGFscmVhZHkgZXhpc3RzXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkSW50ZXJjZXB0b3IoaW50ZXJjZXB0b3I6IElJbnRlcmNlcHRvcik6IHZvaWQge1xuICAgIGNvbnN0IGludGVyY2VwdGlvblBvaW50ID0gaW50ZXJjZXB0b3IuaW50ZXJjZXB0aW9uUG9pbnQ7XG5cbiAgICBpZiAoaW50ZXJjZXB0aW9uUG9pbnQgPT09IEludGVyY2VwdGlvblBvaW50LlJFUVVFU1QpIHtcbiAgICAgIGlmICh0aGlzLnJlcXVlc3RJbnRlcmNlcHRvckNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGxpdGBSZXF1ZXN0SW50ZXJjZXB0b3JBbHJlYWR5RXhpc3RzYCxcbiAgICAgICAgICAnR2F0ZXdheSBhbHJlYWR5IGhhcyBhIFJFUVVFU1QgaW50ZXJjZXB0b3IgY29uZmlndXJlZC4gQSBnYXRld2F5IGNhbiBoYXZlIGF0IG1vc3Qgb25lIFJFUVVFU1QgaW50ZXJjZXB0b3IuJyxcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3JDb25maWcgPSBpbnRlcmNlcHRvci5iaW5kKHRoaXMsIHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaW50ZXJjZXB0aW9uUG9pbnQgPT09IEludGVyY2VwdGlvblBvaW50LlJFU1BPTlNFKSB7XG4gICAgICBpZiAodGhpcy5yZXNwb25zZUludGVyY2VwdG9yQ29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgbGl0YFJlc3BvbnNlSW50ZXJjZXB0b3JBbHJlYWR5RXhpc3RzYCxcbiAgICAgICAgICAnR2F0ZXdheSBhbHJlYWR5IGhhcyBhIFJFU1BPTlNFIGludGVyY2VwdG9yIGNvbmZpZ3VyZWQuIEEgZ2F0ZXdheSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBSRVNQT05TRSBpbnRlcmNlcHRvci4nLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JDb25maWcgPSBpbnRlcmNlcHRvci5iaW5kKHRoaXMsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIGluaXRpYWxpemVzIGludGVyY2VwdG9ycyBmcm9tIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVBbmRJbml0aWFsaXplSW50ZXJjZXB0b3JzKGludGVyY2VwdG9yczogSUludGVyY2VwdG9yW10pOiB2b2lkIHtcbiAgICBjb25zdCByZXF1ZXN0Q291bnQgPSBpbnRlcmNlcHRvcnMuZmlsdGVyKGkgPT4gaS5pbnRlcmNlcHRpb25Qb2ludCA9PT0gSW50ZXJjZXB0aW9uUG9pbnQuUkVRVUVTVCkubGVuZ3RoO1xuICAgIGNvbnN0IHJlc3BvbnNlQ291bnQgPSBpbnRlcmNlcHRvcnMuZmlsdGVyKGkgPT4gaS5pbnRlcmNlcHRpb25Qb2ludCA9PT0gSW50ZXJjZXB0aW9uUG9pbnQuUkVTUE9OU0UpLmxlbmd0aDtcblxuICAgIGlmIChyZXF1ZXN0Q291bnQgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgVG9vTWFueVJlcXVlc3RJbnRlcmNlcHRvcnNgLFxuICAgICAgICBgR2F0ZXdheSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBSRVFVRVNUIGludGVyY2VwdG9yLiBGb3VuZCAke3JlcXVlc3RDb3VudH0gUkVRVUVTVCBpbnRlcmNlcHRvcnMuYCxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlQ291bnQgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgVG9vTWFueVJlc3BvbnNlSW50ZXJjZXB0b3JzYCxcbiAgICAgICAgYEdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVTUE9OU0UgaW50ZXJjZXB0b3IuIEZvdW5kICR7cmVzcG9uc2VDb3VudH0gUkVTUE9OU0UgaW50ZXJjZXB0b3JzLmAsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaW50ZXJjZXB0b3Igb2YgaW50ZXJjZXB0b3JzKSB7XG4gICAgICB0aGlzLmFkZEludGVyY2VwdG9yKGludGVyY2VwdG9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgaW50ZXJjZXB0b3IgY29uZmlndXJhdGlvbnMgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vIGludGVyY2VwdG9ycyBhcmUgY29uZmlndXJlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVuZGVySW50ZXJjZXB0b3JDb25maWd1cmF0aW9ucygpOiBhbnlbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29uZmlnczogYW55W10gPSBbXTtcblxuICAgIGlmICh0aGlzLnJlcXVlc3RJbnRlcmNlcHRvckNvbmZpZykge1xuICAgICAgY29uZmlncy5wdXNoKHRoaXMucmVxdWVzdEludGVyY2VwdG9yQ29uZmlnLmNvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JDb25maWcpIHtcbiAgICAgIGNvbmZpZ3MucHVzaCh0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JDb25maWcuY29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZ3MubGVuZ3RoID4gMCA/IGNvbmZpZ3MgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,6 +4,7 @@ exports.GatewayAuthorizer = exports.IamAuthorizer = exports.CustomJwtAuthorizer
|
|
|
4
4
|
const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
const errors_1 = require("aws-cdk-lib/core/lib/errors");
|
|
7
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
7
8
|
/******************************************************************************
|
|
8
9
|
* Authorizer Configuration
|
|
9
10
|
*****************************************************************************/
|
|
@@ -21,7 +22,7 @@ var GatewayAuthorizerType;
|
|
|
21
22
|
* Custom JWT authorizer configuration implementation
|
|
22
23
|
*/
|
|
23
24
|
class CustomJwtAuthorizer {
|
|
24
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CustomJwtAuthorizer", version: "2.
|
|
25
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CustomJwtAuthorizer", version: "2.248.0-alpha.0" };
|
|
25
26
|
authorizerType = GatewayAuthorizerType.CUSTOM_JWT;
|
|
26
27
|
discoveryUrl;
|
|
27
28
|
allowedAudience;
|
|
@@ -70,7 +71,7 @@ exports.CustomJwtAuthorizer = CustomJwtAuthorizer;
|
|
|
70
71
|
*
|
|
71
72
|
*/
|
|
72
73
|
class IamAuthorizer {
|
|
73
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.IamAuthorizer", version: "2.
|
|
74
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.IamAuthorizer", version: "2.248.0-alpha.0" };
|
|
74
75
|
authorizerType = GatewayAuthorizerType.AWS_IAM;
|
|
75
76
|
/**
|
|
76
77
|
* @internal
|
|
@@ -86,7 +87,7 @@ exports.IamAuthorizer = IamAuthorizer;
|
|
|
86
87
|
* Factory class for creating Gateway Authorizers
|
|
87
88
|
*/
|
|
88
89
|
class GatewayAuthorizer {
|
|
89
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayAuthorizer", version: "2.
|
|
90
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayAuthorizer", version: "2.248.0-alpha.0" };
|
|
90
91
|
/**
|
|
91
92
|
* AWS IAM authorizer instance
|
|
92
93
|
*/
|
|
@@ -110,7 +111,7 @@ class GatewayAuthorizer {
|
|
|
110
111
|
}
|
|
111
112
|
// At least one of allowedAudience, allowedClients, allowedScopes, or customClaims must be defined for CUSTOM_JWT authorizer
|
|
112
113
|
if (!configuration.allowedAudience && !configuration.allowedClients && !configuration.allowedScopes && !configuration.customClaims) {
|
|
113
|
-
throw new errors_1.UnscopedValidationError(
|
|
114
|
+
throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `CustomJwtConfigurationRequired`, 'At least one of allowedAudience, allowedClients, allowedScopes, or customClaims must be defined for CUSTOM_JWT authorizer');
|
|
114
115
|
}
|
|
115
116
|
return new CustomJwtAuthorizer(configuration);
|
|
116
117
|
}
|
|
@@ -140,4 +141,4 @@ class GatewayAuthorizer {
|
|
|
140
141
|
}
|
|
141
142
|
}
|
|
142
143
|
exports.GatewayAuthorizer = GatewayAuthorizer;
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF1dGhvcml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx3REFBc0U7QUFHdEU7OytFQUUrRTtBQUUvRTs7R0FFRztBQUNILElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQixpQ0FBaUM7SUFDakMsa0RBQXlCLENBQUE7SUFDekIsOEJBQThCO0lBQzlCLDRDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQUtoQztBQTRERDs7R0FFRztBQUNILE1BQWEsbUJBQW1COztJQUNkLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLENBQUM7SUFDakQsWUFBWSxDQUFTO0lBQ3JCLGVBQWUsQ0FBWTtJQUMzQixjQUFjLENBQVk7SUFDMUIsYUFBYSxDQUFZO0lBQ3pCLFlBQVksQ0FBd0I7SUFFckQsWUFBWSxNQUE4Qjs7Ozs7OytDQVIvQixtQkFBbUI7Ozs7UUFTNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztLQUN6QztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU87WUFDTCxtQkFBbUIsRUFBRTtnQkFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RFLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUk7b0JBQ3ZELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDOUQsQ0FBQzthQUNIO1NBQ0YsQ0FBQztLQUNIOztBQS9CSCxrREFnQ0M7QUFFRDs7K0VBRStFO0FBRS9FOzs7R0FHRztBQUNILE1BQWEsYUFBYTs7SUFDUixjQUFjLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDO0lBRS9EOztPQUVHO0lBQ0gsT0FBTztRQUNMLDJEQUEyRDtRQUMzRCwrREFBK0Q7UUFDL0QsT0FBTyxTQUFTLENBQUM7S0FDbEI7O0FBVkgsc0NBV0M7QUFpQ0Q7O0dBRUc7QUFDSCxNQUFzQixpQkFBaUI7O0lBQ3JDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVc7UUFDdkIsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0tBQzVCO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBcUM7Ozs7Ozs7Ozs7UUFDaEUsNEhBQTRIO1FBQzVILElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkksTUFBTSxJQUFJLGdDQUF1QixDQUFDLGdDQUFnQyxFQUFFLDJIQUEySCxDQUFDLENBQUM7UUFDbk0sQ0FBQztRQUNELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUMvQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQTZCOzs7Ozs7Ozs7O1FBQ3RELE1BQU0sWUFBWSxHQUFHLHVCQUF1QixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLGtCQUFrQixLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsbUNBQW1DLENBQUM7UUFFcEosT0FBTyxJQUFJLG1CQUFtQixDQUFDO1lBQzdCLFlBQVksRUFBRSxZQUFZO1lBQzFCLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1lBQ2xGLGVBQWUsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3ZDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNsQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7U0FDakMsQ0FBQyxDQUFDO0tBQ0o7O0FBcENILDhDQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSVVzZXJQb29sQ2xpZW50LCBJVXNlclBvb2wgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29nbml0byc7XG5pbXBvcnQgeyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7IEdhdGV3YXlDdXN0b21DbGFpbSB9IGZyb20gJy4vY3VzdG9tLWNsYWltJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6ZXIgQ29uZmlndXJhdGlvblxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEdhdGV3YXkgYXV0aG9yaXplciB0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIEdhdGV3YXlBdXRob3JpemVyVHlwZSB7XG4gIC8qKiBDdXN0b20gSldUIGF1dGhvcml6ZXIgdHlwZSAqL1xuICBDVVNUT01fSldUID0gJ0NVU1RPTV9KV1QnLFxuICAvKiogQVdTIElBTSBhdXRob3JpemVyIHR5cGUgKi9cbiAgQVdTX0lBTSA9ICdBV1NfSUFNJyxcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBpbnRlcmZhY2UgZm9yIGdhdGV3YXkgYXV0aG9yaXplciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcml6ZXJUeXBlOiBHYXRld2F5QXV0aG9yaXplclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gaW4gQ0ZOIGZvcm1hdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9yZW5kZXIoKTogYW55O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b20gSldUXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEN1c3RvbSBKV1QgYXV0aG9yaXplciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSnd0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGlzIFVSTCBpcyB1c2VkIHRvIGZldGNoIE9wZW5JRCBDb25uZWN0IGNvbmZpZ3VyYXRpb24gb3IgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgbWV0YWRhdGFcbiAgICogZm9yIHZhbGlkYXRpbmcgaW5jb21pbmcgdG9rZW5zLlxuICAgKlxuICAgKiBQYXR0ZXJuOiAuKy9cXC53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uXG4gICAqIFJlcXVpcmVkOiBZZXNcbiAgICovXG4gIHJlYWRvbmx5IGRpc2NvdmVyeVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGluZGl2aWR1YWwgYXVkaWVuY2UgdmFsdWVzIHRoYXQgYXJlIHZhbGlkYXRlZCBpbiB0aGUgaW5jb21pbmcgSldUIHRva2VuIHZhbGlkYXRpb24gcHJvY2Vzcy5cbiAgICogQGRlZmF1bHQgLSBObyBhdWRpZW5jZSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQXVkaWVuY2U/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyBpbmRpdmlkdWFsIGNsaWVudCBJRHMgdGhhdCBhcmUgdmFsaWRhdGVkIGluIHRoZSBpbmNvbWluZyBKV1QgdG9rZW4gdmFsaWRhdGlvbiBwcm9jZXNzLlxuICAgKiBAZGVmYXVsdCAtIE5vIGNsaWVudCBJRCB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGluZGl2aWR1YWwgc2NvcGVzIHRoYXQgYXJlIHZhbGlkYXRlZCBpbiB0aGUgaW5jb21pbmcgSldUIHRva2VuIHZhbGlkYXRpb24gcHJvY2Vzcy5cbiAgICogQGRlZmF1bHQgLSBObyBzY29wZSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkU2NvcGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjbGFpbXMgZm9yIGFkZGl0aW9uYWwgSldUIHRva2VuIHZhbGlkYXRpb24uXG4gICAqIEFsbG93cyB5b3UgdG8gdmFsaWRhdGUgYWRkaXRpb25hbCBmaWVsZHMgaW4gSldUIHRva2VucyBiZXlvbmQgdGhlIHN0YW5kYXJkIGF1ZGllbmNlLCBjbGllbnQsIGFuZCBzY29wZSB2YWxpZGF0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gY2xhaW0gdmFsaWRhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tQ2xhaW1zPzogR2F0ZXdheUN1c3RvbUNsYWltW107XG59XG5cbi8qKlxuICogQ3VzdG9tIEpXVCBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbUp3dEF1dGhvcml6ZXIgaW1wbGVtZW50cyBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcge1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXplclR5cGUgPSBHYXRld2F5QXV0aG9yaXplclR5cGUuQ1VTVE9NX0pXVDtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNjb3ZlcnlVcmw6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkQXVkaWVuY2U/OiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWRTY29wZXM/OiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21DbGFpbXM/OiBHYXRld2F5Q3VzdG9tQ2xhaW1bXTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEN1c3RvbUp3dENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmRpc2NvdmVyeVVybCA9IGNvbmZpZy5kaXNjb3ZlcnlVcmw7XG4gICAgdGhpcy5hbGxvd2VkQXVkaWVuY2UgPSBjb25maWcuYWxsb3dlZEF1ZGllbmNlO1xuICAgIHRoaXMuYWxsb3dlZENsaWVudHMgPSBjb25maWcuYWxsb3dlZENsaWVudHM7XG4gICAgdGhpcy5hbGxvd2VkU2NvcGVzID0gY29uZmlnLmFsbG93ZWRTY29wZXM7XG4gICAgdGhpcy5jdXN0b21DbGFpbXMgPSBjb25maWcuY3VzdG9tQ2xhaW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY3VzdG9tSnd0QXV0aG9yaXplcjoge1xuICAgICAgICBkaXNjb3ZlcnlVcmw6IHRoaXMuZGlzY292ZXJ5VXJsLFxuICAgICAgICAuLi4odGhpcy5hbGxvd2VkQXVkaWVuY2UgJiYgeyBhbGxvd2VkQXVkaWVuY2U6IHRoaXMuYWxsb3dlZEF1ZGllbmNlIH0pLFxuICAgICAgICAuLi4odGhpcy5hbGxvd2VkQ2xpZW50cyAmJiB7IGFsbG93ZWRDbGllbnRzOiB0aGlzLmFsbG93ZWRDbGllbnRzIH0pLFxuICAgICAgICAuLi4odGhpcy5hbGxvd2VkU2NvcGVzICYmIHsgYWxsb3dlZFNjb3BlczogdGhpcy5hbGxvd2VkU2NvcGVzIH0pLFxuICAgICAgICAuLi4odGhpcy5jdXN0b21DbGFpbXMgJiYgdGhpcy5jdXN0b21DbGFpbXMubGVuZ3RoID4gMCAmJiB7XG4gICAgICAgICAgY3VzdG9tQ2xhaW1zOiB0aGlzLmN1c3RvbUNsYWltcy5tYXAoY2xhaW0gPT4gY2xhaW0uX3JlbmRlcigpKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVdTIElBTVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEFXUyBJQU0gYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uXG4gKlxuICovXG5leHBvcnQgY2xhc3MgSWFtQXV0aG9yaXplciBpbXBsZW1lbnRzIElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gIHB1YmxpYyByZWFkb25seSBhdXRob3JpemVyVHlwZSA9IEdhdGV3YXlBdXRob3JpemVyVHlwZS5BV1NfSUFNO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9yZW5kZXIoKTogYW55IHtcbiAgICAvLyBBV1MgSUFNIGF1dGhvcml6ZXIgZG9lc24ndCBuZWVkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvblxuICAgIC8vIFJldHVybiBudWxsIG9yIHVuZGVmaW5lZCB0byBpbmRpY2F0ZSBubyBjb25maWd1cmF0aW9uIG5lZWRlZFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFjdG9yeVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9BdXRob3JpemVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIHRvIHVzZSBmb3IgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sOiBJVXNlclBvb2w7XG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCBVc2VyIFBvb2wgY2xpZW50c1xuICAgKiBAZGVmYXVsdCAtIEFsbCBjbGllbnRzIGFyZSBhbGxvd2VkXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IElVc2VyUG9vbENsaWVudFtdO1xuICAvKipcbiAgICogVGhlIGFsbG93ZWQgYXVkaWVuY2VzIGZvciBKV1QgdmFsaWRhdGlvblxuICAgKiBAZGVmYXVsdCAtIE5vIGF1ZGllbmNlIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRBdWRpZW5jZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBhbGxvd2VkIHNjb3BlcyBmb3IgSldUIHZhbGlkYXRpb25cbiAgICogQGRlZmF1bHQgLSBObyBzY29wZSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkU2NvcGVzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBDdXN0b20gY2xhaW1zIGZvciBhZGRpdGlvbmFsIEpXVCB0b2tlbiB2YWxpZGF0aW9uLlxuICAgKiBBbGxvd3MgeW91IHRvIHZhbGlkYXRlIGFkZGl0aW9uYWwgZmllbGRzIGluIEpXVCB0b2tlbnMgYmV5b25kIHRoZSBzdGFuZGFyZCBhdWRpZW5jZSwgY2xpZW50LCBhbmQgc2NvcGUgdmFsaWRhdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGNsYWltIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUNsYWltcz86IEdhdGV3YXlDdXN0b21DbGFpbVtdO1xufVxuLyoqXG4gKiBGYWN0b3J5IGNsYXNzIGZvciBjcmVhdGluZyBHYXRld2F5IEF1dGhvcml6ZXJzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHYXRld2F5QXV0aG9yaXplciB7XG4gIC8qKlxuICAgKiBBV1MgSUFNIGF1dGhvcml6ZXIgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdBd3NJYW0oKTogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgICByZXR1cm4gbmV3IElhbUF1dGhvcml6ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjdXN0b20gSldUIGF1dGhvcml6ZXJcbiAgICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gLSBUaGUgSldUIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIGNvbmZpZ3VyZWQgZm9yIGN1c3RvbSBKV1RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdDdXN0b21Kd3QoY29uZmlndXJhdGlvbjogQ3VzdG9tSnd0Q29uZmlndXJhdGlvbik6IElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gICAgLy8gQXQgbGVhc3Qgb25lIG9mIGFsbG93ZWRBdWRpZW5jZSwgYWxsb3dlZENsaWVudHMsIGFsbG93ZWRTY29wZXMsIG9yIGN1c3RvbUNsYWltcyBtdXN0IGJlIGRlZmluZWQgZm9yIENVU1RPTV9KV1QgYXV0aG9yaXplclxuICAgIGlmICghY29uZmlndXJhdGlvbi5hbGxvd2VkQXVkaWVuY2UgJiYgIWNvbmZpZ3VyYXRpb24uYWxsb3dlZENsaWVudHMgJiYgIWNvbmZpZ3VyYXRpb24uYWxsb3dlZFNjb3BlcyAmJiAhY29uZmlndXJhdGlvbi5jdXN0b21DbGFpbXMpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcignQ3VzdG9tSnd0Q29uZmlndXJhdGlvblJlcXVpcmVkJywgJ0F0IGxlYXN0IG9uZSBvZiBhbGxvd2VkQXVkaWVuY2UsIGFsbG93ZWRDbGllbnRzLCBhbGxvd2VkU2NvcGVzLCBvciBjdXN0b21DbGFpbXMgbXVzdCBiZSBkZWZpbmVkIGZvciBDVVNUT01fSldUIGF1dGhvcml6ZXInKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDdXN0b21Kd3RBdXRob3JpemVyKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIEpXVCBhdXRob3JpemVyIGZyb20gQ29nbml0byBVc2VyIFBvb2xcbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIENvZ25pdG8gY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBDdXN0b21Kd3RBdXRob3JpemVyIGNvbmZpZ3VyZWQgZm9yIENvZ25pdG9cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdDb2duaXRvKHByb3BzOiBDb2duaXRvQXV0aG9yaXplclByb3BzKTogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmwgPSBgaHR0cHM6Ly9jb2duaXRvLWlkcC4ke3Byb3BzLnVzZXJQb29sLmVudi5yZWdpb259LmFtYXpvbmF3cy5jb20vJHtwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkfS8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmA7XG5cbiAgICByZXR1cm4gbmV3IEN1c3RvbUp3dEF1dGhvcml6ZXIoe1xuICAgICAgZGlzY292ZXJ5VXJsOiBkaXNjb3ZlcnlVcmwsXG4gICAgICBhbGxvd2VkQ2xpZW50czogcHJvcHMuYWxsb3dlZENsaWVudHM/LmZsYXRNYXAoKGNsaWVudCkgPT4gY2xpZW50LnVzZXJQb29sQ2xpZW50SWQpLFxuICAgICAgYWxsb3dlZEF1ZGllbmNlOiBwcm9wcy5hbGxvd2VkQXVkaWVuY2VzLFxuICAgICAgYWxsb3dlZFNjb3BlczogcHJvcHMuYWxsb3dlZFNjb3BlcyxcbiAgICAgIGN1c3RvbUNsYWltczogcHJvcHMuY3VzdG9tQ2xhaW1zLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF1dGhvcml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx3REFBc0U7QUFDdEUsNEVBQTREO0FBRzVEOzsrRUFFK0U7QUFFL0U7O0dBRUc7QUFDSCxJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDL0IsaUNBQWlDO0lBQ2pDLGtEQUF5QixDQUFBO0lBQ3pCLDhCQUE4QjtJQUM5Qiw0Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFLaEM7QUE0REQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjs7SUFDZCxjQUFjLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDO0lBQ2pELFlBQVksQ0FBUztJQUNyQixlQUFlLENBQVk7SUFDM0IsY0FBYyxDQUFZO0lBQzFCLGFBQWEsQ0FBWTtJQUN6QixZQUFZLENBQXdCO0lBRXJELFlBQVksTUFBOEI7Ozs7OzsrQ0FSL0IsbUJBQW1COzs7O1FBUzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7S0FDekM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixPQUFPO1lBQ0wsbUJBQW1CLEVBQUU7Z0JBQ25CLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25FLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJO29CQUN2RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQzlELENBQUM7YUFDSDtTQUNGLENBQUM7S0FDSDs7QUEvQkgsa0RBZ0NDO0FBRUQ7OytFQUUrRTtBQUUvRTs7O0dBR0c7QUFDSCxNQUFhLGFBQWE7O0lBQ1IsY0FBYyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztJQUUvRDs7T0FFRztJQUNILE9BQU87UUFDTCwyREFBMkQ7UUFDM0QsK0RBQStEO1FBQy9ELE9BQU8sU0FBUyxDQUFDO0tBQ2xCOztBQVZILHNDQVdDO0FBaUNEOztHQUVHO0FBQ0gsTUFBc0IsaUJBQWlCOztJQUNyQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxhQUFhLEVBQUUsQ0FBQztLQUM1QjtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQXFDOzs7Ozs7Ozs7O1FBQ2hFLDRIQUE0SDtRQUM1SCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ25JLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxJQUFBLHNCQUFHLEVBQUEsZ0NBQWdDLEVBQUUsMkhBQTJILENBQUMsQ0FBQztRQUN0TSxDQUFDO1FBQ0QsT0FBTyxJQUFJLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQy9DO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBNkI7Ozs7Ozs7Ozs7UUFDdEQsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sa0JBQWtCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxtQ0FBbUMsQ0FBQztRQUVwSixPQUFPLElBQUksbUJBQW1CLENBQUM7WUFDN0IsWUFBWSxFQUFFLFlBQVk7WUFDMUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDbEYsZUFBZSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDdkMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtTQUNqQyxDQUFDLENBQUM7S0FDSjs7QUFwQ0gsOENBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJVXNlclBvb2xDbGllbnQsIElVc2VyUG9vbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCB7IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvZXJyb3JzJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHR5cGUgeyBHYXRld2F5Q3VzdG9tQ2xhaW0gfSBmcm9tICcuL2N1c3RvbS1jbGFpbSc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpemVyIENvbmZpZ3VyYXRpb25cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBHYXRld2F5IGF1dGhvcml6ZXIgdHlwZVxuICovXG5leHBvcnQgZW51bSBHYXRld2F5QXV0aG9yaXplclR5cGUge1xuICAvKiogQ3VzdG9tIEpXVCBhdXRob3JpemVyIHR5cGUgKi9cbiAgQ1VTVE9NX0pXVCA9ICdDVVNUT01fSldUJyxcbiAgLyoqIEFXUyBJQU0gYXV0aG9yaXplciB0eXBlICovXG4gIEFXU19JQU0gPSAnQVdTX0lBTScsXG59XG5cbi8qKlxuICogQWJzdHJhY3QgaW50ZXJmYWNlIGZvciBnYXRld2F5IGF1dGhvcml6ZXIgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgYXV0aG9yaXplciB0eXBlXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemVyVHlwZTogR2F0ZXdheUF1dGhvcml6ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGluIENGTiBmb3JtYXRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfcmVuZGVyKCk6IGFueTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tIEpXVFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBDdXN0b20gSldUIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUp3dENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhpcyBVUkwgaXMgdXNlZCB0byBmZXRjaCBPcGVuSUQgQ29ubmVjdCBjb25maWd1cmF0aW9uIG9yIGF1dGhvcml6YXRpb24gc2VydmVyIG1ldGFkYXRhXG4gICAqIGZvciB2YWxpZGF0aW5nIGluY29taW5nIHRva2Vucy5cbiAgICpcbiAgICogUGF0dGVybjogLisvXFwud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvblxuICAgKiBSZXF1aXJlZDogWWVzXG4gICAqL1xuICByZWFkb25seSBkaXNjb3ZlcnlVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogUmVwcmVzZW50cyBpbmRpdmlkdWFsIGF1ZGllbmNlIHZhbHVlcyB0aGF0IGFyZSB2YWxpZGF0ZWQgaW4gdGhlIGluY29taW5nIEpXVCB0b2tlbiB2YWxpZGF0aW9uIHByb2Nlc3MuXG4gICAqIEBkZWZhdWx0IC0gTm8gYXVkaWVuY2UgdmFsaWRhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZEF1ZGllbmNlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgaW5kaXZpZHVhbCBjbGllbnQgSURzIHRoYXQgYXJlIHZhbGlkYXRlZCBpbiB0aGUgaW5jb21pbmcgSldUIHRva2VuIHZhbGlkYXRpb24gcHJvY2Vzcy5cbiAgICogQGRlZmF1bHQgLSBObyBjbGllbnQgSUQgdmFsaWRhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZENsaWVudHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyBpbmRpdmlkdWFsIHNjb3BlcyB0aGF0IGFyZSB2YWxpZGF0ZWQgaW4gdGhlIGluY29taW5nIEpXVCB0b2tlbiB2YWxpZGF0aW9uIHByb2Nlc3MuXG4gICAqIEBkZWZhdWx0IC0gTm8gc2NvcGUgdmFsaWRhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZFNjb3Blcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gY2xhaW1zIGZvciBhZGRpdGlvbmFsIEpXVCB0b2tlbiB2YWxpZGF0aW9uLlxuICAgKiBBbGxvd3MgeW91IHRvIHZhbGlkYXRlIGFkZGl0aW9uYWwgZmllbGRzIGluIEpXVCB0b2tlbnMgYmV5b25kIHRoZSBzdGFuZGFyZCBhdWRpZW5jZSwgY2xpZW50LCBhbmQgc2NvcGUgdmFsaWRhdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGNsYWltIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUNsYWltcz86IEdhdGV3YXlDdXN0b21DbGFpbVtdO1xufVxuXG4vKipcbiAqIEN1c3RvbSBKV1QgYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXN0b21Kd3RBdXRob3JpemVyIGltcGxlbWVudHMgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgcHVibGljIHJlYWRvbmx5IGF1dGhvcml6ZXJUeXBlID0gR2F0ZXdheUF1dGhvcml6ZXJUeXBlLkNVU1RPTV9KV1Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzY292ZXJ5VXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZEF1ZGllbmNlPzogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZENsaWVudHM/OiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkU2NvcGVzPzogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tQ2xhaW1zPzogR2F0ZXdheUN1c3RvbUNsYWltW107XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBDdXN0b21Kd3RDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5kaXNjb3ZlcnlVcmwgPSBjb25maWcuZGlzY292ZXJ5VXJsO1xuICAgIHRoaXMuYWxsb3dlZEF1ZGllbmNlID0gY29uZmlnLmFsbG93ZWRBdWRpZW5jZTtcbiAgICB0aGlzLmFsbG93ZWRDbGllbnRzID0gY29uZmlnLmFsbG93ZWRDbGllbnRzO1xuICAgIHRoaXMuYWxsb3dlZFNjb3BlcyA9IGNvbmZpZy5hbGxvd2VkU2NvcGVzO1xuICAgIHRoaXMuY3VzdG9tQ2xhaW1zID0gY29uZmlnLmN1c3RvbUNsYWltcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfcmVuZGVyKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1c3RvbUp3dEF1dGhvcml6ZXI6IHtcbiAgICAgICAgZGlzY292ZXJ5VXJsOiB0aGlzLmRpc2NvdmVyeVVybCxcbiAgICAgICAgLi4uKHRoaXMuYWxsb3dlZEF1ZGllbmNlICYmIHsgYWxsb3dlZEF1ZGllbmNlOiB0aGlzLmFsbG93ZWRBdWRpZW5jZSB9KSxcbiAgICAgICAgLi4uKHRoaXMuYWxsb3dlZENsaWVudHMgJiYgeyBhbGxvd2VkQ2xpZW50czogdGhpcy5hbGxvd2VkQ2xpZW50cyB9KSxcbiAgICAgICAgLi4uKHRoaXMuYWxsb3dlZFNjb3BlcyAmJiB7IGFsbG93ZWRTY29wZXM6IHRoaXMuYWxsb3dlZFNjb3BlcyB9KSxcbiAgICAgICAgLi4uKHRoaXMuY3VzdG9tQ2xhaW1zICYmIHRoaXMuY3VzdG9tQ2xhaW1zLmxlbmd0aCA+IDAgJiYge1xuICAgICAgICAgIGN1c3RvbUNsYWltczogdGhpcy5jdXN0b21DbGFpbXMubWFwKGNsYWltID0+IGNsYWltLl9yZW5kZXIoKSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFXUyBJQU1cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBBV1MgSUFNIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvblxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIElhbUF1dGhvcml6ZXIgaW1wbGVtZW50cyBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcge1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXplclR5cGUgPSBHYXRld2F5QXV0aG9yaXplclR5cGUuQVdTX0lBTTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfcmVuZGVyKCk6IGFueSB7XG4gICAgLy8gQVdTIElBTSBhdXRob3JpemVyIGRvZXNuJ3QgbmVlZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25cbiAgICAvLyBSZXR1cm4gbnVsbCBvciB1bmRlZmluZWQgdG8gaW5kaWNhdGUgbm8gY29uZmlndXJhdGlvbiBuZWVkZWRcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhY3RvcnlcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGludGVyZmFjZSBDb2duaXRvQXV0aG9yaXplclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFVzZXIgUG9vbCB0byB1c2UgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbDogSVVzZXJQb29sO1xuICAvKipcbiAgICogVGhlIGFsbG93ZWQgVXNlciBQb29sIGNsaWVudHNcbiAgICogQGRlZmF1bHQgLSBBbGwgY2xpZW50cyBhcmUgYWxsb3dlZFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZENsaWVudHM/OiBJVXNlclBvb2xDbGllbnRbXTtcbiAgLyoqXG4gICAqIFRoZSBhbGxvd2VkIGF1ZGllbmNlcyBmb3IgSldUIHZhbGlkYXRpb25cbiAgICogQGRlZmF1bHQgLSBObyBhdWRpZW5jZSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQXVkaWVuY2VzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCBzY29wZXMgZm9yIEpXVCB2YWxpZGF0aW9uXG4gICAqIEBkZWZhdWx0IC0gTm8gc2NvcGUgdmFsaWRhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZFNjb3Blcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogQ3VzdG9tIGNsYWltcyBmb3IgYWRkaXRpb25hbCBKV1QgdG9rZW4gdmFsaWRhdGlvbi5cbiAgICogQWxsb3dzIHlvdSB0byB2YWxpZGF0ZSBhZGRpdGlvbmFsIGZpZWxkcyBpbiBKV1QgdG9rZW5zIGJleW9uZCB0aGUgc3RhbmRhcmQgYXVkaWVuY2UsIGNsaWVudCwgYW5kIHNjb3BlIHZhbGlkYXRpb25zLlxuICAgKiBAZGVmYXVsdCAtIE5vIGN1c3RvbSBjbGFpbSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBjdXN0b21DbGFpbXM/OiBHYXRld2F5Q3VzdG9tQ2xhaW1bXTtcbn1cbi8qKlxuICogRmFjdG9yeSBjbGFzcyBmb3IgY3JlYXRpbmcgR2F0ZXdheSBBdXRob3JpemVyc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2F0ZXdheUF1dGhvcml6ZXIge1xuICAvKipcbiAgICogQVdTIElBTSBhdXRob3JpemVyIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQXdzSWFtKCk6IElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gICAgcmV0dXJuIG5ldyBJYW1BdXRob3JpemVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY3VzdG9tIEpXVCBhdXRob3JpemVyXG4gICAqIEBwYXJhbSBjb25maWd1cmF0aW9uIC0gVGhlIEpXVCBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIElHYXRld2F5QXV0aG9yaXplckNvbmZpZyBjb25maWd1cmVkIGZvciBjdXN0b20gSldUXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQ3VzdG9tSnd0KGNvbmZpZ3VyYXRpb246IEN1c3RvbUp3dENvbmZpZ3VyYXRpb24pOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcge1xuICAgIC8vIEF0IGxlYXN0IG9uZSBvZiBhbGxvd2VkQXVkaWVuY2UsIGFsbG93ZWRDbGllbnRzLCBhbGxvd2VkU2NvcGVzLCBvciBjdXN0b21DbGFpbXMgbXVzdCBiZSBkZWZpbmVkIGZvciBDVVNUT01fSldUIGF1dGhvcml6ZXJcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uYWxsb3dlZEF1ZGllbmNlICYmICFjb25maWd1cmF0aW9uLmFsbG93ZWRDbGllbnRzICYmICFjb25maWd1cmF0aW9uLmFsbG93ZWRTY29wZXMgJiYgIWNvbmZpZ3VyYXRpb24uY3VzdG9tQ2xhaW1zKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YEN1c3RvbUp3dENvbmZpZ3VyYXRpb25SZXF1aXJlZGAsICdBdCBsZWFzdCBvbmUgb2YgYWxsb3dlZEF1ZGllbmNlLCBhbGxvd2VkQ2xpZW50cywgYWxsb3dlZFNjb3Blcywgb3IgY3VzdG9tQ2xhaW1zIG11c3QgYmUgZGVmaW5lZCBmb3IgQ1VTVE9NX0pXVCBhdXRob3JpemVyJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ3VzdG9tSnd0QXV0aG9yaXplcihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBKV1QgYXV0aG9yaXplciBmcm9tIENvZ25pdG8gVXNlciBQb29sXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBDb2duaXRvIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQ3VzdG9tSnd0QXV0aG9yaXplciBjb25maWd1cmVkIGZvciBDb2duaXRvXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQ29nbml0byhwcm9wczogQ29nbml0b0F1dGhvcml6ZXJQcm9wcyk6IElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJsID0gYGh0dHBzOi8vY29nbml0by1pZHAuJHtwcm9wcy51c2VyUG9vbC5lbnYucmVnaW9ufS5hbWF6b25hd3MuY29tLyR7cHJvcHMudXNlclBvb2wudXNlclBvb2xJZH0vLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gO1xuXG4gICAgcmV0dXJuIG5ldyBDdXN0b21Kd3RBdXRob3JpemVyKHtcbiAgICAgIGRpc2NvdmVyeVVybDogZGlzY292ZXJ5VXJsLFxuICAgICAgYWxsb3dlZENsaWVudHM6IHByb3BzLmFsbG93ZWRDbGllbnRzPy5mbGF0TWFwKChjbGllbnQpID0+IGNsaWVudC51c2VyUG9vbENsaWVudElkKSxcbiAgICAgIGFsbG93ZWRBdWRpZW5jZTogcHJvcHMuYWxsb3dlZEF1ZGllbmNlcyxcbiAgICAgIGFsbG93ZWRTY29wZXM6IHByb3BzLmFsbG93ZWRTY29wZXMsXG4gICAgICBjdXN0b21DbGFpbXM6IHByb3BzLmN1c3RvbUNsYWltcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -17,6 +17,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
17
17
|
*/
|
|
18
18
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
19
19
|
const errors_1 = require("aws-cdk-lib/core/lib/errors");
|
|
20
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
20
21
|
const types_1 = require("../../common/types");
|
|
21
22
|
/**
|
|
22
23
|
* Represents a custom claim validation configuration for Gateway JWT authorizers.
|
|
@@ -28,7 +29,7 @@ class GatewayCustomClaim {
|
|
|
28
29
|
valueType;
|
|
29
30
|
operator;
|
|
30
31
|
value;
|
|
31
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayCustomClaim", version: "2.
|
|
32
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayCustomClaim", version: "2.248.0-alpha.0" };
|
|
32
33
|
/**
|
|
33
34
|
* Create a custom claim with a string value.
|
|
34
35
|
* String claims must use the EQUALS operator.
|
|
@@ -61,7 +62,7 @@ class GatewayCustomClaim {
|
|
|
61
62
|
}
|
|
62
63
|
// Validate operator is valid for STRING_ARRAY type
|
|
63
64
|
if (operator !== types_1.CustomClaimOperator.CONTAINS && operator !== types_1.CustomClaimOperator.CONTAINS_ANY) {
|
|
64
|
-
throw new errors_1.UnscopedValidationError(
|
|
65
|
+
throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `CustomClaimOperatorInvalid`, `Custom claim '${name}': STRING_ARRAY type only supports CONTAINS or CONTAINS_ANY operators, got ${operator}`);
|
|
65
66
|
}
|
|
66
67
|
return new GatewayCustomClaim(name, types_1.CustomClaimValueType.STRING_ARRAY, operator, values);
|
|
67
68
|
}
|
|
@@ -75,10 +76,10 @@ class GatewayCustomClaim {
|
|
|
75
76
|
}
|
|
76
77
|
// Validate that value matches the valueType
|
|
77
78
|
if (valueType === types_1.CustomClaimValueType.STRING && typeof value !== 'string') {
|
|
78
|
-
throw new errors_1.UnscopedValidationError(
|
|
79
|
+
throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `CustomClaimStringTypeInvalid`, `Custom claim '${name}': STRING type requires a string value, got ${typeof value}`);
|
|
79
80
|
}
|
|
80
81
|
if (valueType === types_1.CustomClaimValueType.STRING_ARRAY && !Array.isArray(value)) {
|
|
81
|
-
throw new errors_1.UnscopedValidationError(
|
|
82
|
+
throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `CustomClaimStringArrayTypeInvalid`, `Custom claim '${name}': STRING_ARRAY type requires an array value, got ${typeof value}`);
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
/**
|
|
@@ -100,7 +101,7 @@ class GatewayCustomClaim {
|
|
|
100
101
|
// CONTAINS requires a single string value (check if claim array contains this string)
|
|
101
102
|
const values = this.value;
|
|
102
103
|
if (!aws_cdk_lib_1.Token.isUnresolved(values[0]) && values.length !== 1) {
|
|
103
|
-
throw new errors_1.UnscopedValidationError(
|
|
104
|
+
throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `CustomClaimContainsOperatorInvalid`, `Custom claim '${this.name}': CONTAINS operator requires exactly one value, got ${values.length} values`);
|
|
104
105
|
}
|
|
105
106
|
claimMatchValue = {
|
|
106
107
|
matchValueString: values[0],
|
|
@@ -124,4 +125,4 @@ class GatewayCustomClaim {
|
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
exports.GatewayCustomClaim = GatewayCustomClaim;
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNsYWltLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3VzdG9tLWNsYWltLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw2Q0FBb0M7QUFFcEMsd0RBQXNFO0FBQ3RFLDhDQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBa0I7SUFzQ1Y7SUFDQTtJQUNBO0lBQ0E7O0lBeENuQjs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUN2RCxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLDRCQUFvQixDQUFDLE1BQU0sRUFBRSwyQkFBbUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDckc7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsSUFBWSxFQUNaLE1BQWdCLEVBQ2hCLFdBQWdDLDJCQUFtQixDQUFDLFFBQVE7Ozs7Ozs7Ozs7UUFFNUQsbURBQW1EO1FBQ25ELElBQUksUUFBUSxLQUFLLDJCQUFtQixDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssMkJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0YsTUFBTSxJQUFJLGdDQUF1QixDQUMvQiw0QkFBNEIsRUFDNUIsaUJBQWlCLElBQUksOEVBQThFLFFBQVEsRUFBRSxDQUM5RyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsNEJBQW9CLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUMxRjtJQUVELFlBQ21CLElBQVksRUFDWixTQUErQixFQUMvQixRQUE2QixFQUM3QixLQUF3QjtRQUh4QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDN0IsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFFekMsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU87UUFDVCxDQUFDO1FBQ0QsNENBQTRDO1FBQzVDLElBQUksU0FBUyxLQUFLLDRCQUFvQixDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzRSxNQUFNLElBQUksZ0NBQXVCLENBQUMsOEJBQThCLEVBQUUsaUJBQWlCLElBQUksK0NBQStDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4SixDQUFDO1FBQ0QsSUFBSSxTQUFTLEtBQUssNEJBQW9CLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdFLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxtQ0FBbUMsRUFBRSxpQkFBaUIsSUFBSSxxREFBcUQsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25LLENBQUM7S0FDRjtJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWiwrREFBK0Q7UUFDL0QsSUFBSSxlQUF1RCxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyw0QkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuRCxnRUFBZ0U7WUFDaEUsZUFBZSxHQUFHO2dCQUNoQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBZTthQUN2QyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTiw0RkFBNEY7WUFDNUYsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLDJCQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuRCxzRkFBc0Y7Z0JBQ3RGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFpQixDQUFDO2dCQUN0QyxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDMUQsTUFBTSxJQUFJLGdDQUF1QixDQUMvQixvQ0FBb0MsRUFDcEMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLHdEQUF3RCxNQUFNLENBQUMsTUFBTSxTQUFTLENBQ3pHLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxlQUFlLEdBQUc7b0JBQ2hCLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzVCLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04seUNBQXlDO2dCQUN6QyxlQUFlLEdBQUc7b0JBQ2hCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxLQUFpQjtpQkFDN0MsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTztZQUNMLHFCQUFxQixFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxTQUFTO1lBQzFDLDBCQUEwQixFQUFFO2dCQUMxQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDakMsZUFBZSxFQUFFLGVBQWU7YUFDakM7U0FDRixDQUFDO0tBQ0g7O0FBakdILGdEQWtHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDZm5HYXRld2F5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHsgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9lcnJvcnMnO1xuaW1wb3J0IHsgQ3VzdG9tQ2xhaW1PcGVyYXRvciwgQ3VzdG9tQ2xhaW1WYWx1ZVR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vdHlwZXMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjdXN0b20gY2xhaW0gdmFsaWRhdGlvbiBjb25maWd1cmF0aW9uIGZvciBHYXRld2F5IEpXVCBhdXRob3JpemVycy5cbiAqIEN1c3RvbSBjbGFpbXMgYWxsb3cgeW91IHRvIHZhbGlkYXRlIGFkZGl0aW9uYWwgZmllbGRzIGluIEpXVCB0b2tlbnMgYmV5b25kXG4gKiB0aGUgc3RhbmRhcmQgYXVkaWVuY2UsIGNsaWVudCwgYW5kIHNjb3BlIHZhbGlkYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgR2F0ZXdheUN1c3RvbUNsYWltIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGN1c3RvbSBjbGFpbSB3aXRoIGEgc3RyaW5nIHZhbHVlLlxuICAgKiBTdHJpbmcgY2xhaW1zIG11c3QgdXNlIHRoZSBFUVVBTFMgb3BlcmF0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjbGFpbSBpbiB0aGUgSldUIHRva2VuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgc3RyaW5nIHZhbHVlIHRvIG1hdGNoIChtdXN0IGV4YWN0bHkgZXF1YWwpXG4gICAqIEByZXR1cm5zIEEgR2F0ZXdheUN1c3RvbUNsYWltIGNvbmZpZ3VyZWQgZm9yIHN0cmluZyB2YWxpZGF0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBHYXRld2F5Q3VzdG9tQ2xhaW0ge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheUN1c3RvbUNsYWltKG5hbWUsIEN1c3RvbUNsYWltVmFsdWVUeXBlLlNUUklORywgQ3VzdG9tQ2xhaW1PcGVyYXRvci5FUVVBTFMsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjdXN0b20gY2xhaW0gd2l0aCBhIHN0cmluZyBhcnJheSB2YWx1ZS5cbiAgICogU3RyaW5nIGFycmF5IGNsYWltcyBjYW4gdXNlIENPTlRBSU5TIChkZWZhdWx0KSBvciBDT05UQUlOU19BTlkgb3BlcmF0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjbGFpbSBpbiB0aGUgSldUIHRva2VuXG4gICAqIEBwYXJhbSB2YWx1ZXMgVGhlIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMgdG8gbWF0Y2guIEZvciBDT05UQUlOUyBvcGVyYXRvciwgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIHZhbHVlLlxuICAgKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG1hdGNoIG9wZXJhdG9yIChkZWZhdWx0cyB0byBDT05UQUlOUylcbiAgICogQHJldHVybnMgQSBHYXRld2F5Q3VzdG9tQ2xhaW0gY29uZmlndXJlZCBmb3Igc3RyaW5nIGFycmF5IHZhbGlkYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aFN0cmluZ0FycmF5VmFsdWUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlczogc3RyaW5nW10sXG4gICAgb3BlcmF0b3I6IEN1c3RvbUNsYWltT3BlcmF0b3IgPSBDdXN0b21DbGFpbU9wZXJhdG9yLkNPTlRBSU5TLFxuICApOiBHYXRld2F5Q3VzdG9tQ2xhaW0ge1xuICAgIC8vIFZhbGlkYXRlIG9wZXJhdG9yIGlzIHZhbGlkIGZvciBTVFJJTkdfQVJSQVkgdHlwZVxuICAgIGlmIChvcGVyYXRvciAhPT0gQ3VzdG9tQ2xhaW1PcGVyYXRvci5DT05UQUlOUyAmJiBvcGVyYXRvciAhPT0gQ3VzdG9tQ2xhaW1PcGVyYXRvci5DT05UQUlOU19BTlkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ0N1c3RvbUNsYWltT3BlcmF0b3JJbnZhbGlkJyxcbiAgICAgICAgYEN1c3RvbSBjbGFpbSAnJHtuYW1lfSc6IFNUUklOR19BUlJBWSB0eXBlIG9ubHkgc3VwcG9ydHMgQ09OVEFJTlMgb3IgQ09OVEFJTlNfQU5ZIG9wZXJhdG9ycywgZ290ICR7b3BlcmF0b3J9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgR2F0ZXdheUN1c3RvbUNsYWltKG5hbWUsIEN1c3RvbUNsYWltVmFsdWVUeXBlLlNUUklOR19BUlJBWSwgb3BlcmF0b3IsIHZhbHVlcyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsdWVUeXBlOiBDdXN0b21DbGFpbVZhbHVlVHlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZXJhdG9yOiBDdXN0b21DbGFpbU9wZXJhdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICApIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBWYWxpZGF0ZSB0aGF0IHZhbHVlIG1hdGNoZXMgdGhlIHZhbHVlVHlwZVxuICAgIGlmICh2YWx1ZVR5cGUgPT09IEN1c3RvbUNsYWltVmFsdWVUeXBlLlNUUklORyAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoJ0N1c3RvbUNsYWltU3RyaW5nVHlwZUludmFsaWQnLCBgQ3VzdG9tIGNsYWltICcke25hbWV9JzogU1RSSU5HIHR5cGUgcmVxdWlyZXMgYSBzdHJpbmcgdmFsdWUsIGdvdCAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlVHlwZSA9PT0gQ3VzdG9tQ2xhaW1WYWx1ZVR5cGUuU1RSSU5HX0FSUkFZICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdDdXN0b21DbGFpbVN0cmluZ0FycmF5VHlwZUludmFsaWQnLCBgQ3VzdG9tIGNsYWltICcke25hbWV9JzogU1RSSU5HX0FSUkFZIHR5cGUgcmVxdWlyZXMgYW4gYXJyYXkgdmFsdWUsIGdvdCAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBjdXN0b20gY2xhaW0gYXMgYSBDbG91ZEZvcm1hdGlvbiBwcm9wZXJ0eVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmbkdhdGV3YXkuQ3VzdG9tQ2xhaW1WYWxpZGF0aW9uVHlwZVByb3BlcnR5IHtcbiAgICAvLyBCdWlsZCB0aGUgY2xhaW0gbWF0Y2ggdmFsdWUgYmFzZWQgb24gb3BlcmF0b3IgYW5kIHZhbHVlIHR5cGVcbiAgICBsZXQgY2xhaW1NYXRjaFZhbHVlOiBDZm5HYXRld2F5LkNsYWltTWF0Y2hWYWx1ZVR5cGVQcm9wZXJ0eTtcbiAgICBpZiAodGhpcy52YWx1ZVR5cGUgPT09IEN1c3RvbUNsYWltVmFsdWVUeXBlLlNUUklORykge1xuICAgICAgLy8gU1RSSU5HIHR5cGUgYWx3YXlzIHVzZXMgbWF0Y2hWYWx1ZVN0cmluZyB3aXRoIEVRVUFMUyBvcGVyYXRvclxuICAgICAgY2xhaW1NYXRjaFZhbHVlID0ge1xuICAgICAgICBtYXRjaFZhbHVlU3RyaW5nOiB0aGlzLnZhbHVlIGFzIHN0cmluZyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNUUklOR19BUlJBWSB0eXBlOiBDT05UQUlOUyB1c2VzIG1hdGNoVmFsdWVTdHJpbmcsIENPTlRBSU5TX0FOWSB1c2VzIG1hdGNoVmFsdWVTdHJpbmdMaXN0XG4gICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gQ3VzdG9tQ2xhaW1PcGVyYXRvci5DT05UQUlOUykge1xuICAgICAgICAvLyBDT05UQUlOUyByZXF1aXJlcyBhIHNpbmdsZSBzdHJpbmcgdmFsdWUgKGNoZWNrIGlmIGNsYWltIGFycmF5IGNvbnRhaW5zIHRoaXMgc3RyaW5nKVxuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnZhbHVlIGFzIHN0cmluZ1tdO1xuICAgICAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZXNbMF0pICYmIHZhbHVlcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAnQ3VzdG9tQ2xhaW1Db250YWluc09wZXJhdG9ySW52YWxpZCcsXG4gICAgICAgICAgICBgQ3VzdG9tIGNsYWltICcke3RoaXMubmFtZX0nOiBDT05UQUlOUyBvcGVyYXRvciByZXF1aXJlcyBleGFjdGx5IG9uZSB2YWx1ZSwgZ290ICR7dmFsdWVzLmxlbmd0aH0gdmFsdWVzYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNsYWltTWF0Y2hWYWx1ZSA9IHtcbiAgICAgICAgICBtYXRjaFZhbHVlU3RyaW5nOiB2YWx1ZXNbMF0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDT05UQUlOU19BTlkgdXNlcyBtYXRjaFZhbHVlU3RyaW5nTGlzdFxuICAgICAgICBjbGFpbU1hdGNoVmFsdWUgPSB7XG4gICAgICAgICAgbWF0Y2hWYWx1ZVN0cmluZ0xpc3Q6IHRoaXMudmFsdWUgYXMgc3RyaW5nW10sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGluYm91bmRUb2tlbkNsYWltTmFtZTogdGhpcy5uYW1lLFxuICAgICAgaW5ib3VuZFRva2VuQ2xhaW1WYWx1ZVR5cGU6IHRoaXMudmFsdWVUeXBlLFxuICAgICAgYXV0aG9yaXppbmdDbGFpbU1hdGNoVmFsdWU6IHtcbiAgICAgICAgY2xhaW1NYXRjaE9wZXJhdG9yOiB0aGlzLm9wZXJhdG9yLFxuICAgICAgICBjbGFpbU1hdGNoVmFsdWU6IGNsYWltTWF0Y2hWYWx1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNsYWltLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3VzdG9tLWNsYWltLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw2Q0FBb0M7QUFFcEMsd0RBQXNFO0FBQ3RFLDRFQUE0RDtBQUM1RCw4Q0FBK0U7QUFFL0U7Ozs7R0FJRztBQUNILE1BQWEsa0JBQWtCO0lBc0NWO0lBQ0E7SUFDQTtJQUNBOztJQXhDbkI7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDdkQsT0FBTyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSw0QkFBb0IsQ0FBQyxNQUFNLEVBQUUsMkJBQW1CLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3JHO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQ2hDLElBQVksRUFDWixNQUFnQixFQUNoQixXQUFnQywyQkFBbUIsQ0FBQyxRQUFROzs7Ozs7Ozs7O1FBRTVELG1EQUFtRDtRQUNuRCxJQUFJLFFBQVEsS0FBSywyQkFBbUIsQ0FBQyxRQUFRLElBQUksUUFBUSxLQUFLLDJCQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQy9GLE1BQU0sSUFBSSxnQ0FBdUIsQ0FDL0IsSUFBQSxzQkFBRyxFQUFBLDRCQUE0QixFQUMvQixpQkFBaUIsSUFBSSw4RUFBOEUsUUFBUSxFQUFFLENBQzlHLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSw0QkFBb0IsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzFGO0lBRUQsWUFDbUIsSUFBWSxFQUNaLFNBQStCLEVBQy9CLFFBQTZCLEVBQzdCLEtBQXdCO1FBSHhCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUV6QyxJQUFJLG1CQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFDRCw0Q0FBNEM7UUFDNUMsSUFBSSxTQUFTLEtBQUssNEJBQW9CLENBQUMsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNFLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxJQUFBLHNCQUFHLEVBQUEsOEJBQThCLEVBQUUsaUJBQWlCLElBQUksK0NBQStDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzSixDQUFDO1FBQ0QsSUFBSSxTQUFTLEtBQUssNEJBQW9CLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdFLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxJQUFBLHNCQUFHLEVBQUEsbUNBQW1DLEVBQUUsaUJBQWlCLElBQUkscURBQXFELE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN0SyxDQUFDO0tBQ0Y7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1osK0RBQStEO1FBQy9ELElBQUksZUFBdUQsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssNEJBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkQsZ0VBQWdFO1lBQ2hFLGVBQWUsR0FBRztnQkFDaEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQWU7YUFDdkMsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sNEZBQTRGO1lBQzVGLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSywyQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkQsc0ZBQXNGO2dCQUN0RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBaUIsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzFELE1BQU0sSUFBSSxnQ0FBdUIsQ0FDL0IsSUFBQSxzQkFBRyxFQUFBLG9DQUFvQyxFQUN2QyxpQkFBaUIsSUFBSSxDQUFDLElBQUksd0RBQXdELE1BQU0sQ0FBQyxNQUFNLFNBQVMsQ0FDekcsQ0FBQztnQkFDSixDQUFDO2dCQUNELGVBQWUsR0FBRztvQkFDaEIsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDNUIsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTix5Q0FBeUM7Z0JBQ3pDLGVBQWUsR0FBRztvQkFDaEIsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQWlCO2lCQUM3QyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPO1lBQ0wscUJBQXFCLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDaEMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDMUMsMEJBQTBCLEVBQUU7Z0JBQzFCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUNqQyxlQUFlLEVBQUUsZUFBZTthQUNqQztTQUNGLENBQUM7S0FDSDs7QUFqR0gsZ0RBa0dDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IENmbkdhdGV3YXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgeyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IEN1c3RvbUNsYWltT3BlcmF0b3IsIEN1c3RvbUNsYWltVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3R5cGVzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY3VzdG9tIGNsYWltIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbiBmb3IgR2F0ZXdheSBKV1QgYXV0aG9yaXplcnMuXG4gKiBDdXN0b20gY2xhaW1zIGFsbG93IHlvdSB0byB2YWxpZGF0ZSBhZGRpdGlvbmFsIGZpZWxkcyBpbiBKV1QgdG9rZW5zIGJleW9uZFxuICogdGhlIHN0YW5kYXJkIGF1ZGllbmNlLCBjbGllbnQsIGFuZCBzY29wZSB2YWxpZGF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdhdGV3YXlDdXN0b21DbGFpbSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjdXN0b20gY2xhaW0gd2l0aCBhIHN0cmluZyB2YWx1ZS5cbiAgICogU3RyaW5nIGNsYWltcyBtdXN0IHVzZSB0aGUgRVFVQUxTIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2xhaW0gaW4gdGhlIEpXVCB0b2tlblxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB2YWx1ZSB0byBtYXRjaCAobXVzdCBleGFjdGx5IGVxdWFsKVxuICAgKiBAcmV0dXJucyBBIEdhdGV3YXlDdXN0b21DbGFpbSBjb25maWd1cmVkIGZvciBzdHJpbmcgdmFsaWRhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoU3RyaW5nVmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogR2F0ZXdheUN1c3RvbUNsYWltIHtcbiAgICByZXR1cm4gbmV3IEdhdGV3YXlDdXN0b21DbGFpbShuYW1lLCBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkcsIEN1c3RvbUNsYWltT3BlcmF0b3IuRVFVQUxTLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY3VzdG9tIGNsYWltIHdpdGggYSBzdHJpbmcgYXJyYXkgdmFsdWUuXG4gICAqIFN0cmluZyBhcnJheSBjbGFpbXMgY2FuIHVzZSBDT05UQUlOUyAoZGVmYXVsdCkgb3IgQ09OVEFJTlNfQU5ZIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2xhaW0gaW4gdGhlIEpXVCB0b2tlblxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSBvZiBzdHJpbmcgdmFsdWVzIHRvIG1hdGNoLiBGb3IgQ09OVEFJTlMgb3BlcmF0b3IsIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSB2YWx1ZS5cbiAgICogQHBhcmFtIG9wZXJhdG9yIFRoZSBtYXRjaCBvcGVyYXRvciAoZGVmYXVsdHMgdG8gQ09OVEFJTlMpXG4gICAqIEByZXR1cm5zIEEgR2F0ZXdheUN1c3RvbUNsYWltIGNvbmZpZ3VyZWQgZm9yIHN0cmluZyBhcnJheSB2YWxpZGF0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhTdHJpbmdBcnJheVZhbHVlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHN0cmluZ1tdLFxuICAgIG9wZXJhdG9yOiBDdXN0b21DbGFpbU9wZXJhdG9yID0gQ3VzdG9tQ2xhaW1PcGVyYXRvci5DT05UQUlOUyxcbiAgKTogR2F0ZXdheUN1c3RvbUNsYWltIHtcbiAgICAvLyBWYWxpZGF0ZSBvcGVyYXRvciBpcyB2YWxpZCBmb3IgU1RSSU5HX0FSUkFZIHR5cGVcbiAgICBpZiAob3BlcmF0b3IgIT09IEN1c3RvbUNsYWltT3BlcmF0b3IuQ09OVEFJTlMgJiYgb3BlcmF0b3IgIT09IEN1c3RvbUNsYWltT3BlcmF0b3IuQ09OVEFJTlNfQU5ZKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBDdXN0b21DbGFpbU9wZXJhdG9ySW52YWxpZGAsXG4gICAgICAgIGBDdXN0b20gY2xhaW0gJyR7bmFtZX0nOiBTVFJJTkdfQVJSQVkgdHlwZSBvbmx5IHN1cHBvcnRzIENPTlRBSU5TIG9yIENPTlRBSU5TX0FOWSBvcGVyYXRvcnMsIGdvdCAke29wZXJhdG9yfWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEdhdGV3YXlDdXN0b21DbGFpbShuYW1lLCBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkdfQVJSQVksIG9wZXJhdG9yLCB2YWx1ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlVHlwZTogQ3VzdG9tQ2xhaW1WYWx1ZVR5cGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcGVyYXRvcjogQ3VzdG9tQ2xhaW1PcGVyYXRvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKSB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVmFsaWRhdGUgdGhhdCB2YWx1ZSBtYXRjaGVzIHRoZSB2YWx1ZVR5cGVcbiAgICBpZiAodmFsdWVUeXBlID09PSBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkcgJiYgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBDdXN0b21DbGFpbVN0cmluZ1R5cGVJbnZhbGlkYCwgYEN1c3RvbSBjbGFpbSAnJHtuYW1lfSc6IFNUUklORyB0eXBlIHJlcXVpcmVzIGEgc3RyaW5nIHZhbHVlLCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZVR5cGUgPT09IEN1c3RvbUNsYWltVmFsdWVUeXBlLlNUUklOR19BUlJBWSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQ3VzdG9tQ2xhaW1TdHJpbmdBcnJheVR5cGVJbnZhbGlkYCwgYEN1c3RvbSBjbGFpbSAnJHtuYW1lfSc6IFNUUklOR19BUlJBWSB0eXBlIHJlcXVpcmVzIGFuIGFycmF5IHZhbHVlLCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgY3VzdG9tIGNsYWltIGFzIGEgQ2xvdWRGb3JtYXRpb24gcHJvcGVydHlcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5HYXRld2F5LkN1c3RvbUNsYWltVmFsaWRhdGlvblR5cGVQcm9wZXJ0eSB7XG4gICAgLy8gQnVpbGQgdGhlIGNsYWltIG1hdGNoIHZhbHVlIGJhc2VkIG9uIG9wZXJhdG9yIGFuZCB2YWx1ZSB0eXBlXG4gICAgbGV0IGNsYWltTWF0Y2hWYWx1ZTogQ2ZuR2F0ZXdheS5DbGFpbU1hdGNoVmFsdWVUeXBlUHJvcGVydHk7XG4gICAgaWYgKHRoaXMudmFsdWVUeXBlID09PSBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkcpIHtcbiAgICAgIC8vIFNUUklORyB0eXBlIGFsd2F5cyB1c2VzIG1hdGNoVmFsdWVTdHJpbmcgd2l0aCBFUVVBTFMgb3BlcmF0b3JcbiAgICAgIGNsYWltTWF0Y2hWYWx1ZSA9IHtcbiAgICAgICAgbWF0Y2hWYWx1ZVN0cmluZzogdGhpcy52YWx1ZSBhcyBzdHJpbmcsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTVFJJTkdfQVJSQVkgdHlwZTogQ09OVEFJTlMgdXNlcyBtYXRjaFZhbHVlU3RyaW5nLCBDT05UQUlOU19BTlkgdXNlcyBtYXRjaFZhbHVlU3RyaW5nTGlzdFxuICAgICAgaWYgKHRoaXMub3BlcmF0b3IgPT09IEN1c3RvbUNsYWltT3BlcmF0b3IuQ09OVEFJTlMpIHtcbiAgICAgICAgLy8gQ09OVEFJTlMgcmVxdWlyZXMgYSBzaW5nbGUgc3RyaW5nIHZhbHVlIChjaGVjayBpZiBjbGFpbSBhcnJheSBjb250YWlucyB0aGlzIHN0cmluZylcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy52YWx1ZSBhcyBzdHJpbmdbXTtcbiAgICAgICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWVzWzBdKSAmJiB2YWx1ZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgbGl0YEN1c3RvbUNsYWltQ29udGFpbnNPcGVyYXRvckludmFsaWRgLFxuICAgICAgICAgICAgYEN1c3RvbSBjbGFpbSAnJHt0aGlzLm5hbWV9JzogQ09OVEFJTlMgb3BlcmF0b3IgcmVxdWlyZXMgZXhhY3RseSBvbmUgdmFsdWUsIGdvdCAke3ZhbHVlcy5sZW5ndGh9IHZhbHVlc2AsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjbGFpbU1hdGNoVmFsdWUgPSB7XG4gICAgICAgICAgbWF0Y2hWYWx1ZVN0cmluZzogdmFsdWVzWzBdLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ09OVEFJTlNfQU5ZIHVzZXMgbWF0Y2hWYWx1ZVN0cmluZ0xpc3RcbiAgICAgICAgY2xhaW1NYXRjaFZhbHVlID0ge1xuICAgICAgICAgIG1hdGNoVmFsdWVTdHJpbmdMaXN0OiB0aGlzLnZhbHVlIGFzIHN0cmluZ1tdLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpbmJvdW5kVG9rZW5DbGFpbU5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGluYm91bmRUb2tlbkNsYWltVmFsdWVUeXBlOiB0aGlzLnZhbHVlVHlwZSxcbiAgICAgIGF1dGhvcml6aW5nQ2xhaW1NYXRjaFZhbHVlOiB7XG4gICAgICAgIGNsYWltTWF0Y2hPcGVyYXRvcjogdGhpcy5vcGVyYXRvcixcbiAgICAgICAgY2xhaW1NYXRjaFZhbHVlOiBjbGFpbU1hdGNoVmFsdWUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -34,7 +34,7 @@ var InterceptionPoint;
|
|
|
34
34
|
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-interceptors.html
|
|
35
35
|
*/
|
|
36
36
|
class LambdaInterceptor {
|
|
37
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LambdaInterceptor", version: "2.
|
|
37
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LambdaInterceptor", version: "2.248.0-alpha.0" };
|
|
38
38
|
/**
|
|
39
39
|
* Create a REQUEST interceptor that executes before the gateway calls the target
|
|
40
40
|
*
|
|
@@ -19,7 +19,7 @@ var ApiKeyCredentialLocationType;
|
|
|
19
19
|
* API Key location within the request
|
|
20
20
|
*/
|
|
21
21
|
class ApiKeyCredentialLocation {
|
|
22
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiKeyCredentialLocation", version: "2.
|
|
22
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiKeyCredentialLocation", version: "2.248.0-alpha.0" };
|
|
23
23
|
/**
|
|
24
24
|
* Create a header-based API key credential location
|
|
25
25
|
* @param config - Optional configuration for the credential location
|
|
@@ -31,7 +31,7 @@ var CredentialProviderType;
|
|
|
31
31
|
* Factory class for creating different Gateway Credential Providers
|
|
32
32
|
*/
|
|
33
33
|
class GatewayCredentialProvider {
|
|
34
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayCredentialProvider", version: "2.
|
|
34
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayCredentialProvider", version: "2.248.0-alpha.0" };
|
|
35
35
|
/**
|
|
36
36
|
* Create an API key credential provider from Identity ARN
|
|
37
37
|
* Use this method when you have the Identity ARN as a string
|