@btc-embedded/cdk-extensions 0.23.5 → 0.23.7

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.
Files changed (71) hide show
  1. package/.githooks/pre-commit +2 -0
  2. package/.jsii +583 -13
  3. package/API.md +880 -49
  4. package/CHANGELOG.md +26 -0
  5. package/assets/cli/catnip.js +2 -2
  6. package/assets/test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda/index.js +13 -122
  7. package/assets/test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda/index.js +13 -122
  8. package/assets/test/constructs/api-keys/integration/api-key-management-runner.lambda/index.js +67 -122
  9. package/assets/test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda/index.js +13 -122
  10. package/lib/constructs/EventPipe.js +3 -4
  11. package/lib/constructs/ExportedService.js +7 -4
  12. package/lib/constructs/S3Bucket.js +2 -4
  13. package/lib/constructs/SecureRestApi.js +7 -4
  14. package/lib/constructs/SecureRestApiV2.js +5 -4
  15. package/lib/constructs/api-keys/ApiKeyClientAuthorization.js +3 -4
  16. package/lib/constructs/api-keys/ApiKeyManagement.js +6 -4
  17. package/lib/constructs/api-keys/ApiKeyPreTokenHandler.js +2 -4
  18. package/lib/constructs/api-keys/ApiKeyStore.js +4 -4
  19. package/lib/constructs/api-keys/lambdas/api-client-authorization-function.d.ts +0 -5
  20. package/lib/constructs/api-keys/lambdas/api-client-authorization-function.js +37 -5
  21. package/lib/constructs/api-keys/lambdas/api-key-creation-function.d.ts +0 -5
  22. package/lib/constructs/api-keys/lambdas/api-key-creation-function.js +37 -5
  23. package/lib/constructs/api-keys/lambdas/api-key-update-function.d.ts +0 -5
  24. package/lib/constructs/api-keys/lambdas/api-key-update-function.js +37 -5
  25. package/lib/constructs/api-keys/lambdas/pre-token-function.d.ts +0 -5
  26. package/lib/constructs/api-keys/lambdas/pre-token-function.js +37 -5
  27. package/lib/constructs/api-keys/lambdas/pre-token.lambda.js +5 -2
  28. package/lib/extensions/ApiGatewayExtension.js +3 -4
  29. package/lib/extensions/ApplicationContainer.js +3 -4
  30. package/lib/extensions/ApplicationLoadBalancerExtension.js +9 -4
  31. package/lib/extensions/ApplicationLoadBalancerExtensionV2.js +3 -4
  32. package/lib/extensions/CloudMapExtension.js +9 -4
  33. package/lib/extensions/DeactivatableServiceExtension.js +2 -4
  34. package/lib/extensions/DeploymentConfigExtension.js +3 -4
  35. package/lib/extensions/DocumentDbAccessExtension.js +39 -5
  36. package/lib/extensions/DomainEventMessagingExtension.js +8 -6
  37. package/lib/extensions/EfsMountExtension.js +6 -4
  38. package/lib/extensions/ExecExtension.js +3 -1
  39. package/lib/extensions/ExtraContainerExtension.js +38 -5
  40. package/lib/extensions/HTTPApiExtension.js +3 -4
  41. package/lib/extensions/LogExtension.js +40 -5
  42. package/lib/extensions/ModifyContainerDefinitionExtension.js +4 -4
  43. package/lib/extensions/ModifyTaskDefinitionExtension.js +3 -4
  44. package/lib/extensions/OpenIdExtension.js +44 -5
  45. package/lib/extensions/OpenTelemetryExtension.js +4 -4
  46. package/lib/extensions/PostgresDbAccessExtension.js +50 -5
  47. package/lib/extensions/SharedVolumeExtension.js +4 -4
  48. package/lib/extensions/TcpKeepAliveExtension.js +4 -4
  49. package/lib/platform/ApiGateway.js +20 -18
  50. package/lib/platform/ApiGatewayVpcLink.js +19 -23
  51. package/lib/platform/ApplicationLoadBalancer.js +4 -4
  52. package/lib/platform/ApplicationLoadBalancerV2.d.ts +1 -0
  53. package/lib/platform/ApplicationLoadBalancerV2.js +41 -37
  54. package/lib/platform/AuroraPostgresDB.js +80 -40
  55. package/lib/platform/BTCLogGroup.js +7 -9
  56. package/lib/platform/CognitoUserPool.js +45 -45
  57. package/lib/platform/DefaultUserPoolClients.js +4 -4
  58. package/lib/platform/DocumentDB.js +20 -21
  59. package/lib/platform/EcsCluster.js +15 -19
  60. package/lib/platform/EfsFileSystem.js +4 -4
  61. package/lib/platform/HostedZone.js +17 -21
  62. package/lib/platform/PrivateDnsNamespace.js +23 -27
  63. package/lib/platform/ResourceServer.js +4 -4
  64. package/lib/platform/Vpc.js +23 -24
  65. package/lib/platform/VpcV2.js +11 -15
  66. package/lib/stacks/ApplicationStack.js +2 -4
  67. package/lib/utils/BasePlatformStackResolver.js +2 -4
  68. package/lib/utils/StackParameter.js +4 -4
  69. package/lib/utils/configFileParsing.js +37 -4
  70. package/package.json +72 -65
  71. package/renovate.json5 +4 -2
@@ -1,13 +1,45 @@
1
1
  "use strict";
2
- var _a, _b;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
3
35
  Object.defineProperty(exports, "__esModule", { value: true });
4
36
  exports.AuroraPostgresCluster = exports.AuroraPostgresClusterBase = void 0;
5
37
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const cdk = require("aws-cdk-lib");
38
+ const cdk = __importStar(require("aws-cdk-lib"));
7
39
  const aws_cdk_lib_1 = require("aws-cdk-lib");
8
40
  const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
9
41
  const aws_iam_1 = require("aws-cdk-lib/aws-iam");
10
- const rds = require("aws-cdk-lib/aws-rds");
42
+ const rds = __importStar(require("aws-cdk-lib/aws-rds"));
11
43
  const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
12
44
  const constructs_1 = require("constructs");
13
45
  const utils_1 = require("../utils");
@@ -16,10 +48,9 @@ const utils_1 = require("../utils");
16
48
  * import class created by {@link AuroraPostgresCluster.fromBasePlatform}.
17
49
  */
18
50
  class AuroraPostgresClusterBase extends constructs_1.Construct {
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@btc-embedded/cdk-extensions.AuroraPostgresClusterBase", version: "0.23.7" };
19
52
  }
20
53
  exports.AuroraPostgresClusterBase = AuroraPostgresClusterBase;
21
- _a = JSII_RTTI_SYMBOL_1;
22
- AuroraPostgresClusterBase[_a] = { fqn: "@btc-embedded/cdk-extensions.AuroraPostgresClusterBase", version: "0.23.5" };
23
54
  /**
24
55
  * Provisions an Aurora PostgreSQL Serverless v2 cluster and exports connection metadata.
25
56
  *
@@ -31,6 +62,7 @@ AuroraPostgresClusterBase[_a] = { fqn: "@btc-embedded/cdk-extensions.AuroraPostg
31
62
  * - `aurora-postgres-db:tunnel-instance-id` (only when tunnel host is enabled)
32
63
  */
33
64
  class AuroraPostgresCluster extends AuroraPostgresClusterBase {
65
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@btc-embedded/cdk-extensions.AuroraPostgresCluster", version: "0.23.7" };
34
66
  /**
35
67
  * Imports an {@link IAuroraPostgresDB} instance from a base platform stack.
36
68
  *
@@ -45,16 +77,51 @@ class AuroraPostgresCluster extends AuroraPostgresClusterBase {
45
77
  */
46
78
  static fromBasePlatform(scope, id, basePlatformStackName) {
47
79
  class Import extends AuroraPostgresClusterBase {
48
- constructor() {
49
- super(...arguments);
50
- this.credentialsSecret = aws_secretsmanager_1.Secret.fromSecretCompleteArn(this, "CredentialsSecret", AuroraPostgresCluster.credentialsSecretArnParameter.import(scope, basePlatformStackName));
51
- this.connectionSecret = aws_secretsmanager_1.Secret.fromSecretCompleteArn(this, "ConnectionSecret", AuroraPostgresCluster.secretArnParameter.import(scope, basePlatformStackName));
52
- this.endpoint = AuroraPostgresCluster.clusterEndpointParameter.import(scope, basePlatformStackName);
53
- this.securityGroup = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "SecurityGroup", AuroraPostgresCluster.securityGroupIdParameter.import(scope, basePlatformStackName));
54
- }
80
+ credentialsSecret = aws_secretsmanager_1.Secret.fromSecretCompleteArn(this, "CredentialsSecret", AuroraPostgresCluster.credentialsSecretArnParameter.import(scope, basePlatformStackName));
81
+ connectionSecret = aws_secretsmanager_1.Secret.fromSecretCompleteArn(this, "ConnectionSecret", AuroraPostgresCluster.secretArnParameter.import(scope, basePlatformStackName));
82
+ endpoint = AuroraPostgresCluster.clusterEndpointParameter.import(scope, basePlatformStackName);
83
+ securityGroup = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "SecurityGroup", AuroraPostgresCluster.securityGroupIdParameter.import(scope, basePlatformStackName));
55
84
  }
56
85
  return new Import(scope, id);
57
86
  }
87
+ static secretArnParameter = new utils_1.StackParameter({
88
+ name: "Aurora PostgresDB Secret ARN",
89
+ key: "secret-arn",
90
+ prefix: "aurora-postgres-db",
91
+ });
92
+ static credentialsSecretArnParameter = new utils_1.StackParameter({
93
+ name: "Aurora PostgresDB credentials Secret ARN",
94
+ key: "credentials-secret-arn",
95
+ prefix: "aurora-postgres-db",
96
+ });
97
+ static clusterEndpointParameter = new utils_1.StackParameter({
98
+ name: "Aurora PostgresDB Cluster host:port Endpoint",
99
+ key: "cluster-endpoint",
100
+ prefix: "aurora-postgres-db",
101
+ });
102
+ static securityGroupIdParameter = new utils_1.StackParameter({
103
+ name: "Aurora PostgresDB Security Group Id",
104
+ key: "security-group-id",
105
+ prefix: "aurora-postgres-db",
106
+ });
107
+ static tunnelInstanceIdParameter = new utils_1.StackParameter({
108
+ name: "Aurora PostgresDB Tunnel Host Instance Id",
109
+ key: "tunnel-instance-id",
110
+ prefix: "aurora-postgres-db",
111
+ });
112
+ /** Aurora database cluster. */
113
+ cluster;
114
+ /** Security group attached to the Aurora cluster. */
115
+ securityGroup;
116
+ /** Secret containing postgres credentials (username and password). */
117
+ credentialsSecret;
118
+ /**
119
+ * Secret containing the postgres connection string prefix in the form
120
+ * `postgresql://user:pass@host:port/`.
121
+ */
122
+ connectionSecret;
123
+ /** Cluster endpoint in the form `host:port`. */
124
+ endpoint;
58
125
  constructor(scope, id, props) {
59
126
  super(scope, id);
60
127
  const username = "postgres";
@@ -153,31 +220,4 @@ class AuroraPostgresCluster extends AuroraPostgresClusterBase {
153
220
  }
154
221
  }
155
222
  exports.AuroraPostgresCluster = AuroraPostgresCluster;
156
- _b = JSII_RTTI_SYMBOL_1;
157
- AuroraPostgresCluster[_b] = { fqn: "@btc-embedded/cdk-extensions.AuroraPostgresCluster", version: "0.23.5" };
158
- AuroraPostgresCluster.secretArnParameter = new utils_1.StackParameter({
159
- name: "Aurora PostgresDB Secret ARN",
160
- key: "secret-arn",
161
- prefix: "aurora-postgres-db",
162
- });
163
- AuroraPostgresCluster.credentialsSecretArnParameter = new utils_1.StackParameter({
164
- name: "Aurora PostgresDB credentials Secret ARN",
165
- key: "credentials-secret-arn",
166
- prefix: "aurora-postgres-db",
167
- });
168
- AuroraPostgresCluster.clusterEndpointParameter = new utils_1.StackParameter({
169
- name: "Aurora PostgresDB Cluster host:port Endpoint",
170
- key: "cluster-endpoint",
171
- prefix: "aurora-postgres-db",
172
- });
173
- AuroraPostgresCluster.securityGroupIdParameter = new utils_1.StackParameter({
174
- name: "Aurora PostgresDB Security Group Id",
175
- key: "security-group-id",
176
- prefix: "aurora-postgres-db",
177
- });
178
- AuroraPostgresCluster.tunnelInstanceIdParameter = new utils_1.StackParameter({
179
- name: "Aurora PostgresDB Tunnel Host Instance Id",
180
- key: "tunnel-instance-id",
181
- prefix: "aurora-postgres-db",
182
- });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVyb3JhUG9zdGdyZXNEQi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbGF0Zm9ybS9BdXJvcmFQb3N0Z3Jlc0RCLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDZDQUFvQztBQUNwQyxpREFhNkI7QUFDN0IsaURBQTRFO0FBQzVFLDJDQUEyQztBQUMzQyx1RUFBaUU7QUFDakUsMkNBQXVDO0FBQ3ZDLG9DQUEwQztBQXlJMUM7OztHQUdHO0FBQ0gsTUFBc0IseUJBQ3BCLFNBQVEsc0JBQVM7O0FBRG5CLDhEQVFDOzs7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLHlCQUF5QjtJQUNsRTs7Ozs7Ozs7Ozs7T0FXRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDNUIsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLHFCQUE4QjtRQUU5QixNQUFNLE1BQU8sU0FBUSx5QkFBeUI7WUFBOUM7O2dCQUNXLHNCQUFpQixHQUFHLDJCQUFNLENBQUMscUJBQXFCLENBQ3ZELElBQUksRUFDSixtQkFBbUIsRUFDbkIscUJBQXFCLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUN4RCxLQUFLLEVBQ0wscUJBQXFCLENBQ3RCLENBQ0YsQ0FBQztnQkFDTyxxQkFBZ0IsR0FBRywyQkFBTSxDQUFDLHFCQUFxQixDQUN0RCxJQUFJLEVBQ0osa0JBQWtCLEVBQ2xCLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FDN0MsS0FBSyxFQUNMLHFCQUFxQixDQUN0QixDQUNGLENBQUM7Z0JBQ08sYUFBUSxHQUFHLHFCQUFxQixDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FDdkUsS0FBSyxFQUNMLHFCQUFxQixDQUN0QixDQUFDO2dCQUNPLGtCQUFhLEdBQUcsdUJBQWEsQ0FBQyxtQkFBbUIsQ0FDeEQsSUFBSSxFQUNKLGVBQWUsRUFDZixxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQ25E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QjtDQUM3QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBTdGFnZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQW1hem9uTGludXhDcHVUeXBlLFxuICBJbnN0YW5jZSxcbiAgSW5zdGFuY2VDbGFzcyxcbiAgSW5zdGFuY2VTaXplLFxuICBJbnN0YW5jZVR5cGUsXG4gIEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSxcbiAgSVNlY3VyaXR5R3JvdXAsXG4gIElWcGMsXG4gIFBvcnQsXG4gIFNlY3VyaXR5R3JvdXAsXG4gIFN1Ym5ldFNlbGVjdGlvbixcbiAgU3VibmV0VHlwZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IE1hbmFnZWRQb2xpY3ksIFJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgcmRzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtcmRzXCI7XG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU3RhY2tQYXJhbWV0ZXIgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuLyoqXG4gKiBPcHRpb25hbCBzZXR0aW5ncyBmb3IgdGhlIFNTTS1tYW5hZ2VkIHR1bm5lbCBob3N0IHVzZWQgYnkgYGNhdG5pcCBwZy10dW5uZWxgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVBvc3RncmVzVHVubmVsSG9zdFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBkZWRpY2F0ZWQgRUMyIHR1bm5lbCBob3N0IHNob3VsZCBiZSBwcm92aXNpb25lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSB0eXBlIHVzZWQgZm9yIHRoZSB0dW5uZWwgaG9zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdDRnLm5hbm9cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IEluc3RhbmNlVHlwZTtcblxuICAvKipcbiAgICogU3VibmV0IHR5cGUgd2hlcmUgdGhlIHR1bm5lbCBob3N0IHdpbGwgYmUgcGxhY2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNyZWF0ZSBTU00gaW50ZXJmYWNlIGVuZHBvaW50cyBpbiB0aGUgVlBDIChzc20sIHNzbW1lc3NhZ2VzLCBlYzJtZXNzYWdlcykuXG4gICAqXG4gICAqIFVzZWZ1bCBmb3IgZW52aXJvbm1lbnRzIHdpdGhvdXQgTkFUIGludGVybmV0IGVncmVzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZVNzbVZwY0VuZHBvaW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBDUFUgdHlwZSBmb3IgdGhlIHR1bm5lbCBob3N0LiBTZXQgaXQgdG8gbWF0Y2ggdGhlIHtAbGluayBBdXJvcmFQb3N0Z3Jlc1R1bm5lbEhvc3RQcm9wcy5pbnN0YW5jZVR5cGV9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbWF6b25MaW51eENwdVR5cGUuQVJNXzY0XG4gICAqL1xuICByZWFkb25seSBjcHVUeXBlPzogQW1hem9uTGludXhDcHVUeXBlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHtAbGluayBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVBvc3RncmVzQ2x1c3RlclByb3BzIHtcbiAgLyoqIFZQQyB0byBkZXBsb3kgdGhlIEF1cm9yYSBjbHVzdGVyIGludG8uICovXG4gIHJlYWRvbmx5IHZwYzogSVZwYztcblxuICAvKipcbiAgICogSW5zdGFuY2UgbmFtZSB1c2VkIGZvciB0aGUgb3B0aW9uYWwgdHVubmVsIGhvc3QuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgQXVyb3JhIGNsdXN0ZXIgb3ZlcnJpZGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlclByb3BzPzogQXVyb3JhUG9zdGdyZXNDbHVzdGVyT3ZlcnJpZGVzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzZXR0aW5ncyBmb3IgdGhlIHR1bm5lbCBob3N0LlxuICAgKi9cbiAgcmVhZG9ubHkgdHVubmVsSG9zdD86IEF1cm9yYVBvc3RncmVzVHVubmVsSG9zdFByb3BzO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UgZW5naW5lIHRvIGJlIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBlbmdpbmVWZXJzaW9uOiByZHMuQXVyb3JhUG9zdGdyZXNFbmdpbmVWZXJzaW9uO1xufVxuXG4vKipcbiAqIFN1cHBvcnRlZCBvdmVycmlkZSBvcHRpb25zIGZvciBBdXJvcmEgY2x1c3RlciB0dW5pbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVyb3JhUG9zdGdyZXNDbHVzdGVyT3ZlcnJpZGVzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIERCIGNsdXN0ZXIgaWRlbnRpZmllci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBnZW5lcmF0ZWQgYnkgQ0RLXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogU3VibmV0cyB1c2VkIGZvciBjbHVzdGVyIGluc3RhbmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGNhcGFjaXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJsZXNzVjJNaW5DYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSBBdXJvcmEgU2VydmVybGVzcyB2MiBjYXBhY2l0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVybGVzc1YyTWF4Q2FwYWNpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc3RvcmFnZSBlbmNyeXB0aW9uIHNob3VsZCBiZSBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlRW5jcnlwdGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQdWJsaWMgaW50ZXJmYWNlIGZvciBhbiBBdXJvcmEgUG9zdGdyZVNRTCBkYXRhYmFzZSBjb21wb25lbnQuXG4gKlxuICogSW1wbGVtZW50ZWQgYnkgYm90aCB0aGUgY29uY3JldGUge0BsaW5rIEF1cm9yYVBvc3RncmVzQ2x1c3Rlcn0gKHNhbWUtc3RhY2sgdXNhZ2UpIGFuZFxuICogdGhlIGltcG9ydCByZXR1cm5lZCBieSB7QGxpbmsgQXVyb3JhUG9zdGdyZXNDbHVzdGVyLmZyb21CYXNlUGxhdGZvcm19IChjcm9zcy1zdGFjayB1c2FnZSkuXG4gKiBFeHRlbnNpb25zIHN1Y2ggYXMge0BsaW5rIFBvc3RncmVzRGJBY2Nlc3NFeHRlbnNpb259IGFjY2VwdCB0aGlzIGludGVyZmFjZSBzbyB0aGV5IHdvcmtcbiAqIGluIGVpdGhlciBkZXBsb3ltZW50IHRvcG9sb2d5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBdXJvcmFQb3N0Z3Jlc0RCIHtcbiAgLyoqIFNlY3JldCBjb250YWluaW5nIHBvc3RncmVzIGNyZWRlbnRpYWxzICh1c2VybmFtZSBhbmQgcGFzc3dvcmQpLiAqL1xuICByZWFkb25seSBjcmVkZW50aWFsc1NlY3JldDogSVNlY3JldDtcblxuICAvKipcbiAgICogU2VjcmV0IGNvbnRhaW5pbmcgdGhlIHBvc3RncmVzIGNvbm5lY3Rpb24gc3RyaW5nIHByZWZpeCBpbiB0aGUgZm9ybVxuICAgKiBgcG9zdGdyZXNxbDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvYC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25TZWNyZXQ6IElTZWNyZXQ7XG5cbiAgLyoqIENsdXN0ZXIgZW5kcG9pbnQgaW4gdGhlIGZvcm0gYGhvc3Q6cG9ydGAuICovXG4gIHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqIFNlY3VyaXR5IGdyb3VwIGF0dGFjaGVkIHRvIHRoZSBBdXJvcmEgY2x1c3Rlci4gKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXA7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBzaGFyZWQgYnkgdGhlIGNvbmNyZXRlIHtAbGluayBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJ9IGFuZCB0aGVcbiAqIGltcG9ydCBjbGFzcyBjcmVhdGVkIGJ5IHtAbGluayBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXIuZnJvbUJhc2VQbGF0Zm9ybX0uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJCYXNlXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSUF1cm9yYVBvc3RncmVzREJcbntcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY3JlZGVudGlhbHNTZWNyZXQ6IElTZWNyZXQ7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbm5lY3Rpb25TZWNyZXQ6IElTZWNyZXQ7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG4gIGFic3RyYWN0IHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA6IElTZWN1cml0eUdyb3VwO1xufVxuXG4vKipcbiAqIFByb3Zpc2lvbnMgYW4gQXVyb3JhIFBvc3RncmVTUUwgU2VydmVybGVzcyB2MiBjbHVzdGVyIGFuZCBleHBvcnRzIGNvbm5lY3Rpb24gbWV0YWRhdGEuXG4gKlxuICogRXhwb3J0czpcbiAqIC0gYGF1cm9yYS1wb3N0Z3Jlcy1kYjpzZWNyZXQtYXJuYFxuICogLSBgYXVyb3JhLXBvc3RncmVzLWRiOmNyZWRlbnRpYWxzLXNlY3JldC1hcm5gXG4gKiAtIGBhdXJvcmEtcG9zdGdyZXMtZGI6Y2x1c3Rlci1lbmRwb2ludGBcbiAqIC0gYGF1cm9yYS1wb3N0Z3Jlcy1kYjpzZWN1cml0eS1ncm91cC1pZGBcbiAqIC0gYGF1cm9yYS1wb3N0Z3Jlcy1kYjp0dW5uZWwtaW5zdGFuY2UtaWRgIChvbmx5IHdoZW4gdHVubmVsIGhvc3QgaXMgZW5hYmxlZClcbiAqL1xuZXhwb3J0IGNsYXNzIEF1cm9yYVBvc3RncmVzQ2x1c3RlciBleHRlbmRzIEF1cm9yYVBvc3RncmVzQ2x1c3RlckJhc2Uge1xuICAvKipcbiAgICogSW1wb3J0cyBhbiB7QGxpbmsgSUF1cm9yYVBvc3RncmVzREJ9IGluc3RhbmNlIGZyb20gYSBiYXNlIHBsYXRmb3JtIHN0YWNrLlxuICAgKlxuICAgKiBVc2UgdGhpcyBmb3IgY3Jvc3Mtc3RhY2sgYWNjZXNzLiBGb3Igc2FtZS1zdGFjayB1c2FnZSwgcGFzcyB0aGVcbiAgICoge0BsaW5rIEF1cm9yYVBvc3RncmVzQ2x1c3Rlcn0gY29uc3RydWN0IGRpcmVjdGx5IHdoZXJlIHtAbGluayBJQXVyb3JhUG9zdGdyZXNEQn1cbiAgICogaXMgZXhwZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBDb25zdHJ1Y3Qgc2NvcGUgdG8gYXR0YWNoIHRoZSBpbXBvcnRlZCBjb21wb25lbnQgdG8uXG4gICAqIEBwYXJhbSBpZCBDb25zdHJ1Y3QgaWQgZm9yIHRoZSBpbXBvcnRlZCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBiYXNlUGxhdGZvcm1TdGFja05hbWUgQmFzZSBwbGF0Zm9ybSBzdGFjayBuYW1lLiBGYWxscyBiYWNrIHRvXG4gICAqICAgYEJhc2VQbGF0Zm9ybVN0YWNrUmVzb2x2ZXJgIChDREsgY29udGV4dCkgd2hlbiBvbWl0dGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQmFzZVBsYXRmb3JtKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBiYXNlUGxhdGZvcm1TdGFja05hbWU/OiBzdHJpbmcsXG4gICk6IElBdXJvcmFQb3N0Z3Jlc0RCIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJCYXNlIHtcbiAgICAgIHJlYWRvbmx5IGNyZWRlbnRpYWxzU2VjcmV0ID0gU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDcmVkZW50aWFsc1NlY3JldFwiLFxuICAgICAgICBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXIuY3JlZGVudGlhbHNTZWNyZXRBcm5QYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICByZWFkb25seSBjb25uZWN0aW9uU2VjcmV0ID0gU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb25uZWN0aW9uU2VjcmV0XCIsXG4gICAgICAgIEF1cm9yYVBvc3RncmVzQ2x1c3Rlci5zZWNyZXRBcm5QYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICByZWFkb25seSBlbmRwb2ludCA9IEF1cm9yYVBvc3RncmVzQ2x1c3Rlci5jbHVzdGVyRW5kcG9pbnRQYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICBzY29wZSxcbiAgICAgICAgYmFzZVBsYXRmb3JtU3RhY2tOYW1lLFxuICAgICAgKTtcbiAgICAgIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXAgPSBTZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiU2VjdXJpdHlHcm91cFwiLFxuICAgICAgICBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXIuc2VjdXJpdHlHcm91cElkUGFyYW1ldGVyLmltcG9ydChcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBiYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBzZWNyZXRBcm5QYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQXVyb3JhIFBvc3RncmVzREIgU2VjcmV0IEFSTlwiLFxuICAgIGtleTogXCJzZWNyZXQtYXJuXCIsXG4gICAgcHJlZml4OiBcImF1cm9yYS1wb3N0Z3Jlcy1kYlwiLFxuICB9KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjcmVkZW50aWFsc1NlY3JldEFyblBhcmFtZXRlciA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgbmFtZTogXCJBdXJvcmEgUG9zdGdyZXNEQiBjcmVkZW50aWFscyBTZWNyZXQgQVJOXCIsXG4gICAga2V5OiBcImNyZWRlbnRpYWxzLXNlY3JldC1hcm5cIixcbiAgICBwcmVmaXg6IFwiYXVyb3JhLXBvc3RncmVzLWRiXCIsXG4gIH0pO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNsdXN0ZXJFbmRwb2ludFBhcmFtZXRlciA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgbmFtZTogXCJBdXJvcmEgUG9zdGdyZXNEQiBDbHVzdGVyIGhvc3Q6cG9ydCBFbmRwb2ludFwiLFxuICAgIGtleTogXCJjbHVzdGVyLWVuZHBvaW50XCIsXG4gICAgcHJlZml4OiBcImF1cm9yYS1wb3N0Z3Jlcy1kYlwiLFxuICB9KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBzZWN1cml0eUdyb3VwSWRQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQXVyb3JhIFBvc3RncmVzREIgU2VjdXJpdHkgR3JvdXAgSWRcIixcbiAgICBrZXk6IFwic2VjdXJpdHktZ3JvdXAtaWRcIixcbiAgICBwcmVmaXg6IFwiYXVyb3JhLXBvc3RncmVzLWRiXCIsXG4gIH0pO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHR1bm5lbEluc3RhbmNlSWRQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQXVyb3JhIFBvc3RncmVzREIgVHVubmVsIEhvc3QgSW5zdGFuY2UgSWRcIixcbiAgICBrZXk6IFwidHVubmVsLWluc3RhbmNlLWlkXCIsXG4gICAgcHJlZml4OiBcImF1cm9yYS1wb3N0Z3Jlcy1kYlwiLFxuICB9KTtcblxuICAvKiogQXVyb3JhIGRhdGFiYXNlIGNsdXN0ZXIuICovXG4gIHB1YmxpYyByZWFkb25seSBjbHVzdGVyOiByZHMuRGF0YWJhc2VDbHVzdGVyO1xuXG4gIC8qKiBTZWN1cml0eSBncm91cCBhdHRhY2hlZCB0byB0aGUgQXVyb3JhIGNsdXN0ZXIuICovXG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuXG4gIC8qKiBTZWNyZXQgY29udGFpbmluZyBwb3N0Z3JlcyBjcmVkZW50aWFscyAodXNlcm5hbWUgYW5kIHBhc3N3b3JkKS4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxzU2VjcmV0OiBJU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBTZWNyZXQgY29udGFpbmluZyB0aGUgcG9zdGdyZXMgY29ubmVjdGlvbiBzdHJpbmcgcHJlZml4IGluIHRoZSBmb3JtXG4gICAqIGBwb3N0Z3Jlc3FsOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9gLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25TZWNyZXQ6IElTZWNyZXQ7XG5cbiAgLyoqIENsdXN0ZXIgZW5kcG9pbnQgaW4gdGhlIGZvcm0gYGhvc3Q6cG9ydGAuICovXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB1c2VybmFtZSA9IFwicG9zdGdyZXNcIjtcbiAgICBjb25zdCB0dW5uZWxIb3N0ID0gcHJvcHMudHVubmVsSG9zdCA/PyB7fTtcbiAgICBjb25zdCBkYlNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBcIkF1cm9yYVNHXCIsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY3JlZGVudGlhbHNTZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIFwiREJDcmVkZW50aWFsc1NlY3JldFwiLCB7XG4gICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoeyB1c2VybmFtZSB9KSxcbiAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICBpbmNsdWRlU3BhY2U6IGZhbHNlLFxuICAgICAgICBnZW5lcmF0ZVN0cmluZ0tleTogXCJwYXNzd29yZFwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgcmRzLkRhdGFiYXNlQ2x1c3Rlcih0aGlzLCBcIlNlcnZlcmxlc3NDbHVzdGVyXCIsIHtcbiAgICAgIGVuZ2luZTogcmRzLkRhdGFiYXNlQ2x1c3RlckVuZ2luZS5hdXJvcmFQb3N0Z3Jlcyh7XG4gICAgICAgIHZlcnNpb246IHByb3BzLmVuZ2luZVZlcnNpb24sXG4gICAgICB9KSxcbiAgICAgIHBhcmFtZXRlckdyb3VwOiByZHMuUGFyYW1ldGVyR3JvdXAuZnJvbVBhcmFtZXRlckdyb3VwTmFtZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJQYXJhbWV0ZXJHcm91cFwiLFxuICAgICAgICBgZGVmYXVsdC5hdXJvcmEtcG9zdGdyZXNxbCR7cHJvcHMuZW5naW5lVmVyc2lvbi5hdXJvcmFQb3N0Z3Jlc01ham9yVmVyc2lvbn1gLFxuICAgICAgKSxcbiAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgIHVzZXJuYW1lLFxuICAgICAgICBwYXNzd29yZDogY3JlZGVudGlhbHNTZWNyZXQuc2VjcmV0VmFsdWVGcm9tSnNvbihcInBhc3N3b3JkXCIpLFxuICAgICAgfSxcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgd3JpdGVyOiByZHMuQ2x1c3Rlckluc3RhbmNlLnNlcnZlcmxlc3NWMihcIndyaXRlclwiKSxcbiAgICAgIHNlcnZlcmxlc3NWMk1pbkNhcGFjaXR5OiBwcm9wcy5jbHVzdGVyUHJvcHM/LnNlcnZlcmxlc3NWMk1pbkNhcGFjaXR5ID8/IDAsXG4gICAgICBzZXJ2ZXJsZXNzVjJNYXhDYXBhY2l0eTogcHJvcHMuY2x1c3RlclByb3BzPy5zZXJ2ZXJsZXNzVjJNYXhDYXBhY2l0eSA/PyAxLFxuICAgICAgc2VjdXJpdHlHcm91cHM6IFtkYlNlY3VyaXR5R3JvdXBdLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMuY2x1c3RlclByb3BzPy52cGNTdWJuZXRzID8/IHtcbiAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTLFxuICAgICAgfSxcbiAgICAgIHN0b3JhZ2VFbmNyeXB0ZWQ6IHByb3BzLmNsdXN0ZXJQcm9wcz8uc3RvcmFnZUVuY3J5cHRlZCA/PyB0cnVlLFxuICAgICAgY2x1c3RlcklkZW50aWZpZXI6IHByb3BzLmNsdXN0ZXJQcm9wcz8uY2x1c3RlcklkZW50aWZpZXIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb25uZWN0aW9uU2VjcmV0ID0gbmV3IFNlY3JldCh0aGlzLCBcIkRCQ2x1c3RlclNlY3JldFwiLCB7XG4gICAgICBzZWNyZXRTdHJpbmdWYWx1ZTogbmV3IGNkay5TZWNyZXRWYWx1ZShcbiAgICAgICAgYHBvc3RncmVzcWw6Ly8ke3VzZXJuYW1lfToke2NyZWRlbnRpYWxzU2VjcmV0LnNlY3JldFZhbHVlRnJvbUpzb24oXG4gICAgICAgICAgXCJwYXNzd29yZFwiLFxuICAgICAgICApfUAke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50Lmhvc3RuYW1lfToke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50LnBvcnR9L2AsXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgQXVyb3JhUG9zdGdyZXNDbHVzdGVyLnNlY3JldEFyblBhcmFtZXRlci5leHBvcnQoXG4gICAgICB0aGlzLFxuICAgICAgY29ubmVjdGlvblNlY3JldC5zZWNyZXRBcm4sXG4gICAgKTtcbiAgICBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXIuY3JlZGVudGlhbHNTZWNyZXRBcm5QYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIGNyZWRlbnRpYWxzU2VjcmV0LnNlY3JldEFybixcbiAgICApO1xuICAgIEF1cm9yYVBvc3RncmVzQ2x1c3Rlci5jbHVzdGVyRW5kcG9pbnRQYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIGAke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50Lmhvc3RuYW1lfToke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50LnBvcnR9YCxcbiAgICApO1xuICAgIEF1cm9yYVBvc3RncmVzQ2x1c3Rlci5zZWN1cml0eUdyb3VwSWRQYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIGRiU2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWQsXG4gICAgKTtcblxuICAgIGlmICh0dW5uZWxIb3N0LmVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHR1bm5lbEhvc3RTZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgXCJUdW5uZWxIb3N0U0dcIiwge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIH0pO1xuICAgICAgZGJTZWN1cml0eUdyb3VwLmNvbm5lY3Rpb25zLmFsbG93RnJvbShcbiAgICAgICAgdHVubmVsSG9zdFNlY3VyaXR5R3JvdXAsXG4gICAgICAgIFBvcnQudGNwKGNsdXN0ZXIuY2x1c3RlckVuZHBvaW50LnBvcnQpLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHVubmVsSG9zdFJvbGUgPSBuZXcgUm9sZSh0aGlzLCBcIlR1bm5lbEhvc3RSb2xlXCIsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbChcImVjMi5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICAgIFwiQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZVwiLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKHR1bm5lbEhvc3QuY3JlYXRlU3NtVnBjRW5kcG9pbnRzKSB7XG4gICAgICAgIHByb3BzLnZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludChcIlNzbUVuZHBvaW50XCIsIHtcbiAgICAgICAgICBzZXJ2aWNlOiBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1NNLFxuICAgICAgICAgIHN1Ym5ldHM6IHtcbiAgICAgICAgICAgIHN1Ym5ldFR5cGU6IHR1bm5lbEhvc3Quc3VibmV0VHlwZSA/PyBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb3BzLnZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludChcIlNzbU1lc3NhZ2VzRW5kcG9pbnRcIiwge1xuICAgICAgICAgIHNlcnZpY2U6IEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5TU01fTUVTU0FHRVMsXG4gICAgICAgICAgc3VibmV0czoge1xuICAgICAgICAgICAgc3VibmV0VHlwZTogdHVubmVsSG9zdC5zdWJuZXRUeXBlID8/IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvcHMudnBjLmFkZEludGVyZmFjZUVuZHBvaW50KFwiRWMyTWVzc2FnZXNFbmRwb2ludFwiLCB7XG4gICAgICAgICAgc2VydmljZTogSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkVDMl9NRVNTQUdFUyxcbiAgICAgICAgICBzdWJuZXRzOiB7XG4gICAgICAgICAgICBzdWJuZXRUeXBlOiB0dW5uZWxIb3N0LnN1Ym5ldFR5cGUgPz8gU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0dW5uZWxJbnN0YW5jZSA9IG5ldyBJbnN0YW5jZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYFR1bm5lbEhvc3Qke1N0YWdlLm9mKHRoaXMpPy5zdGFnZU5hbWUgPz8gXCJcIn1gLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgICAgbWFjaGluZUltYWdlOiBjZGsuYXdzX2VjMi5NYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyMDIzKHtcbiAgICAgICAgICAgIGNwdVR5cGU6IHR1bm5lbEhvc3QuY3B1VHlwZSA/PyBBbWF6b25MaW51eENwdVR5cGUuQVJNXzY0LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGluc3RhbmNlVHlwZTpcbiAgICAgICAgICAgIHR1bm5lbEhvc3QuaW5zdGFuY2VUeXBlID8/XG4gICAgICAgICAgICBJbnN0YW5jZVR5cGUub2YoSW5zdGFuY2VDbGFzcy5UNEcsIEluc3RhbmNlU2l6ZS5OQU5PKSxcbiAgICAgICAgICByZXF1aXJlSW1kc3YyOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHR1bm5lbEhvc3RSb2xlLFxuICAgICAgICAgIHNlY3VyaXR5R3JvdXA6IHR1bm5lbEhvc3RTZWN1cml0eUdyb3VwLFxuICAgICAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgICAgIHN1Ym5ldFR5cGU6IHR1bm5lbEhvc3Quc3VibmV0VHlwZSA/PyBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbnN0YW5jZU5hbWU6IHByb3BzLmluc3RhbmNlTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIEF1cm9yYVBvc3RncmVzQ2x1c3Rlci50dW5uZWxJbnN0YW5jZUlkUGFyYW1ldGVyLmV4cG9ydChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdHVubmVsSW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5jbHVzdGVyID0gY2x1c3RlcjtcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXAgPSBkYlNlY3VyaXR5R3JvdXA7XG4gICAgdGhpcy5jcmVkZW50aWFsc1NlY3JldCA9IGNyZWRlbnRpYWxzU2VjcmV0O1xuICAgIHRoaXMuY29ubmVjdGlvblNlY3JldCA9IGNvbm5lY3Rpb25TZWNyZXQ7XG4gICAgdGhpcy5lbmRwb2ludCA9IGAke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50Lmhvc3RuYW1lfToke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50LnBvcnR9YDtcbiAgfVxufVxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVyb3JhUG9zdGdyZXNEQi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbGF0Zm9ybS9BdXJvcmFQb3N0Z3Jlc0RCLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFDbkMsNkNBQW9DO0FBQ3BDLGlEQWE2QjtBQUM3QixpREFBNEU7QUFDNUUseURBQTJDO0FBQzNDLHVFQUFpRTtBQUNqRSwyQ0FBdUM7QUFDdkMsb0NBQTBDO0FBeUkxQzs7O0dBR0c7QUFDSCxNQUFzQix5QkFDcEIsU0FBUSxzQkFBUzs7O0FBRG5CLDhEQVFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSx5QkFBeUI7O0lBQ2xFOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUM1QixLQUFnQixFQUNoQixFQUFVLEVBQ1YscUJBQThCO1FBRTlCLE1BQU0sTUFBTyxTQUFRLHlCQUF5QjtZQUNuQyxpQkFBaUIsR0FBRywyQkFBTSxDQUFDLHFCQUFxQixDQUN2RCxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLHFCQUFxQixDQUFDLDZCQUE2QixDQUFDLE1BQU0sQ0FDeEQsS0FBSyxFQUNMLHFCQUFxQixDQUN0QixDQUNGLENBQUM7WUFDTyxnQkFBZ0IsR0FBRywyQkFBTSxDQUFDLHFCQUFxQixDQUN0RCxJQUFJLEVBQ0osa0JBQWtCLEVBQ2xCLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FDN0MsS0FBSyxFQUNMLHFCQUFxQixDQUN0QixDQUNGLENBQUM7WUFDTyxRQUFRLEdBQUcscUJBQXFCLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUN2RSxLQUFLLEVBQ0wscUJBQXFCLENBQ3RCLENBQUM7WUFDTyxhQUFhLEdBQUcsdUJBQWEsQ0FBQyxtQkFBbUIsQ0FDeEQsSUFBSSxFQUNKLGVBQWUsRUFDZixxQkFBcUIsQ0FBQyx3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QWEsR0FBRyxlQUFlLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RixDQUFDOztBQS9PSCxzREFnUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBTdGFnZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQW1hem9uTGludXhDcHVUeXBlLFxuICBJbnN0YW5jZSxcbiAgSW5zdGFuY2VDbGFzcyxcbiAgSW5zdGFuY2VTaXplLFxuICBJbnN0YW5jZVR5cGUsXG4gIEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSxcbiAgSVNlY3VyaXR5R3JvdXAsXG4gIElWcGMsXG4gIFBvcnQsXG4gIFNlY3VyaXR5R3JvdXAsXG4gIFN1Ym5ldFNlbGVjdGlvbixcbiAgU3VibmV0VHlwZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IE1hbmFnZWRQb2xpY3ksIFJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgcmRzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtcmRzXCI7XG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU3RhY2tQYXJhbWV0ZXIgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuLyoqXG4gKiBPcHRpb25hbCBzZXR0aW5ncyBmb3IgdGhlIFNTTS1tYW5hZ2VkIHR1bm5lbCBob3N0IHVzZWQgYnkgYGNhdG5pcCBwZy10dW5uZWxgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVBvc3RncmVzVHVubmVsSG9zdFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBkZWRpY2F0ZWQgRUMyIHR1bm5lbCBob3N0IHNob3VsZCBiZSBwcm92aXNpb25lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSB0eXBlIHVzZWQgZm9yIHRoZSB0dW5uZWwgaG9zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdDRnLm5hbm9cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IEluc3RhbmNlVHlwZTtcblxuICAvKipcbiAgICogU3VibmV0IHR5cGUgd2hlcmUgdGhlIHR1bm5lbCBob3N0IHdpbGwgYmUgcGxhY2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNyZWF0ZSBTU00gaW50ZXJmYWNlIGVuZHBvaW50cyBpbiB0aGUgVlBDIChzc20sIHNzbW1lc3NhZ2VzLCBlYzJtZXNzYWdlcykuXG4gICAqXG4gICAqIFVzZWZ1bCBmb3IgZW52aXJvbm1lbnRzIHdpdGhvdXQgTkFUIGludGVybmV0IGVncmVzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZVNzbVZwY0VuZHBvaW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBDUFUgdHlwZSBmb3IgdGhlIHR1bm5lbCBob3N0LiBTZXQgaXQgdG8gbWF0Y2ggdGhlIHtAbGluayBBdXJvcmFQb3N0Z3Jlc1R1bm5lbEhvc3RQcm9wcy5pbnN0YW5jZVR5cGV9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbWF6b25MaW51eENwdVR5cGUuQVJNXzY0XG4gICAqL1xuICByZWFkb25seSBjcHVUeXBlPzogQW1hem9uTGludXhDcHVUeXBlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHtAbGluayBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVBvc3RncmVzQ2x1c3RlclByb3BzIHtcbiAgLyoqIFZQQyB0byBkZXBsb3kgdGhlIEF1cm9yYSBjbHVzdGVyIGludG8uICovXG4gIHJlYWRvbmx5IHZwYzogSVZwYztcblxuICAvKipcbiAgICogSW5zdGFuY2UgbmFtZSB1c2VkIGZvciB0aGUgb3B0aW9uYWwgdHVubmVsIGhvc3QuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgQXVyb3JhIGNsdXN0ZXIgb3ZlcnJpZGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlclByb3BzPzogQXVyb3JhUG9zdGdyZXNDbHVzdGVyT3ZlcnJpZGVzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzZXR0aW5ncyBmb3IgdGhlIHR1bm5lbCBob3N0LlxuICAgKi9cbiAgcmVhZG9ubHkgdHVubmVsSG9zdD86IEF1cm9yYVBvc3RncmVzVHVubmVsSG9zdFByb3BzO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UgZW5naW5lIHRvIGJlIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBlbmdpbmVWZXJzaW9uOiByZHMuQXVyb3JhUG9zdGdyZXNFbmdpbmVWZXJzaW9uO1xufVxuXG4vKipcbiAqIFN1cHBvcnRlZCBvdmVycmlkZSBvcHRpb25zIGZvciBBdXJvcmEgY2x1c3RlciB0dW5pbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVyb3JhUG9zdGdyZXNDbHVzdGVyT3ZlcnJpZGVzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIERCIGNsdXN0ZXIgaWRlbnRpZmllci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBnZW5lcmF0ZWQgYnkgQ0RLXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogU3VibmV0cyB1c2VkIGZvciBjbHVzdGVyIGluc3RhbmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIEF1cm9yYSBTZXJ2ZXJsZXNzIHYyIGNhcGFjaXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJsZXNzVjJNaW5DYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSBBdXJvcmEgU2VydmVybGVzcyB2MiBjYXBhY2l0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVybGVzc1YyTWF4Q2FwYWNpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgc3RvcmFnZSBlbmNyeXB0aW9uIHNob3VsZCBiZSBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlRW5jcnlwdGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQdWJsaWMgaW50ZXJmYWNlIGZvciBhbiBBdXJvcmEgUG9zdGdyZVNRTCBkYXRhYmFzZSBjb21wb25lbnQuXG4gKlxuICogSW1wbGVtZW50ZWQgYnkgYm90aCB0aGUgY29uY3JldGUge0BsaW5rIEF1cm9yYVBvc3RncmVzQ2x1c3Rlcn0gKHNhbWUtc3RhY2sgdXNhZ2UpIGFuZFxuICogdGhlIGltcG9ydCByZXR1cm5lZCBieSB7QGxpbmsgQXVyb3JhUG9zdGdyZXNDbHVzdGVyLmZyb21CYXNlUGxhdGZvcm19IChjcm9zcy1zdGFjayB1c2FnZSkuXG4gKiBFeHRlbnNpb25zIHN1Y2ggYXMge0BsaW5rIFBvc3RncmVzRGJBY2Nlc3NFeHRlbnNpb259IGFjY2VwdCB0aGlzIGludGVyZmFjZSBzbyB0aGV5IHdvcmtcbiAqIGluIGVpdGhlciBkZXBsb3ltZW50IHRvcG9sb2d5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBdXJvcmFQb3N0Z3Jlc0RCIHtcbiAgLyoqIFNlY3JldCBjb250YWluaW5nIHBvc3RncmVzIGNyZWRlbnRpYWxzICh1c2VybmFtZSBhbmQgcGFzc3dvcmQpLiAqL1xuICByZWFkb25seSBjcmVkZW50aWFsc1NlY3JldDogSVNlY3JldDtcblxuICAvKipcbiAgICogU2VjcmV0IGNvbnRhaW5pbmcgdGhlIHBvc3RncmVzIGNvbm5lY3Rpb24gc3RyaW5nIHByZWZpeCBpbiB0aGUgZm9ybVxuICAgKiBgcG9zdGdyZXNxbDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvYC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25TZWNyZXQ6IElTZWNyZXQ7XG5cbiAgLyoqIENsdXN0ZXIgZW5kcG9pbnQgaW4gdGhlIGZvcm0gYGhvc3Q6cG9ydGAuICovXG4gIHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqIFNlY3VyaXR5IGdyb3VwIGF0dGFjaGVkIHRvIHRoZSBBdXJvcmEgY2x1c3Rlci4gKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXA7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBzaGFyZWQgYnkgdGhlIGNvbmNyZXRlIHtAbGluayBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJ9IGFuZCB0aGVcbiAqIGltcG9ydCBjbGFzcyBjcmVhdGVkIGJ5IHtAbGluayBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXIuZnJvbUJhc2VQbGF0Zm9ybX0uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJCYXNlXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSUF1cm9yYVBvc3RncmVzREJcbntcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY3JlZGVudGlhbHNTZWNyZXQ6IElTZWNyZXQ7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbm5lY3Rpb25TZWNyZXQ6IElTZWNyZXQ7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG4gIGFic3RyYWN0IHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA6IElTZWN1cml0eUdyb3VwO1xufVxuXG4vKipcbiAqIFByb3Zpc2lvbnMgYW4gQXVyb3JhIFBvc3RncmVTUUwgU2VydmVybGVzcyB2MiBjbHVzdGVyIGFuZCBleHBvcnRzIGNvbm5lY3Rpb24gbWV0YWRhdGEuXG4gKlxuICogRXhwb3J0czpcbiAqIC0gYGF1cm9yYS1wb3N0Z3Jlcy1kYjpzZWNyZXQtYXJuYFxuICogLSBgYXVyb3JhLXBvc3RncmVzLWRiOmNyZWRlbnRpYWxzLXNlY3JldC1hcm5gXG4gKiAtIGBhdXJvcmEtcG9zdGdyZXMtZGI6Y2x1c3Rlci1lbmRwb2ludGBcbiAqIC0gYGF1cm9yYS1wb3N0Z3Jlcy1kYjpzZWN1cml0eS1ncm91cC1pZGBcbiAqIC0gYGF1cm9yYS1wb3N0Z3Jlcy1kYjp0dW5uZWwtaW5zdGFuY2UtaWRgIChvbmx5IHdoZW4gdHVubmVsIGhvc3QgaXMgZW5hYmxlZClcbiAqL1xuZXhwb3J0IGNsYXNzIEF1cm9yYVBvc3RncmVzQ2x1c3RlciBleHRlbmRzIEF1cm9yYVBvc3RncmVzQ2x1c3RlckJhc2Uge1xuICAvKipcbiAgICogSW1wb3J0cyBhbiB7QGxpbmsgSUF1cm9yYVBvc3RncmVzREJ9IGluc3RhbmNlIGZyb20gYSBiYXNlIHBsYXRmb3JtIHN0YWNrLlxuICAgKlxuICAgKiBVc2UgdGhpcyBmb3IgY3Jvc3Mtc3RhY2sgYWNjZXNzLiBGb3Igc2FtZS1zdGFjayB1c2FnZSwgcGFzcyB0aGVcbiAgICoge0BsaW5rIEF1cm9yYVBvc3RncmVzQ2x1c3Rlcn0gY29uc3RydWN0IGRpcmVjdGx5IHdoZXJlIHtAbGluayBJQXVyb3JhUG9zdGdyZXNEQn1cbiAgICogaXMgZXhwZWN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBDb25zdHJ1Y3Qgc2NvcGUgdG8gYXR0YWNoIHRoZSBpbXBvcnRlZCBjb21wb25lbnQgdG8uXG4gICAqIEBwYXJhbSBpZCBDb25zdHJ1Y3QgaWQgZm9yIHRoZSBpbXBvcnRlZCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBiYXNlUGxhdGZvcm1TdGFja05hbWUgQmFzZSBwbGF0Zm9ybSBzdGFjayBuYW1lLiBGYWxscyBiYWNrIHRvXG4gICAqICAgYEJhc2VQbGF0Zm9ybVN0YWNrUmVzb2x2ZXJgIChDREsgY29udGV4dCkgd2hlbiBvbWl0dGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQmFzZVBsYXRmb3JtKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBiYXNlUGxhdGZvcm1TdGFja05hbWU/OiBzdHJpbmcsXG4gICk6IElBdXJvcmFQb3N0Z3Jlc0RCIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJCYXNlIHtcbiAgICAgIHJlYWRvbmx5IGNyZWRlbnRpYWxzU2VjcmV0ID0gU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDcmVkZW50aWFsc1NlY3JldFwiLFxuICAgICAgICBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXIuY3JlZGVudGlhbHNTZWNyZXRBcm5QYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICByZWFkb25seSBjb25uZWN0aW9uU2VjcmV0ID0gU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb25uZWN0aW9uU2VjcmV0XCIsXG4gICAgICAgIEF1cm9yYVBvc3RncmVzQ2x1c3Rlci5zZWNyZXRBcm5QYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICByZWFkb25seSBlbmRwb2ludCA9IEF1cm9yYVBvc3RncmVzQ2x1c3Rlci5jbHVzdGVyRW5kcG9pbnRQYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICBzY29wZSxcbiAgICAgICAgYmFzZVBsYXRmb3JtU3RhY2tOYW1lLFxuICAgICAgKTtcbiAgICAgIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXAgPSBTZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiU2VjdXJpdHlHcm91cFwiLFxuICAgICAgICBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXIuc2VjdXJpdHlHcm91cElkUGFyYW1ldGVyLmltcG9ydChcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBiYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBzZWNyZXRBcm5QYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQXVyb3JhIFBvc3RncmVzREIgU2VjcmV0IEFSTlwiLFxuICAgIGtleTogXCJzZWNyZXQtYXJuXCIsXG4gICAgcHJlZml4OiBcImF1cm9yYS1wb3N0Z3Jlcy1kYlwiLFxuICB9KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjcmVkZW50aWFsc1NlY3JldEFyblBhcmFtZXRlciA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgbmFtZTogXCJBdXJvcmEgUG9zdGdyZXNEQiBjcmVkZW50aWFscyBTZWNyZXQgQVJOXCIsXG4gICAga2V5OiBcImNyZWRlbnRpYWxzLXNlY3JldC1hcm5cIixcbiAgICBwcmVmaXg6IFwiYXVyb3JhLXBvc3RncmVzLWRiXCIsXG4gIH0pO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNsdXN0ZXJFbmRwb2ludFBhcmFtZXRlciA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgbmFtZTogXCJBdXJvcmEgUG9zdGdyZXNEQiBDbHVzdGVyIGhvc3Q6cG9ydCBFbmRwb2ludFwiLFxuICAgIGtleTogXCJjbHVzdGVyLWVuZHBvaW50XCIsXG4gICAgcHJlZml4OiBcImF1cm9yYS1wb3N0Z3Jlcy1kYlwiLFxuICB9KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBzZWN1cml0eUdyb3VwSWRQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQXVyb3JhIFBvc3RncmVzREIgU2VjdXJpdHkgR3JvdXAgSWRcIixcbiAgICBrZXk6IFwic2VjdXJpdHktZ3JvdXAtaWRcIixcbiAgICBwcmVmaXg6IFwiYXVyb3JhLXBvc3RncmVzLWRiXCIsXG4gIH0pO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IHR1bm5lbEluc3RhbmNlSWRQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQXVyb3JhIFBvc3RncmVzREIgVHVubmVsIEhvc3QgSW5zdGFuY2UgSWRcIixcbiAgICBrZXk6IFwidHVubmVsLWluc3RhbmNlLWlkXCIsXG4gICAgcHJlZml4OiBcImF1cm9yYS1wb3N0Z3Jlcy1kYlwiLFxuICB9KTtcblxuICAvKiogQXVyb3JhIGRhdGFiYXNlIGNsdXN0ZXIuICovXG4gIHB1YmxpYyByZWFkb25seSBjbHVzdGVyOiByZHMuRGF0YWJhc2VDbHVzdGVyO1xuXG4gIC8qKiBTZWN1cml0eSBncm91cCBhdHRhY2hlZCB0byB0aGUgQXVyb3JhIGNsdXN0ZXIuICovXG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuXG4gIC8qKiBTZWNyZXQgY29udGFpbmluZyBwb3N0Z3JlcyBjcmVkZW50aWFscyAodXNlcm5hbWUgYW5kIHBhc3N3b3JkKS4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxzU2VjcmV0OiBJU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBTZWNyZXQgY29udGFpbmluZyB0aGUgcG9zdGdyZXMgY29ubmVjdGlvbiBzdHJpbmcgcHJlZml4IGluIHRoZSBmb3JtXG4gICAqIGBwb3N0Z3Jlc3FsOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9gLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25TZWNyZXQ6IElTZWNyZXQ7XG5cbiAgLyoqIENsdXN0ZXIgZW5kcG9pbnQgaW4gdGhlIGZvcm0gYGhvc3Q6cG9ydGAuICovXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB1c2VybmFtZSA9IFwicG9zdGdyZXNcIjtcbiAgICBjb25zdCB0dW5uZWxIb3N0ID0gcHJvcHMudHVubmVsSG9zdCA/PyB7fTtcbiAgICBjb25zdCBkYlNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBcIkF1cm9yYVNHXCIsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY3JlZGVudGlhbHNTZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIFwiREJDcmVkZW50aWFsc1NlY3JldFwiLCB7XG4gICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoeyB1c2VybmFtZSB9KSxcbiAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICBpbmNsdWRlU3BhY2U6IGZhbHNlLFxuICAgICAgICBnZW5lcmF0ZVN0cmluZ0tleTogXCJwYXNzd29yZFwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgcmRzLkRhdGFiYXNlQ2x1c3Rlcih0aGlzLCBcIlNlcnZlcmxlc3NDbHVzdGVyXCIsIHtcbiAgICAgIGVuZ2luZTogcmRzLkRhdGFiYXNlQ2x1c3RlckVuZ2luZS5hdXJvcmFQb3N0Z3Jlcyh7XG4gICAgICAgIHZlcnNpb246IHByb3BzLmVuZ2luZVZlcnNpb24sXG4gICAgICB9KSxcbiAgICAgIHBhcmFtZXRlckdyb3VwOiByZHMuUGFyYW1ldGVyR3JvdXAuZnJvbVBhcmFtZXRlckdyb3VwTmFtZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJQYXJhbWV0ZXJHcm91cFwiLFxuICAgICAgICBgZGVmYXVsdC5hdXJvcmEtcG9zdGdyZXNxbCR7cHJvcHMuZW5naW5lVmVyc2lvbi5hdXJvcmFQb3N0Z3Jlc01ham9yVmVyc2lvbn1gLFxuICAgICAgKSxcbiAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgIHVzZXJuYW1lLFxuICAgICAgICBwYXNzd29yZDogY3JlZGVudGlhbHNTZWNyZXQuc2VjcmV0VmFsdWVGcm9tSnNvbihcInBhc3N3b3JkXCIpLFxuICAgICAgfSxcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgd3JpdGVyOiByZHMuQ2x1c3Rlckluc3RhbmNlLnNlcnZlcmxlc3NWMihcIndyaXRlclwiKSxcbiAgICAgIHNlcnZlcmxlc3NWMk1pbkNhcGFjaXR5OiBwcm9wcy5jbHVzdGVyUHJvcHM/LnNlcnZlcmxlc3NWMk1pbkNhcGFjaXR5ID8/IDAsXG4gICAgICBzZXJ2ZXJsZXNzVjJNYXhDYXBhY2l0eTogcHJvcHMuY2x1c3RlclByb3BzPy5zZXJ2ZXJsZXNzVjJNYXhDYXBhY2l0eSA/PyAxLFxuICAgICAgc2VjdXJpdHlHcm91cHM6IFtkYlNlY3VyaXR5R3JvdXBdLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMuY2x1c3RlclByb3BzPy52cGNTdWJuZXRzID8/IHtcbiAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTLFxuICAgICAgfSxcbiAgICAgIHN0b3JhZ2VFbmNyeXB0ZWQ6IHByb3BzLmNsdXN0ZXJQcm9wcz8uc3RvcmFnZUVuY3J5cHRlZCA/PyB0cnVlLFxuICAgICAgY2x1c3RlcklkZW50aWZpZXI6IHByb3BzLmNsdXN0ZXJQcm9wcz8uY2x1c3RlcklkZW50aWZpZXIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb25uZWN0aW9uU2VjcmV0ID0gbmV3IFNlY3JldCh0aGlzLCBcIkRCQ2x1c3RlclNlY3JldFwiLCB7XG4gICAgICBzZWNyZXRTdHJpbmdWYWx1ZTogbmV3IGNkay5TZWNyZXRWYWx1ZShcbiAgICAgICAgYHBvc3RncmVzcWw6Ly8ke3VzZXJuYW1lfToke2NyZWRlbnRpYWxzU2VjcmV0LnNlY3JldFZhbHVlRnJvbUpzb24oXG4gICAgICAgICAgXCJwYXNzd29yZFwiLFxuICAgICAgICApfUAke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50Lmhvc3RuYW1lfToke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50LnBvcnR9L2AsXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgQXVyb3JhUG9zdGdyZXNDbHVzdGVyLnNlY3JldEFyblBhcmFtZXRlci5leHBvcnQoXG4gICAgICB0aGlzLFxuICAgICAgY29ubmVjdGlvblNlY3JldC5zZWNyZXRBcm4sXG4gICAgKTtcbiAgICBBdXJvcmFQb3N0Z3Jlc0NsdXN0ZXIuY3JlZGVudGlhbHNTZWNyZXRBcm5QYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIGNyZWRlbnRpYWxzU2VjcmV0LnNlY3JldEFybixcbiAgICApO1xuICAgIEF1cm9yYVBvc3RncmVzQ2x1c3Rlci5jbHVzdGVyRW5kcG9pbnRQYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIGAke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50Lmhvc3RuYW1lfToke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50LnBvcnR9YCxcbiAgICApO1xuICAgIEF1cm9yYVBvc3RncmVzQ2x1c3Rlci5zZWN1cml0eUdyb3VwSWRQYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIGRiU2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWQsXG4gICAgKTtcblxuICAgIGlmICh0dW5uZWxIb3N0LmVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHR1bm5lbEhvc3RTZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgXCJUdW5uZWxIb3N0U0dcIiwge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIH0pO1xuICAgICAgZGJTZWN1cml0eUdyb3VwLmNvbm5lY3Rpb25zLmFsbG93RnJvbShcbiAgICAgICAgdHVubmVsSG9zdFNlY3VyaXR5R3JvdXAsXG4gICAgICAgIFBvcnQudGNwKGNsdXN0ZXIuY2x1c3RlckVuZHBvaW50LnBvcnQpLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHVubmVsSG9zdFJvbGUgPSBuZXcgUm9sZSh0aGlzLCBcIlR1bm5lbEhvc3RSb2xlXCIsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbChcImVjMi5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICAgIFwiQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZVwiLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKHR1bm5lbEhvc3QuY3JlYXRlU3NtVnBjRW5kcG9pbnRzKSB7XG4gICAgICAgIHByb3BzLnZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludChcIlNzbUVuZHBvaW50XCIsIHtcbiAgICAgICAgICBzZXJ2aWNlOiBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1NNLFxuICAgICAgICAgIHN1Ym5ldHM6IHtcbiAgICAgICAgICAgIHN1Ym5ldFR5cGU6IHR1bm5lbEhvc3Quc3VibmV0VHlwZSA/PyBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb3BzLnZwYy5hZGRJbnRlcmZhY2VFbmRwb2ludChcIlNzbU1lc3NhZ2VzRW5kcG9pbnRcIiwge1xuICAgICAgICAgIHNlcnZpY2U6IEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5TU01fTUVTU0FHRVMsXG4gICAgICAgICAgc3VibmV0czoge1xuICAgICAgICAgICAgc3VibmV0VHlwZTogdHVubmVsSG9zdC5zdWJuZXRUeXBlID8/IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvcHMudnBjLmFkZEludGVyZmFjZUVuZHBvaW50KFwiRWMyTWVzc2FnZXNFbmRwb2ludFwiLCB7XG4gICAgICAgICAgc2VydmljZTogSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkVDMl9NRVNTQUdFUyxcbiAgICAgICAgICBzdWJuZXRzOiB7XG4gICAgICAgICAgICBzdWJuZXRUeXBlOiB0dW5uZWxIb3N0LnN1Ym5ldFR5cGUgPz8gU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0dW5uZWxJbnN0YW5jZSA9IG5ldyBJbnN0YW5jZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYFR1bm5lbEhvc3Qke1N0YWdlLm9mKHRoaXMpPy5zdGFnZU5hbWUgPz8gXCJcIn1gLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgICAgbWFjaGluZUltYWdlOiBjZGsuYXdzX2VjMi5NYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyMDIzKHtcbiAgICAgICAgICAgIGNwdVR5cGU6IHR1bm5lbEhvc3QuY3B1VHlwZSA/PyBBbWF6b25MaW51eENwdVR5cGUuQVJNXzY0LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGluc3RhbmNlVHlwZTpcbiAgICAgICAgICAgIHR1bm5lbEhvc3QuaW5zdGFuY2VUeXBlID8/XG4gICAgICAgICAgICBJbnN0YW5jZVR5cGUub2YoSW5zdGFuY2VDbGFzcy5UNEcsIEluc3RhbmNlU2l6ZS5OQU5PKSxcbiAgICAgICAgICByZXF1aXJlSW1kc3YyOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHR1bm5lbEhvc3RSb2xlLFxuICAgICAgICAgIHNlY3VyaXR5R3JvdXA6IHR1bm5lbEhvc3RTZWN1cml0eUdyb3VwLFxuICAgICAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgICAgIHN1Ym5ldFR5cGU6IHR1bm5lbEhvc3Quc3VibmV0VHlwZSA/PyBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbnN0YW5jZU5hbWU6IHByb3BzLmluc3RhbmNlTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIEF1cm9yYVBvc3RncmVzQ2x1c3Rlci50dW5uZWxJbnN0YW5jZUlkUGFyYW1ldGVyLmV4cG9ydChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdHVubmVsSW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5jbHVzdGVyID0gY2x1c3RlcjtcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXAgPSBkYlNlY3VyaXR5R3JvdXA7XG4gICAgdGhpcy5jcmVkZW50aWFsc1NlY3JldCA9IGNyZWRlbnRpYWxzU2VjcmV0O1xuICAgIHRoaXMuY29ubmVjdGlvblNlY3JldCA9IGNvbm5lY3Rpb25TZWNyZXQ7XG4gICAgdGhpcy5lbmRwb2ludCA9IGAke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50Lmhvc3RuYW1lfToke2NsdXN0ZXIuY2x1c3RlckVuZHBvaW50LnBvcnR9YDtcbiAgfVxufVxuIl19
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.BTCLogGroup = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -11,9 +10,15 @@ const common_1 = require("../utils/common");
11
10
  * A log group with sensible defaults.
12
11
  */
13
12
  class BTCLogGroup extends aws_logs_1.LogGroup {
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@btc-embedded/cdk-extensions.BTCLogGroup", version: "0.23.7" };
14
14
  static fromBasePlatform(scope, id, { basePlatformStackName }) {
15
15
  return aws_logs_1.LogGroup.fromLogGroupName(scope, `${id}LogGroup`, BTCLogGroup.logGroupParameter.import(scope, basePlatformStackName));
16
16
  }
17
+ static logGroupParameter = new utils_1.StackParameter({
18
+ name: "Log Group Name",
19
+ key: "log-group-name",
20
+ prefix: "loggroup",
21
+ });
17
22
  constructor(scope, id, options) {
18
23
  let logGroupName;
19
24
  const appName = options.appName ?? aws_cdk_lib_1.Stack.of(scope).stackName;
@@ -34,11 +39,4 @@ class BTCLogGroup extends aws_logs_1.LogGroup {
34
39
  }
35
40
  }
36
41
  exports.BTCLogGroup = BTCLogGroup;
37
- _a = JSII_RTTI_SYMBOL_1;
38
- BTCLogGroup[_a] = { fqn: "@btc-embedded/cdk-extensions.BTCLogGroup", version: "0.23.5" };
39
- BTCLogGroup.logGroupParameter = new utils_1.StackParameter({
40
- name: "Log Group Name",
41
- key: "log-group-name",
42
- prefix: "loggroup",
43
- });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQlRDTG9nR3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGxhdGZvcm0vQlRDTG9nR3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBbUQ7QUFDbkQsbURBQTBFO0FBRTFFLG9DQUEwQztBQUMxQyw0Q0FBNEM7QUFrRDVDOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsbUJBQVE7SUFDdkMsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsRUFBRSxxQkFBcUIsRUFBNEI7UUFFbkQsT0FBTyxtQkFBUSxDQUFDLGdCQUFnQixDQUM5QixLQUFLLEVBQ0wsR0FBRyxFQUFFLFVBQVUsRUFDZixXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQVFELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLE9BQXNEO1FBRXRELElBQUksWUFBb0IsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUU3RCxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN6QixZQUFZLEdBQUcsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFBLGtCQUFTLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuRSxDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVk7WUFFWixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSx3QkFBYSxDQUFDLFNBQVM7WUFFdkQsMEVBQTBFO1lBQzFFLGlFQUFpRTtZQUNqRSxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE9BQU87U0FDOUQsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7QUEzQ0gsa0NBNENDOzs7QUEvQnlCLDZCQUFpQixHQUFHLElBQUksc0JBQWMsQ0FBQztJQUM3RCxJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLEdBQUcsRUFBRSxnQkFBZ0I7SUFDckIsTUFBTSxFQUFFLFVBQVU7Q0FDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElMb2dHcm91cCwgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTdGFja1BhcmFtZXRlciB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsga2ViYWJDYXNlIH0gZnJvbSBcIi4uL3V0aWxzL2NvbW1vblwiO1xuXG5pbnRlcmZhY2UgQlRDTG9nR3JvdXBCYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGhvdyBsb25nIHRoZSBsb2dzIHNob3VsZCBiZSBrZXB0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBvbmUgbW9udGhcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbj86IFJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0byBkZWxldGUgdGhlIGxvZ2dyb3VwIHdoZW4gZGVzdHJveWluZyB0aGUgc3RhY2tcbiAgICpcbiAgICogQGRlZmF1bHQgRGVzdHJveVxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQlRDVW5pcXVlTG9nR3JvdXBPcHRpb25zIGV4dGVuZHMgQlRDTG9nR3JvdXBCYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBsb2cgdHlwZSB0byBiZSB1c2VkIGFzIGEgcHJlZml4IGluIHRoZSBsb2cgZ3JvdXA6IC9hcHAtbmFtZS90eXBlLy4uLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nVHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogVGhpcyBuYW1lIHdpbGwgYmUgdXNlZCBhcyBhIHByZWZpeCBmb3IgdGhlIGxvZyBncm91cCBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgc3RhY2sgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYXBwTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCVENMb2dHcm91cE9wdGlvbnMgZXh0ZW5kcyBCVENMb2dHcm91cEJhc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIG5hbWUgd2lsbCBiZSB1c2VkIGFzIGxvZyBncm91cCBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgc3RhY2sgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYXBwTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJUQ0xvZ0dyb3VwTG9va3VwT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJhc2VQbGF0Zm9ybVN0YWNrTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGxvZyBncm91cCB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLlxuICovXG5leHBvcnQgY2xhc3MgQlRDTG9nR3JvdXAgZXh0ZW5kcyBMb2dHcm91cCB7XG4gIHN0YXRpYyBmcm9tQmFzZVBsYXRmb3JtKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB7IGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSB9OiBCVENMb2dHcm91cExvb2t1cE9wdGlvbnMsXG4gICk6IElMb2dHcm91cCB7XG4gICAgcmV0dXJuIExvZ0dyb3VwLmZyb21Mb2dHcm91cE5hbWUoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkfUxvZ0dyb3VwYCxcbiAgICAgIEJUQ0xvZ0dyb3VwLmxvZ0dyb3VwUGFyYW1ldGVyLmltcG9ydChzY29wZSwgYmFzZVBsYXRmb3JtU3RhY2tOYW1lKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgbG9nR3JvdXBQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiTG9nIEdyb3VwIE5hbWVcIixcbiAgICBrZXk6IFwibG9nLWdyb3VwLW5hbWVcIixcbiAgICBwcmVmaXg6IFwibG9nZ3JvdXBcIixcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEJUQ0xvZ0dyb3VwT3B0aW9ucyB8IEJUQ1VuaXF1ZUxvZ0dyb3VwT3B0aW9ucyxcbiAgKSB7XG4gICAgbGV0IGxvZ0dyb3VwTmFtZTogc3RyaW5nO1xuICAgIGNvbnN0IGFwcE5hbWUgPSBvcHRpb25zLmFwcE5hbWUgPz8gU3RhY2sub2Yoc2NvcGUpLnN0YWNrTmFtZTtcblxuICAgIGlmIChcImxvZ1R5cGVcIiBpbiBvcHRpb25zKSB7XG4gICAgICBsb2dHcm91cE5hbWUgPSBgLyR7YXBwTmFtZX0vJHtvcHRpb25zLmxvZ1R5cGV9LyR7a2ViYWJDYXNlKGlkKX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dHcm91cE5hbWUgPSBgLyR7YXBwTmFtZX1gO1xuICAgIH1cblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgbG9nR3JvdXBOYW1lLFxuXG4gICAgICByZXRlbnRpb246IG9wdGlvbnMucmV0ZW50aW9uID8/IFJldGVudGlvbkRheXMuT05FX01PTlRILFxuXG4gICAgICAvLyBUaGUgZGVmYXVsdCBpcyBzZXQgdG8gREVTVFJPWSB0byByZS1kZXBsb3kgdGhlIHN0YWNrIGFmdGVyIGRlbGV0aW5nIGl0LlxuICAgICAgLy8gb3RoZXJ3aXNlIHdvdWxkIGJlIG5lY2Vzc2FyeSB0byBtYW51YWxseSBkZWxldGUgdGhlIGxvZyBncm91cHNcbiAgICAgIHJlbW92YWxQb2xpY3k6IG9wdGlvbnMucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgQlRDTG9nR3JvdXAubG9nR3JvdXBQYXJhbWV0ZXIuZXhwb3J0KHRoaXMsIGxvZ0dyb3VwTmFtZSk7XG4gIH1cbn1cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQlRDTG9nR3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGxhdGZvcm0vQlRDTG9nR3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZDQUFtRDtBQUNuRCxtREFBMEU7QUFFMUUsb0NBQTBDO0FBQzFDLDRDQUE0QztBQWtENUM7O0dBRUc7QUFDSCxNQUFhLFdBQVksU0FBUSxtQkFBUTs7SUFDdkMsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsRUFBRSxxQkFBcUIsRUFBNEI7UUFFbkQsT0FBTyxtQkFBUSxDQUFDLGdCQUFnQixDQUM5QixLQUFLLEVBQ0wsR0FBRyxFQUFFLFVBQVUsRUFDZixXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxJQUFJLHNCQUFjLENBQUM7UUFDN0QsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixHQUFHLEVBQUUsZ0JBQWdCO1FBQ3JCLE1BQU0sRUFBRSxVQUFVO0tBQ25CLENBQUMsQ0FBQztJQUVILFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLE9BQXNEO1FBRXRELElBQUksWUFBb0IsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUU3RCxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN6QixZQUFZLEdBQUcsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFBLGtCQUFTLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuRSxDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVk7WUFFWixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSx3QkFBYSxDQUFDLFNBQVM7WUFFdkQsMEVBQTBFO1lBQzFFLGlFQUFpRTtZQUNqRSxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE9BQU87U0FDOUQsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7QUEzQ0gsa0NBNENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElMb2dHcm91cCwgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTdGFja1BhcmFtZXRlciB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsga2ViYWJDYXNlIH0gZnJvbSBcIi4uL3V0aWxzL2NvbW1vblwiO1xuXG5pbnRlcmZhY2UgQlRDTG9nR3JvdXBCYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGhvdyBsb25nIHRoZSBsb2dzIHNob3VsZCBiZSBrZXB0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBvbmUgbW9udGhcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbj86IFJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0byBkZWxldGUgdGhlIGxvZ2dyb3VwIHdoZW4gZGVzdHJveWluZyB0aGUgc3RhY2tcbiAgICpcbiAgICogQGRlZmF1bHQgRGVzdHJveVxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQlRDVW5pcXVlTG9nR3JvdXBPcHRpb25zIGV4dGVuZHMgQlRDTG9nR3JvdXBCYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBsb2cgdHlwZSB0byBiZSB1c2VkIGFzIGEgcHJlZml4IGluIHRoZSBsb2cgZ3JvdXA6IC9hcHAtbmFtZS90eXBlLy4uLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nVHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogVGhpcyBuYW1lIHdpbGwgYmUgdXNlZCBhcyBhIHByZWZpeCBmb3IgdGhlIGxvZyBncm91cCBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgc3RhY2sgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYXBwTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCVENMb2dHcm91cE9wdGlvbnMgZXh0ZW5kcyBCVENMb2dHcm91cEJhc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBUaGlzIG5hbWUgd2lsbCBiZSB1c2VkIGFzIGxvZyBncm91cCBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgc3RhY2sgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYXBwTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJUQ0xvZ0dyb3VwTG9va3VwT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJhc2VQbGF0Zm9ybVN0YWNrTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGxvZyBncm91cCB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLlxuICovXG5leHBvcnQgY2xhc3MgQlRDTG9nR3JvdXAgZXh0ZW5kcyBMb2dHcm91cCB7XG4gIHN0YXRpYyBmcm9tQmFzZVBsYXRmb3JtKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB7IGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSB9OiBCVENMb2dHcm91cExvb2t1cE9wdGlvbnMsXG4gICk6IElMb2dHcm91cCB7XG4gICAgcmV0dXJuIExvZ0dyb3VwLmZyb21Mb2dHcm91cE5hbWUoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkfUxvZ0dyb3VwYCxcbiAgICAgIEJUQ0xvZ0dyb3VwLmxvZ0dyb3VwUGFyYW1ldGVyLmltcG9ydChzY29wZSwgYmFzZVBsYXRmb3JtU3RhY2tOYW1lKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgbG9nR3JvdXBQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiTG9nIEdyb3VwIE5hbWVcIixcbiAgICBrZXk6IFwibG9nLWdyb3VwLW5hbWVcIixcbiAgICBwcmVmaXg6IFwibG9nZ3JvdXBcIixcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEJUQ0xvZ0dyb3VwT3B0aW9ucyB8IEJUQ1VuaXF1ZUxvZ0dyb3VwT3B0aW9ucyxcbiAgKSB7XG4gICAgbGV0IGxvZ0dyb3VwTmFtZTogc3RyaW5nO1xuICAgIGNvbnN0IGFwcE5hbWUgPSBvcHRpb25zLmFwcE5hbWUgPz8gU3RhY2sub2Yoc2NvcGUpLnN0YWNrTmFtZTtcblxuICAgIGlmIChcImxvZ1R5cGVcIiBpbiBvcHRpb25zKSB7XG4gICAgICBsb2dHcm91cE5hbWUgPSBgLyR7YXBwTmFtZX0vJHtvcHRpb25zLmxvZ1R5cGV9LyR7a2ViYWJDYXNlKGlkKX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dHcm91cE5hbWUgPSBgLyR7YXBwTmFtZX1gO1xuICAgIH1cblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgbG9nR3JvdXBOYW1lLFxuXG4gICAgICByZXRlbnRpb246IG9wdGlvbnMucmV0ZW50aW9uID8/IFJldGVudGlvbkRheXMuT05FX01PTlRILFxuXG4gICAgICAvLyBUaGUgZGVmYXVsdCBpcyBzZXQgdG8gREVTVFJPWSB0byByZS1kZXBsb3kgdGhlIHN0YWNrIGFmdGVyIGRlbGV0aW5nIGl0LlxuICAgICAgLy8gb3RoZXJ3aXNlIHdvdWxkIGJlIG5lY2Vzc2FyeSB0byBtYW51YWxseSBkZWxldGUgdGhlIGxvZyBncm91cHNcbiAgICAgIHJlbW92YWxQb2xpY3k6IG9wdGlvbnMucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgQlRDTG9nR3JvdXAubG9nR3JvdXBQYXJhbWV0ZXIuZXhwb3J0KHRoaXMsIGxvZ0dyb3VwTmFtZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a, _b;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.CognitoUserPool = exports.CognitoUserPoolBase = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -11,6 +10,7 @@ const constructs_1 = require("constructs");
11
10
  const utils_1 = require("../utils");
12
11
  const ResourceServer_1 = require("./ResourceServer");
13
12
  class CognitoUserPoolBase extends constructs_1.Construct {
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@btc-embedded/cdk-extensions.CognitoUserPoolBase", version: "0.23.7" };
14
14
  createHttpUserPoolAuthorizer() {
15
15
  return new aws_apigatewayv2_authorizers_1.HttpUserPoolAuthorizer("HttpUserPoolAuthorizer", this.userPool, {
16
16
  userPoolClients: [this.apiUserPoolClient, this.appUserPoolClient],
@@ -23,20 +23,46 @@ class CognitoUserPoolBase extends constructs_1.Construct {
23
23
  }
24
24
  }
25
25
  exports.CognitoUserPoolBase = CognitoUserPoolBase;
26
- _a = JSII_RTTI_SYMBOL_1;
27
- CognitoUserPoolBase[_a] = { fqn: "@btc-embedded/cdk-extensions.CognitoUserPoolBase", version: "0.23.5" };
28
26
  class CognitoUserPool extends CognitoUserPoolBase {
27
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@btc-embedded/cdk-extensions.CognitoUserPool", version: "0.23.7" };
28
+ static userPoolIdParameter = new utils_1.StackParameter({
29
+ name: "Cognito User Pool Id",
30
+ key: "user-pool-id",
31
+ prefix: "cognito",
32
+ version: 2,
33
+ });
34
+ static appUserPoolClientParameter = new utils_1.StackParameter({
35
+ name: "Cognito Application Client Id",
36
+ key: "application-client-id",
37
+ prefix: "cognito",
38
+ version: 2,
39
+ });
40
+ static apiUserPoolClientParameter = new utils_1.StackParameter({
41
+ name: "Cognito API Client Id",
42
+ key: "api-client-id",
43
+ prefix: "cognito",
44
+ version: 2,
45
+ });
46
+ static cognitoUserPoolDomainParameter = new utils_1.StackParameter({
47
+ name: "Cognito User Pool Domain",
48
+ key: "user-pool-domain",
49
+ prefix: "cognito",
50
+ version: 1,
51
+ });
52
+ static appClientSecretParameter = new utils_1.StackParameter({
53
+ name: "Application Client Secret ARN",
54
+ key: "app-client-secret-arn",
55
+ prefix: "cognito",
56
+ version: 1,
57
+ });
29
58
  static fromBasePlatform(scope, id, basePlatformStackName) {
30
59
  class Import extends CognitoUserPoolBase {
31
- constructor() {
32
- super(...arguments);
33
- this.userPool = aws_cognito_1.UserPool.fromUserPoolId(this, "CognitoUserPool", CognitoUserPool.userPoolIdParameter.import(scope, basePlatformStackName));
34
- this.appUserPoolClient = aws_cognito_1.UserPoolClient.fromUserPoolClientId(this, "AppUserPoolClient", CognitoUserPool.appUserPoolClientParameter.import(scope, basePlatformStackName));
35
- this.apiUserPoolClient = aws_cognito_1.UserPoolClient.fromUserPoolClientId(this, "APIUserPoolClient", CognitoUserPool.apiUserPoolClientParameter.import(scope, basePlatformStackName));
36
- this.cognitoUserPoolDomain = aws_cognito_1.UserPoolDomain.fromDomainName(this, "CognitoUserPoolDomain", CognitoUserPool.cognitoUserPoolDomainParameter.import(scope, basePlatformStackName));
37
- this.appClientSecret = aws_secretsmanager_1.Secret.fromSecretCompleteArn(this, "AppClientSecret", CognitoUserPool.appClientSecretParameter.import(scope, basePlatformStackName));
38
- this.appOpenIdParameters = CognitoUserPool.createOpenIdParameters(this.userPool, this.appUserPoolClient, this.appClientSecret);
39
- }
60
+ userPool = aws_cognito_1.UserPool.fromUserPoolId(this, "CognitoUserPool", CognitoUserPool.userPoolIdParameter.import(scope, basePlatformStackName));
61
+ appUserPoolClient = aws_cognito_1.UserPoolClient.fromUserPoolClientId(this, "AppUserPoolClient", CognitoUserPool.appUserPoolClientParameter.import(scope, basePlatformStackName));
62
+ apiUserPoolClient = aws_cognito_1.UserPoolClient.fromUserPoolClientId(this, "APIUserPoolClient", CognitoUserPool.apiUserPoolClientParameter.import(scope, basePlatformStackName));
63
+ cognitoUserPoolDomain = aws_cognito_1.UserPoolDomain.fromDomainName(this, "CognitoUserPoolDomain", CognitoUserPool.cognitoUserPoolDomainParameter.import(scope, basePlatformStackName));
64
+ appClientSecret = aws_secretsmanager_1.Secret.fromSecretCompleteArn(this, "AppClientSecret", CognitoUserPool.appClientSecretParameter.import(scope, basePlatformStackName));
65
+ appOpenIdParameters = CognitoUserPool.createOpenIdParameters(this.userPool, this.appUserPoolClient, this.appClientSecret);
40
66
  }
41
67
  return new Import(scope, id);
42
68
  }
@@ -48,6 +74,12 @@ class CognitoUserPool extends CognitoUserPoolBase {
48
74
  scope: "openid profile",
49
75
  };
50
76
  }
77
+ userPool;
78
+ appUserPoolClient;
79
+ apiUserPoolClient;
80
+ appClientSecret;
81
+ cognitoUserPoolDomain;
82
+ appOpenIdParameters;
51
83
  constructor(scope, id, props) {
52
84
  super(scope, id);
53
85
  this.userPool = aws_cognito_1.UserPool.fromUserPoolId(this, "ImportedUserPool", props.userPoolId);
@@ -116,36 +148,4 @@ class CognitoUserPool extends CognitoUserPoolBase {
116
148
  }
117
149
  }
118
150
  exports.CognitoUserPool = CognitoUserPool;
119
- _b = JSII_RTTI_SYMBOL_1;
120
- CognitoUserPool[_b] = { fqn: "@btc-embedded/cdk-extensions.CognitoUserPool", version: "0.23.5" };
121
- CognitoUserPool.userPoolIdParameter = new utils_1.StackParameter({
122
- name: "Cognito User Pool Id",
123
- key: "user-pool-id",
124
- prefix: "cognito",
125
- version: 2,
126
- });
127
- CognitoUserPool.appUserPoolClientParameter = new utils_1.StackParameter({
128
- name: "Cognito Application Client Id",
129
- key: "application-client-id",
130
- prefix: "cognito",
131
- version: 2,
132
- });
133
- CognitoUserPool.apiUserPoolClientParameter = new utils_1.StackParameter({
134
- name: "Cognito API Client Id",
135
- key: "api-client-id",
136
- prefix: "cognito",
137
- version: 2,
138
- });
139
- CognitoUserPool.cognitoUserPoolDomainParameter = new utils_1.StackParameter({
140
- name: "Cognito User Pool Domain",
141
- key: "user-pool-domain",
142
- prefix: "cognito",
143
- version: 1,
144
- });
145
- CognitoUserPool.appClientSecretParameter = new utils_1.StackParameter({
146
- name: "Application Client Secret ARN",
147
- key: "app-client-secret-arn",
148
- prefix: "cognito",
149
- version: 1,
150
- });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29nbml0b1VzZXJQb29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsYXRmb3JtL0NvZ25pdG9Vc2VyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtEQUF3RTtBQUN4RSwyRkFBa0Y7QUFDbEYseURBV2lDO0FBQ2pDLHVFQUFpRTtBQUNqRSwyQ0FBdUM7QUFDdkMsb0NBQTBDO0FBQzFDLHFEQUFrRDtBQTBFbEQsTUFBc0IsbUJBQ3BCLFNBQVEsc0JBQVM7SUFVViw0QkFBNEI7UUFDakMsT0FBTyxJQUFJLHFEQUFzQixDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDekUsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztTQUNsRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0NBQWdDO1FBQ3JDLE9BQU8sSUFBSSwyQ0FBMEIsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7WUFDeEUsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBckJILGtEQXNCQzs7O0FBRUQsTUFBYSxlQUFnQixTQUFRLG1CQUFtQjtJQW9DdEQsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixLQUFnQixFQUNoQixFQUFVLEVBQ1YscUJBQThCO1FBRTlCLE1BQU0sTUFBTyxTQUFRLG1CQUFtQjtZQUF4Qzs7Z0JBQ1csYUFBUSxHQUFHLHNCQUFRLENBQUMsY0FBYyxDQUN6QyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQ3hDLEtBQUssRUFDTCxxQkFBcUIsQ0FDdEIsQ0FDRixDQUFDO2dCQUVPLHNCQUFpQixHQUFHLDRCQUFjLENBQUMsb0JBQW9CLENBQzlELElBQUksRUFDSixtQkFBbUIsRUFDbkIsZUFBZSxDQUFDLDBCQUEwQixD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SUFDekUsSUFBSSxFQUFFLDBCQUEwQjtJQUNoQyxHQUFHLEVBQUUsa0JBQWtCO0lBQ3ZCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE9BQU8sRUFBRSxDQUFDO0NBQ1gsQ0FBQyxDQUFDO0FBRW9CLHdDQUF3QixHQUFHLElBQUksc0JBQWMsQ0FBQztJQUNuRSxJQUFJLEVBQUUsK0JBQStCO0lBQ3JDLEdBQUcsRUFBRSx1QkFBdUI7SUFDNUIsTUFBTSxFQUFFLFNBQVM7SUFDakIsT0FBTyxFQUFFLENBQUM7Q0FDWCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2duaXRvVXNlclBvb2xzQXV0aG9yaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgSHR0cFVzZXJQb29sQXV0aG9yaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyLWF1dGhvcml6ZXJzXCI7XG5pbXBvcnQge1xuICBDZm5NYW5hZ2VkTG9naW5CcmFuZGluZyxcbiAgSVVzZXJQb29sLFxuICBJVXNlclBvb2xDbGllbnQsXG4gIElVc2VyUG9vbERvbWFpbixcbiAgT0F1dGhTY29wZSxcbiAgVXNlclBvb2wsXG4gIFVzZXJQb29sQ2xpZW50LFxuICBVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIsXG4gIFVzZXJQb29sQ2xpZW50T3B0aW9ucyxcbiAgVXNlclBvb2xEb21haW4sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29nbml0b1wiO1xuaW1wb3J0IHsgSVNlY3JldCwgU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFN0YWNrUGFyYW1ldGVyIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBSZXNvdXJjZVNlcnZlciB9IGZyb20gXCIuL1Jlc291cmNlU2VydmVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b1VzZXJQb29sUHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBDb2duaXRvIFVzZXIgUG9vbCB0byBiZSBpbXBvcnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sSWQ6IHN0cmluZztcblxuICAvKlxuICAgKiBVc2VyIHBvb2wgZG9tYWlucyBwcm92aWRlIHNlcnZpY2UgZm9yIG1hbmFnZWQgbG9naW4gcGFnZXMsIHRoaXJkLXBhcnR5IElkUCBhdXRoZW50aWNhdGlvbiwgYW5kIE9JREMgSWRQIGZ1bmN0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sRG9tYWluOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYWRkaXRpb25hbCB1c2VyIHBvb2wgaWRlbnRpdHkgcHJvdmlkZXJzIHRvIGVuYWJsZSBmZWRlcmF0ZWQgbG9naW4uXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVXNlclBvb2xJZGVudGl0eVByb3ZpZGVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2Ugc2VydmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlciBwb29sIGNsaWVudC5cbiAgICogVGhpcyBpcyB1c2VkIHRvIGRlZmluZSBPQXV0aCBzY29wZXMgZm9yIHRoZSBjbGllbnQuXG4gICAqIElmIG9taXR0ZWQsIGEgbmV3IGRlZmF1bHQgcmVzb3VyY2Ugc2VydmVyIHdpbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VTZXJ2ZXI/OiBSZXNvdXJjZVNlcnZlcjtcblxuICAvKipcbiAgICogU3BlY2lmeSB2YWxpZCBsb2dvdXQgVVJMcyB3aGljaCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZyb250ZW5kIHVzZXIgcG9vbCBjbGllbnQuXG4gICAqL1xuICByZWFkb25seSBsb2dvdXRVcmxzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYWRkaXRpb25hbCBjYWxsYmFjayBVUkxzIHdoaWNoIHRoZSBmcm9udGVuZCB1c2VzIGZvciBPSURDIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgY2FsbGJhY2tVcmxzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ2xpZW50IG9wdGlvbnMgZm9yIHRoZSBBUEkgY2xpZW50LCBleHRlbmRpbmcgYW5kIG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGFwaUNsaWVudE9wdGlvbnM/OiBVc2VyUG9vbENsaWVudE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIENsaWVudCBvcHRpb25zIGZvciB0aGUgYXBwIGNsaWVudCwgZXh0ZW5kaW5nIGFuZCBvdmVyd3JpdGluZyB0aGUgZGVmYXVsdHMuXG4gICAqL1xuICByZWFkb25seSBhcHBDbGllbnRPcHRpb25zPzogVXNlclBvb2xDbGllbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgY3JlYXRpb24gb2YgbWFuYWdlZCBsb2dpbiBicmFuZGluZyBmb3IgdGhlIHVzZXIgcG9vbC5cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZU1hbmFnZWRMb2dpbkJyYW5kaW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBPcGVuSWRQYXJhbWV0ZXJzIHtcbiAgcmVhZG9ubHkgaXNzdWVyVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsaWVudElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlY3JldDogSVNlY3JldDtcbiAgcmVhZG9ubHkgc2NvcGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29nbml0b1VzZXJQb29sIHtcbiAgcmVhZG9ubHkgdXNlclBvb2w6IElVc2VyUG9vbDtcbiAgcmVhZG9ubHkgYXBwVXNlclBvb2xDbGllbnQ6IElVc2VyUG9vbENsaWVudDtcbiAgcmVhZG9ubHkgYXBpVXNlclBvb2xDbGllbnQ6IElVc2VyUG9vbENsaWVudDtcbiAgcmVhZG9ubHkgY29nbml0b1VzZXJQb29sRG9tYWluOiBJVXNlclBvb2xEb21haW47XG5cbiAgLyoqXG4gICAqIENvbnRhaW5zIHRoZSBPcGVuSUQgcGFyYW1ldGVycyBvZiB0aGUgZnJvbnRlbmQvd2ViIGFwcGxpY2F0aW9uIGNsaWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGFwcE9wZW5JZFBhcmFtZXRlcnM6IEFwcE9wZW5JZFBhcmFtZXRlcnM7XG5cbiAgY3JlYXRlSHR0cFVzZXJQb29sQXV0aG9yaXplcigpOiBIdHRwVXNlclBvb2xBdXRob3JpemVyO1xuICBjcmVhdGVDb2duaXRvVXNlclBvb2xzQXV0aG9yaXplcigpOiBDb2duaXRvVXNlclBvb2xzQXV0aG9yaXplcjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvZ25pdG9Vc2VyUG9vbEJhc2VcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJQ29nbml0b1VzZXJQb29sXG57XG4gIGFic3RyYWN0IHJlYWRvbmx5IHVzZXJQb29sOiBJVXNlclBvb2w7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFwcFVzZXJQb29sQ2xpZW50OiBJVXNlclBvb2xDbGllbnQ7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFwaVVzZXJQb29sQ2xpZW50OiBJVXNlclBvb2xDbGllbnQ7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvZ25pdG9Vc2VyUG9vbERvbWFpbjogSVVzZXJQb29sRG9tYWluO1xuICBhYnN0cmFjdCByZWFkb25seSBhcHBDbGllbnRTZWNyZXQ6IElTZWNyZXQ7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFwcE9wZW5JZFBhcmFtZXRlcnM6IEFwcE9wZW5JZFBhcmFtZXRlcnM7XG5cbiAgcHVibGljIGNyZWF0ZUh0dHBVc2VyUG9vbEF1dGhvcml6ZXIoKTogSHR0cFVzZXJQb29sQXV0aG9yaXplciB7XG4gICAgcmV0dXJuIG5ldyBIdHRwVXNlclBvb2xBdXRob3JpemVyKFwiSHR0cFVzZXJQb29sQXV0aG9yaXplclwiLCB0aGlzLnVzZXJQb29sLCB7XG4gICAgICB1c2VyUG9vbENsaWVudHM6IFt0aGlzLmFwaVVzZXJQb29sQ2xpZW50LCB0aGlzLmFwcFVzZXJQb29sQ2xpZW50XSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVDb2duaXRvVXNlclBvb2xzQXV0aG9yaXplcigpOiBDb2duaXRvVXNlclBvb2xzQXV0aG9yaXplciB7XG4gICAgcmV0dXJuIG5ldyBDb2duaXRvVXNlclBvb2xzQXV0aG9yaXplcih0aGlzLCBcIkNvZ25pdG9Vc2VyUG9vbHNBdXRob3JpemVyXCIsIHtcbiAgICAgIGNvZ25pdG9Vc2VyUG9vbHM6IFt0aGlzLnVzZXJQb29sXSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29nbml0b1VzZXJQb29sIGV4dGVuZHMgQ29nbml0b1VzZXJQb29sQmFzZSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdXNlclBvb2xJZFBhcmFtZXRlciA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgbmFtZTogXCJDb2duaXRvIFVzZXIgUG9vbCBJZFwiLFxuICAgIGtleTogXCJ1c2VyLXBvb2wtaWRcIixcbiAgICBwcmVmaXg6IFwiY29nbml0b1wiLFxuICAgIHZlcnNpb246IDIsXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgYXBwVXNlclBvb2xDbGllbnRQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQ29nbml0byBBcHBsaWNhdGlvbiBDbGllbnQgSWRcIixcbiAgICBrZXk6IFwiYXBwbGljYXRpb24tY2xpZW50LWlkXCIsXG4gICAgcHJlZml4OiBcImNvZ25pdG9cIixcbiAgICB2ZXJzaW9uOiAyLFxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGFwaVVzZXJQb29sQ2xpZW50UGFyYW1ldGVyID0gbmV3IFN0YWNrUGFyYW1ldGVyKHtcbiAgICBuYW1lOiBcIkNvZ25pdG8gQVBJIENsaWVudCBJZFwiLFxuICAgIGtleTogXCJhcGktY2xpZW50LWlkXCIsXG4gICAgcHJlZml4OiBcImNvZ25pdG9cIixcbiAgICB2ZXJzaW9uOiAyLFxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGNvZ25pdG9Vc2VyUG9vbERvbWFpblBhcmFtZXRlciA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgbmFtZTogXCJDb2duaXRvIFVzZXIgUG9vbCBEb21haW5cIixcbiAgICBrZXk6IFwidXNlci1wb29sLWRvbWFpblwiLFxuICAgIHByZWZpeDogXCJjb2duaXRvXCIsXG4gICAgdmVyc2lvbjogMSxcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBhcHBDbGllbnRTZWNyZXRQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQXBwbGljYXRpb24gQ2xpZW50IFNlY3JldCBBUk5cIixcbiAgICBrZXk6IFwiYXBwLWNsaWVudC1zZWNyZXQtYXJuXCIsXG4gICAgcHJlZml4OiBcImNvZ25pdG9cIixcbiAgICB2ZXJzaW9uOiAxLFxuICB9KTtcblxuICBzdGF0aWMgZnJvbUJhc2VQbGF0Zm9ybShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYmFzZVBsYXRmb3JtU3RhY2tOYW1lPzogc3RyaW5nLFxuICApOiBJQ29nbml0b1VzZXJQb29sIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBDb2duaXRvVXNlclBvb2xCYXNlIHtcbiAgICAgIHJlYWRvbmx5IHVzZXJQb29sID0gVXNlclBvb2wuZnJvbVVzZXJQb29sSWQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiQ29nbml0b1VzZXJQb29sXCIsXG4gICAgICAgIENvZ25pdG9Vc2VyUG9vbC51c2VyUG9vbElkUGFyYW1ldGVyLmltcG9ydChcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBiYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICByZWFkb25seSBhcHBVc2VyUG9vbENsaWVudCA9IFVzZXJQb29sQ2xpZW50LmZyb21Vc2VyUG9vbENsaWVudElkKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIkFwcFVzZXJQb29sQ2xpZW50XCIsXG4gICAgICAgIENvZ25pdG9Vc2VyUG9vbC5hcHBVc2VyUG9vbENsaWVudFBhcmFtZXRlci5pbXBvcnQoXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYmFzZVBsYXRmb3JtU3RhY2tOYW1lLFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgcmVhZG9ubHkgYXBpVXNlclBvb2xDbGllbnQgPSBVc2VyUG9vbENsaWVudC5mcm9tVXNlclBvb2xDbGllbnRJZChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJBUElVc2VyUG9vbENsaWVudFwiLFxuICAgICAgICBDb2duaXRvVXNlclBvb2wuYXBpVXNlclBvb2xDbGllbnRQYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIHJlYWRvbmx5IGNvZ25pdG9Vc2VyUG9vbERvbWFpbiA9IFVzZXJQb29sRG9tYWluLmZyb21Eb21haW5OYW1lKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIkNvZ25pdG9Vc2VyUG9vbERvbWFpblwiLFxuICAgICAgICBDb2duaXRvVXNlclBvb2wuY29nbml0b1VzZXJQb29sRG9tYWluUGFyYW1ldGVyLmltcG9ydChcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBiYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICByZWFkb25seSBhcHBDbGllbnRTZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIkFwcENsaWVudFNlY3JldFwiLFxuICAgICAgICBDb2duaXRvVXNlclBvb2wuYXBwQ2xpZW50U2VjcmV0UGFyYW1ldGVyLmltcG9ydChcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBiYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICByZWFkb25seSBhcHBPcGVuSWRQYXJhbWV0ZXJzID0gQ29nbml0b1VzZXJQb29sLmNyZWF0ZU9wZW5JZFBhcmFtZXRlcnMoXG4gICAgICAgIHRoaXMudXNlclBvb2wsXG4gICAgICAgIHRoaXMuYXBwVXNlclBvb2xDbGllbnQsXG4gICAgICAgIHRoaXMuYXBwQ2xpZW50U2VjcmV0LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlT3BlbklkUGFyYW1ldGVycyhcbiAgICB1c2VyUG9vbDogSVVzZXJQb29sLFxuICAgIGNsaWVudDogSVVzZXJQb29sQ2xpZW50LFxuICAgIHNlY3JldDogSVNlY3JldCxcbiAgKTogQXBwT3BlbklkUGFyYW1ldGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzc3VlclVybDogYGh0dHBzOi8vY29nbml0by1pZHAuJHt1c2VyUG9vbC5zdGFjay5yZWdpb259LmFtYXpvbmF3cy5jb20vJHt1c2VyUG9vbC51c2VyUG9vbElkfWAsXG4gICAgICBjbGllbnRJZDogY2xpZW50LnVzZXJQb29sQ2xpZW50SWQsXG4gICAgICBzZWNyZXQsXG4gICAgICBzY29wZTogXCJvcGVuaWQgcHJvZmlsZVwiLFxuICAgIH07XG4gIH1cblxuICByZWFkb25seSB1c2VyUG9vbDogSVVzZXJQb29sO1xuICByZWFkb25seSBhcHBVc2VyUG9vbENsaWVudDogSVVzZXJQb29sQ2xpZW50O1xuICByZWFkb25seSBhcGlVc2VyUG9vbENsaWVudDogSVVzZXJQb29sQ2xpZW50O1xuICByZWFkb25seSBhcHBDbGllbnRTZWNyZXQ6IElTZWNyZXQ7XG4gIHJlYWRvbmx5IGNvZ25pdG9Vc2VyUG9vbERvbWFpbjogSVVzZXJQb29sRG9tYWluO1xuICByZWFkb25seSBhcHBPcGVuSWRQYXJhbWV0ZXJzOiBBcHBPcGVuSWRQYXJhbWV0ZXJzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2duaXRvVXNlclBvb2xQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnVzZXJQb29sID0gVXNlclBvb2wuZnJvbVVzZXJQb29sSWQoXG4gICAgICB0aGlzLFxuICAgICAgXCJJbXBvcnRlZFVzZXJQb29sXCIsXG4gICAgICBwcm9wcy51c2VyUG9vbElkLFxuICAgICk7XG5cbiAgICB0aGlzLmNvZ25pdG9Vc2VyUG9vbERvbWFpbiA9IFVzZXJQb29sRG9tYWluLmZyb21Eb21haW5OYW1lKFxuICAgICAgdGhpcyxcbiAgICAgIFwiSW1wb3J0VXNlclBvb2xEb21haW5cIixcbiAgICAgIHByb3BzLnVzZXJQb29sRG9tYWluLFxuICAgICk7XG5cbiAgICBDb2duaXRvVXNlclBvb2wudXNlclBvb2xJZFBhcmFtZXRlci5leHBvcnQodGhpcywgdGhpcy51c2VyUG9vbC51c2VyUG9vbElkKTtcbiAgICBDb2duaXRvVXNlclBvb2wuY29nbml0b1VzZXJQb29sRG9tYWluUGFyYW1ldGVyLmV4cG9ydChcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLmNvZ25pdG9Vc2VyUG9vbERvbWFpbi5kb21haW5OYW1lLFxuICAgICk7XG5cbiAgICBjb25zdCBwcm92aWRlck5hbWVzID1cbiAgICAgIHByb3BzLmFkZGl0aW9uYWxVc2VyUG9vbElkZW50aXR5UHJvdmlkZXJzPy5tYXAoKG5hbWUpID0+XG4gICAgICAgIFVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlci5jdXN0b20obmFtZSksXG4gICAgICApID8/IFtdO1xuXG4gICAgbGV0IHJlc291cmNlU2VydmVyID1cbiAgICAgIHByb3BzLnJlc291cmNlU2VydmVyID8/XG4gICAgICBuZXcgUmVzb3VyY2VTZXJ2ZXIodGhpcywgXCJEZWZhdWx0UmVzb3VyY2VTZXJ2ZXJcIiwge1xuICAgICAgICB1c2VyUG9vbDogdGhpcy51c2VyUG9vbCxcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hcGlVc2VyUG9vbENsaWVudCA9IG5ldyBVc2VyUG9vbENsaWVudCh0aGlzLCBcIlJFU1RBUElVc2VyUG9vbENsaWVudFwiLCB7XG4gICAgICB1c2VyUG9vbDogdGhpcy51c2VyUG9vbCxcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgb0F1dGg6IHtcbiAgICAgICAgZmxvd3M6IHtcbiAgICAgICAgICBjbGllbnRDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcGVzOiByZXNvdXJjZVNlcnZlci5jcmVhdGVPQXV0aFNjb3BlcygpLFxuICAgICAgfSxcbiAgICAgIHN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzOiBbXG4gICAgICAgIFVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlci5DT0dOSVRPLFxuICAgICAgICAuLi5wcm92aWRlck5hbWVzLFxuICAgICAgXSxcbiAgICAgIC4uLnByb3BzLmFwaUNsaWVudE9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBDb2duaXRvVXNlclBvb2wuYXBpVXNlclBvb2xDbGllbnRQYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIHRoaXMuYXBpVXNlclBvb2xDbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICApO1xuXG4gICAgdGhpcy5hcHBVc2VyUG9vbENsaWVudCA9IG5ldyBVc2VyUG9vbENsaWVudChcbiAgICAgIHRoaXMsXG4gICAgICBcIkZyb250ZW5kVXNlclBvb2xDbGllbnRcIixcbiAgICAgIHtcbiAgICAgICAgdXNlclBvb2w6IHRoaXMudXNlclBvb2wsXG5cbiAgICAgICAgLy8gUmVxdWlyZWQgbWluaW1hbCBjb25maWd1cmF0aW9uIGZvciB1c2Ugd2l0aCBhbiBFTEJcbiAgICAgICAgZ2VuZXJhdGVTZWNyZXQ6IHRydWUsXG4gICAgICAgIGF1dGhGbG93czoge1xuICAgICAgICAgIHVzZXJQYXNzd29yZDogdHJ1ZSxcbiAgICAgICAgfSxcblxuICAgICAgICBvQXV0aDoge1xuICAgICAgICAgIGZsb3dzOiB7XG4gICAgICAgICAgICBhdXRob3JpemF0aW9uQ29kZUdyYW50OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2NvcGVzOiBbXG4gICAgICAgICAgICBPQXV0aFNjb3BlLk9QRU5JRCxcbiAgICAgICAgICAgIE9BdXRoU2NvcGUuUFJPRklMRSxcbiAgICAgICAgICAgIC4uLnJlc291cmNlU2VydmVyLmNyZWF0ZU9BdXRoU2NvcGVzKCksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjYWxsYmFja1VybHM6IHByb3BzLmNhbGxiYWNrVXJscyxcbiAgICAgICAgICBsb2dvdXRVcmxzOiBwcm9wcy5sb2dvdXRVcmxzLFxuICAgICAgICB9LFxuICAgICAgICBzdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVyczogW1xuICAgICAgICAgIFVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlci5DT0dOSVRPLFxuICAgICAgICAgIC4uLnByb3ZpZGVyTmFtZXMsXG4gICAgICAgIF0sXG4gICAgICAgIC4uLnByb3BzLmFwcENsaWVudE9wdGlvbnMsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBDb2duaXRvVXNlclBvb2wuYXBwVXNlclBvb2xDbGllbnRQYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIHRoaXMuYXBwVXNlclBvb2xDbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICApO1xuXG4gICAgdGhpcy5hcHBDbGllbnRTZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIFwiQXBwQ2xpZW50U2VjcmV0XCIsIHtcbiAgICAgIHNlY3JldFN0cmluZ1ZhbHVlOiB0aGlzLmFwcFVzZXJQb29sQ2xpZW50LnVzZXJQb29sQ2xpZW50U2VjcmV0LFxuICAgIH0pO1xuXG4gICAgQ29nbml0b1VzZXJQb29sLmFwcENsaWVudFNlY3JldFBhcmFtZXRlci5leHBvcnQoXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5hcHBDbGllbnRTZWNyZXQuc2VjcmV0QXJuLFxuICAgICk7XG5cbiAgICB0aGlzLmFwcE9wZW5JZFBhcmFtZXRlcnMgPSBDb2duaXRvVXNlclBvb2wuY3JlYXRlT3BlbklkUGFyYW1ldGVycyhcbiAgICAgIHRoaXMudXNlclBvb2wsXG4gICAgICB0aGlzLmFwcFVzZXJQb29sQ2xpZW50LFxuICAgICAgdGhpcy5hcHBDbGllbnRTZWNyZXQsXG4gICAgKTtcblxuICAgIGlmIChwcm9wcy5jcmVhdGVNYW5hZ2VkTG9naW5CcmFuZGluZyA/PyB0cnVlKSB7XG4gICAgICBuZXcgQ2ZuTWFuYWdlZExvZ2luQnJhbmRpbmcodGhpcywgXCJGcm9udGVuZENsaWVudExvZ2luQnJhbmRpbmdcIiwge1xuICAgICAgICB1c2VyUG9vbElkOiB0aGlzLnVzZXJQb29sLnVzZXJQb29sSWQsXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmFwcFVzZXJQb29sQ2xpZW50LnVzZXJQb29sQ2xpZW50SWQsXG4gICAgICAgIHVzZUNvZ25pdG9Qcm92aWRlZFZhbHVlczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29nbml0b1VzZXJQb29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsYXRmb3JtL0NvZ25pdG9Vc2VyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsK0RBQXdFO0FBQ3hFLDJGQUFrRjtBQUNsRix5REFXaUM7QUFDakMsdUVBQWlFO0FBQ2pFLDJDQUF1QztBQUN2QyxvQ0FBMEM7QUFDMUMscURBQWtEO0FBMEVsRCxNQUFzQixtQkFDcEIsU0FBUSxzQkFBUzs7SUFVViw0QkFBNEI7UUFDakMsT0FBTyxJQUFJLHFEQUFzQixDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDekUsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztTQUNsRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0NBQWdDO1FBQ3JDLE9BQU8sSUFBSSwyQ0FBMEIsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7WUFDeEUsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBckJILGtEQXNCQztBQUVELE1BQWEsZUFBZ0IsU0FBUSxtQkFBbUI7O0lBQy9DLE1BQU0sQ0FBVSxtQkFBbUIsR0FBRyxJQUFJLHNCQUFjLENBQUM7UUFDOUQsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixHQUFHLEVBQUUsY0FBYztRQUNuQixNQUFNLEVBQUUsU0FBUztRQUNqQixPQUFPLEVBQUUsQ0FBQztLQUNYLENBQUMsQ0FBQztJQUVJLE1BQU0sQ0FBVSwwQkFBMEIsR0FBRyxJQUFJLHNCQUFjLENBQUM7UUFDckUsSUFBSSxFQUFFLCtCQUErQjtRQUNyQyxHQUFHLEVBQUUsdUJBQXVCO1FBQzVCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE9BQU8sRUFBRSxDQUFDO0tBQ1gsQ0FBQyxDQUFDO0lBRUksTUFBTSxDQUFV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SSxDQUFDLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxzQkFBc0IsQ0FDL0QsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7UUFFRixJQUFJLEtBQUssQ0FBQywwQkFBMEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QyxJQUFJLHFDQUF1QixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtnQkFDL0QsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtnQkFDcEMsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0I7Z0JBQ2pELHdCQUF3QixFQUFFLElBQUk7YUFDL0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBck9ILDBDQXNPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZ25pdG9Vc2VyUG9vbHNBdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBIdHRwVXNlclBvb2xBdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5djItYXV0aG9yaXplcnNcIjtcbmltcG9ydCB7XG4gIENmbk1hbmFnZWRMb2dpbkJyYW5kaW5nLFxuICBJVXNlclBvb2wsXG4gIElVc2VyUG9vbENsaWVudCxcbiAgSVVzZXJQb29sRG9tYWluLFxuICBPQXV0aFNjb3BlLFxuICBVc2VyUG9vbCxcbiAgVXNlclBvb2xDbGllbnQsXG4gIFVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlcixcbiAgVXNlclBvb2xDbGllbnRPcHRpb25zLFxuICBVc2VyUG9vbERvbWFpbixcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCI7XG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU3RhY2tQYXJhbWV0ZXIgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFJlc291cmNlU2VydmVyIH0gZnJvbSBcIi4vUmVzb3VyY2VTZXJ2ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2duaXRvVXNlclBvb2xQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIENvZ25pdG8gVXNlciBQb29sIHRvIGJlIGltcG9ydGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2xJZDogc3RyaW5nO1xuXG4gIC8qXG4gICAqIFVzZXIgcG9vbCBkb21haW5zIHByb3ZpZGUgc2VydmljZSBmb3IgbWFuYWdlZCBsb2dpbiBwYWdlcywgdGhpcmQtcGFydHkgSWRQIGF1dGhlbnRpY2F0aW9uLCBhbmQgT0lEQyBJZFAgZnVuY3Rpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2xEb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIHVzZXIgcG9vbCBpZGVudGl0eSBwcm92aWRlcnMgdG8gZW5hYmxlIGZlZGVyYXRlZCBsb2dpbi5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxVc2VyUG9vbElkZW50aXR5UHJvdmlkZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBzZXJ2ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyIHBvb2wgY2xpZW50LlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gZGVmaW5lIE9BdXRoIHNjb3BlcyBmb3IgdGhlIGNsaWVudC5cbiAgICogSWYgb21pdHRlZCwgYSBuZXcgZGVmYXVsdCByZXNvdXJjZSBzZXJ2ZXIgd2lsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVNlcnZlcj86IFJlc291cmNlU2VydmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHZhbGlkIGxvZ291dCBVUkxzIHdoaWNoIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnJvbnRlbmQgdXNlciBwb29sIGNsaWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ291dFVybHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIGNhbGxiYWNrIFVSTHMgd2hpY2ggdGhlIGZyb250ZW5kIHVzZXMgZm9yIE9JREMgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqL1xuICByZWFkb25seSBjYWxsYmFja1VybHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDbGllbnQgb3B0aW9ucyBmb3IgdGhlIEFQSSBjbGllbnQsIGV4dGVuZGluZyBhbmQgb3ZlcndyaXRpbmcgdGhlIGRlZmF1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpQ2xpZW50T3B0aW9ucz86IFVzZXJQb29sQ2xpZW50T3B0aW9ucztcblxuICAvKipcbiAgICogQ2xpZW50IG9wdGlvbnMgZm9yIHRoZSBhcHAgY2xpZW50LCBleHRlbmRpbmcgYW5kIG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGFwcENsaWVudE9wdGlvbnM/OiBVc2VyUG9vbENsaWVudE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjcmVhdGlvbiBvZiBtYW5hZ2VkIGxvZ2luIGJyYW5kaW5nIGZvciB0aGUgdXNlciBwb29sLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlTWFuYWdlZExvZ2luQnJhbmRpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE9wZW5JZFBhcmFtZXRlcnMge1xuICByZWFkb25seSBpc3N1ZXJVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xpZW50SWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuICByZWFkb25seSBzY29wZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2duaXRvVXNlclBvb2wge1xuICByZWFkb25seSB1c2VyUG9vbDogSVVzZXJQb29sO1xuICByZWFkb25seSBhcHBVc2VyUG9vbENsaWVudDogSVVzZXJQb29sQ2xpZW50O1xuICByZWFkb25seSBhcGlVc2VyUG9vbENsaWVudDogSVVzZXJQb29sQ2xpZW50O1xuICByZWFkb25seSBjb2duaXRvVXNlclBvb2xEb21haW46IElVc2VyUG9vbERvbWFpbjtcblxuICAvKipcbiAgICogQ29udGFpbnMgdGhlIE9wZW5JRCBwYXJhbWV0ZXJzIG9mIHRoZSBmcm9udGVuZC93ZWIgYXBwbGljYXRpb24gY2xpZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwT3BlbklkUGFyYW1ldGVyczogQXBwT3BlbklkUGFyYW1ldGVycztcblxuICBjcmVhdGVIdHRwVXNlclBvb2xBdXRob3JpemVyKCk6IEh0dHBVc2VyUG9vbEF1dGhvcml6ZXI7XG4gIGNyZWF0ZUNvZ25pdG9Vc2VyUG9vbHNBdXRob3JpemVyKCk6IENvZ25pdG9Vc2VyUG9vbHNBdXRob3JpemVyO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29nbml0b1VzZXJQb29sQmFzZVxuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElDb2duaXRvVXNlclBvb2xcbntcbiAgYWJzdHJhY3QgcmVhZG9ubHkgdXNlclBvb2w6IElVc2VyUG9vbDtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgYXBwVXNlclBvb2xDbGllbnQ6IElVc2VyUG9vbENsaWVudDtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgYXBpVXNlclBvb2xDbGllbnQ6IElVc2VyUG9vbENsaWVudDtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29nbml0b1VzZXJQb29sRG9tYWluOiBJVXNlclBvb2xEb21haW47XG4gIGFic3RyYWN0IHJlYWRvbmx5IGFwcENsaWVudFNlY3JldDogSVNlY3JldDtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgYXBwT3BlbklkUGFyYW1ldGVyczogQXBwT3BlbklkUGFyYW1ldGVycztcblxuICBwdWJsaWMgY3JlYXRlSHR0cFVzZXJQb29sQXV0aG9yaXplcigpOiBIdHRwVXNlclBvb2xBdXRob3JpemVyIHtcbiAgICByZXR1cm4gbmV3IEh0dHBVc2VyUG9vbEF1dGhvcml6ZXIoXCJIdHRwVXNlclBvb2xBdXRob3JpemVyXCIsIHRoaXMudXNlclBvb2wsIHtcbiAgICAgIHVzZXJQb29sQ2xpZW50czogW3RoaXMuYXBpVXNlclBvb2xDbGllbnQsIHRoaXMuYXBwVXNlclBvb2xDbGllbnRdLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUNvZ25pdG9Vc2VyUG9vbHNBdXRob3JpemVyKCk6IENvZ25pdG9Vc2VyUG9vbHNBdXRob3JpemVyIHtcbiAgICByZXR1cm4gbmV3IENvZ25pdG9Vc2VyUG9vbHNBdXRob3JpemVyKHRoaXMsIFwiQ29nbml0b1VzZXJQb29sc0F1dGhvcml6ZXJcIiwge1xuICAgICAgY29nbml0b1VzZXJQb29sczogW3RoaXMudXNlclBvb2xdLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2duaXRvVXNlclBvb2wgZXh0ZW5kcyBDb2duaXRvVXNlclBvb2xCYXNlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB1c2VyUG9vbElkUGFyYW1ldGVyID0gbmV3IFN0YWNrUGFyYW1ldGVyKHtcbiAgICBuYW1lOiBcIkNvZ25pdG8gVXNlciBQb29sIElkXCIsXG4gICAga2V5OiBcInVzZXItcG9vbC1pZFwiLFxuICAgIHByZWZpeDogXCJjb2duaXRvXCIsXG4gICAgdmVyc2lvbjogMixcbiAgfSk7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBhcHBVc2VyUG9vbENsaWVudFBhcmFtZXRlciA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgbmFtZTogXCJDb2duaXRvIEFwcGxpY2F0aW9uIENsaWVudCBJZFwiLFxuICAgIGtleTogXCJhcHBsaWNhdGlvbi1jbGllbnQtaWRcIixcbiAgICBwcmVmaXg6IFwiY29nbml0b1wiLFxuICAgIHZlcnNpb246IDIsXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgYXBpVXNlclBvb2xDbGllbnRQYXJhbWV0ZXIgPSBuZXcgU3RhY2tQYXJhbWV0ZXIoe1xuICAgIG5hbWU6IFwiQ29nbml0byBBUEkgQ2xpZW50IElkXCIsXG4gICAga2V5OiBcImFwaS1jbGllbnQtaWRcIixcbiAgICBwcmVmaXg6IFwiY29nbml0b1wiLFxuICAgIHZlcnNpb246IDIsXG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgY29nbml0b1VzZXJQb29sRG9tYWluUGFyYW1ldGVyID0gbmV3IFN0YWNrUGFyYW1ldGVyKHtcbiAgICBuYW1lOiBcIkNvZ25pdG8gVXNlciBQb29sIERvbWFpblwiLFxuICAgIGtleTogXCJ1c2VyLXBvb2wtZG9tYWluXCIsXG4gICAgcHJlZml4OiBcImNvZ25pdG9cIixcbiAgICB2ZXJzaW9uOiAxLFxuICB9KTtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGFwcENsaWVudFNlY3JldFBhcmFtZXRlciA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgbmFtZTogXCJBcHBsaWNhdGlvbiBDbGllbnQgU2VjcmV0IEFSTlwiLFxuICAgIGtleTogXCJhcHAtY2xpZW50LXNlY3JldC1hcm5cIixcbiAgICBwcmVmaXg6IFwiY29nbml0b1wiLFxuICAgIHZlcnNpb246IDEsXG4gIH0pO1xuXG4gIHN0YXRpYyBmcm9tQmFzZVBsYXRmb3JtKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBiYXNlUGxhdGZvcm1TdGFja05hbWU/OiBzdHJpbmcsXG4gICk6IElDb2duaXRvVXNlclBvb2wge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIENvZ25pdG9Vc2VyUG9vbEJhc2Uge1xuICAgICAgcmVhZG9ubHkgdXNlclBvb2wgPSBVc2VyUG9vbC5mcm9tVXNlclBvb2xJZChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb2duaXRvVXNlclBvb2xcIixcbiAgICAgICAgQ29nbml0b1VzZXJQb29sLnVzZXJQb29sSWRQYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIHJlYWRvbmx5IGFwcFVzZXJQb29sQ2xpZW50ID0gVXNlclBvb2xDbGllbnQuZnJvbVVzZXJQb29sQ2xpZW50SWQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiQXBwVXNlclBvb2xDbGllbnRcIixcbiAgICAgICAgQ29nbml0b1VzZXJQb29sLmFwcFVzZXJQb29sQ2xpZW50UGFyYW1ldGVyLmltcG9ydChcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBiYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICByZWFkb25seSBhcGlVc2VyUG9vbENsaWVudCA9IFVzZXJQb29sQ2xpZW50LmZyb21Vc2VyUG9vbENsaWVudElkKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIkFQSVVzZXJQb29sQ2xpZW50XCIsXG4gICAgICAgIENvZ25pdG9Vc2VyUG9vbC5hcGlVc2VyUG9vbENsaWVudFBhcmFtZXRlci5pbXBvcnQoXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYmFzZVBsYXRmb3JtU3RhY2tOYW1lLFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgcmVhZG9ubHkgY29nbml0b1VzZXJQb29sRG9tYWluID0gVXNlclBvb2xEb21haW4uZnJvbURvbWFpbk5hbWUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiQ29nbml0b1VzZXJQb29sRG9tYWluXCIsXG4gICAgICAgIENvZ25pdG9Vc2VyUG9vbC5jb2duaXRvVXNlclBvb2xEb21haW5QYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIHJlYWRvbmx5IGFwcENsaWVudFNlY3JldCA9IFNlY3JldC5mcm9tU2VjcmV0Q29tcGxldGVBcm4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiQXBwQ2xpZW50U2VjcmV0XCIsXG4gICAgICAgIENvZ25pdG9Vc2VyUG9vbC5hcHBDbGllbnRTZWNyZXRQYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgIGJhc2VQbGF0Zm9ybVN0YWNrTmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIHJlYWRvbmx5IGFwcE9wZW5JZFBhcmFtZXRlcnMgPSBDb2duaXRvVXNlclBvb2wuY3JlYXRlT3BlbklkUGFyYW1ldGVycyhcbiAgICAgICAgdGhpcy51c2VyUG9vbCxcbiAgICAgICAgdGhpcy5hcHBVc2VyUG9vbENsaWVudCxcbiAgICAgICAgdGhpcy5hcHBDbGllbnRTZWNyZXQsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVPcGVuSWRQYXJhbWV0ZXJzKFxuICAgIHVzZXJQb29sOiBJVXNlclBvb2wsXG4gICAgY2xpZW50OiBJVXNlclBvb2xDbGllbnQsXG4gICAgc2VjcmV0OiBJU2VjcmV0LFxuICApOiBBcHBPcGVuSWRQYXJhbWV0ZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNzdWVyVXJsOiBgaHR0cHM6Ly9jb2duaXRvLWlkcC4ke3VzZXJQb29sLnN0YWNrLnJlZ2lvbn0uYW1hem9uYXdzLmNvbS8ke3VzZXJQb29sLnVzZXJQb29sSWR9YCxcbiAgICAgIGNsaWVudElkOiBjbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICAgIHNlY3JldCxcbiAgICAgIHNjb3BlOiBcIm9wZW5pZCBwcm9maWxlXCIsXG4gICAgfTtcbiAgfVxuXG4gIHJlYWRvbmx5IHVzZXJQb29sOiBJVXNlclBvb2w7XG4gIHJlYWRvbmx5IGFwcFVzZXJQb29sQ2xpZW50OiBJVXNlclBvb2xDbGllbnQ7XG4gIHJlYWRvbmx5IGFwaVVzZXJQb29sQ2xpZW50OiBJVXNlclBvb2xDbGllbnQ7XG4gIHJlYWRvbmx5IGFwcENsaWVudFNlY3JldDogSVNlY3JldDtcbiAgcmVhZG9ubHkgY29nbml0b1VzZXJQb29sRG9tYWluOiBJVXNlclBvb2xEb21haW47XG4gIHJlYWRvbmx5IGFwcE9wZW5JZFBhcmFtZXRlcnM6IEFwcE9wZW5JZFBhcmFtZXRlcnM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvZ25pdG9Vc2VyUG9vbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudXNlclBvb2wgPSBVc2VyUG9vbC5mcm9tVXNlclBvb2xJZChcbiAgICAgIHRoaXMsXG4gICAgICBcIkltcG9ydGVkVXNlclBvb2xcIixcbiAgICAgIHByb3BzLnVzZXJQb29sSWQsXG4gICAgKTtcblxuICAgIHRoaXMuY29nbml0b1VzZXJQb29sRG9tYWluID0gVXNlclBvb2xEb21haW4uZnJvbURvbWFpbk5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgXCJJbXBvcnRVc2VyUG9vbERvbWFpblwiLFxuICAgICAgcHJvcHMudXNlclBvb2xEb21haW4sXG4gICAgKTtcblxuICAgIENvZ25pdG9Vc2VyUG9vbC51c2VyUG9vbElkUGFyYW1ldGVyLmV4cG9ydCh0aGlzLCB0aGlzLnVzZXJQb29sLnVzZXJQb29sSWQpO1xuICAgIENvZ25pdG9Vc2VyUG9vbC5jb2duaXRvVXNlclBvb2xEb21haW5QYXJhbWV0ZXIuZXhwb3J0KFxuICAgICAgdGhpcyxcbiAgICAgIHRoaXMuY29nbml0b1VzZXJQb29sRG9tYWluLmRvbWFpbk5hbWUsXG4gICAgKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyTmFtZXMgPVxuICAgICAgcHJvcHMuYWRkaXRpb25hbFVzZXJQb29sSWRlbnRpdHlQcm92aWRlcnM/Lm1hcCgobmFtZSkgPT5cbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLmN1c3RvbShuYW1lKSxcbiAgICAgICkgPz8gW107XG5cbiAgICBsZXQgcmVzb3VyY2VTZXJ2ZXIgPVxuICAgICAgcHJvcHMucmVzb3VyY2VTZXJ2ZXIgPz9cbiAgICAgIG5ldyBSZXNvdXJjZVNlcnZlcih0aGlzLCBcIkRlZmF1bHRSZXNvdXJjZVNlcnZlclwiLCB7XG4gICAgICAgIHVzZXJQb29sOiB0aGlzLnVzZXJQb29sLFxuICAgICAgfSk7XG5cbiAgICB0aGlzLmFwaVVzZXJQb29sQ2xpZW50ID0gbmV3IFVzZXJQb29sQ2xpZW50KHRoaXMsIFwiUkVTVEFQSVVzZXJQb29sQ2xpZW50XCIsIHtcbiAgICAgIHVzZXJQb29sOiB0aGlzLnVzZXJQb29sLFxuICAgICAgZ2VuZXJhdGVTZWNyZXQ6IHRydWUsXG4gICAgICBvQXV0aDoge1xuICAgICAgICBmbG93czoge1xuICAgICAgICAgIGNsaWVudENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY29wZXM6IHJlc291cmNlU2VydmVyLmNyZWF0ZU9BdXRoU2NvcGVzKCksXG4gICAgICB9LFxuICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IFtcbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE8sXG4gICAgICAgIC4uLnByb3ZpZGVyTmFtZXMsXG4gICAgICBdLFxuICAgICAgLi4ucHJvcHMuYXBpQ2xpZW50T3B0aW9ucyxcbiAgICB9KTtcblxuICAgIENvZ25pdG9Vc2VyUG9vbC5hcGlVc2VyUG9vbENsaWVudFBhcmFtZXRlci5leHBvcnQoXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5hcGlVc2VyUG9vbENsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgICk7XG5cbiAgICB0aGlzLmFwcFVzZXJQb29sQ2xpZW50ID0gbmV3IFVzZXJQb29sQ2xpZW50KFxuICAgICAgdGhpcyxcbiAgICAgIFwiRnJvbnRlbmRVc2VyUG9vbENsaWVudFwiLFxuICAgICAge1xuICAgICAgICB1c2VyUG9vbDogdGhpcy51c2VyUG9vbCxcblxuICAgICAgICAvLyBSZXF1aXJlZCBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gZm9yIHVzZSB3aXRoIGFuIEVMQlxuICAgICAgICBnZW5lcmF0ZVNlY3JldDogdHJ1ZSxcbiAgICAgICAgYXV0aEZsb3dzOiB7XG4gICAgICAgICAgdXNlclBhc3N3b3JkOiB0cnVlLFxuICAgICAgICB9LFxuXG4gICAgICAgIG9BdXRoOiB7XG4gICAgICAgICAgZmxvd3M6IHtcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25Db2RlR3JhbnQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzY29wZXM6IFtcbiAgICAgICAgICAgIE9BdXRoU2NvcGUuT1BFTklELFxuICAgICAgICAgICAgT0F1dGhTY29wZS5QUk9GSUxFLFxuICAgICAgICAgICAgLi4ucmVzb3VyY2VTZXJ2ZXIuY3JlYXRlT0F1dGhTY29wZXMoKSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGNhbGxiYWNrVXJsczogcHJvcHMuY2FsbGJhY2tVcmxzLFxuICAgICAgICAgIGxvZ291dFVybHM6IHByb3BzLmxvZ291dFVybHMsXG4gICAgICAgIH0sXG4gICAgICAgIHN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzOiBbXG4gICAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE8sXG4gICAgICAgICAgLi4ucHJvdmlkZXJOYW1lcyxcbiAgICAgICAgXSxcbiAgICAgICAgLi4ucHJvcHMuYXBwQ2xpZW50T3B0aW9ucyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIENvZ25pdG9Vc2VyUG9vbC5hcHBVc2VyUG9vbENsaWVudFBhcmFtZXRlci5leHBvcnQoXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5hcHBVc2VyUG9vbENsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgICk7XG5cbiAgICB0aGlzLmFwcENsaWVudFNlY3JldCA9IG5ldyBTZWNyZXQodGhpcywgXCJBcHBDbGllbnRTZWNyZXRcIiwge1xuICAgICAgc2VjcmV0U3RyaW5nVmFsdWU6IHRoaXMuYXBwVXNlclBvb2xDbGllbnQudXNlclBvb2xDbGllbnRTZWNyZXQsXG4gICAgfSk7XG5cbiAgICBDb2duaXRvVXNlclBvb2wuYXBwQ2xpZW50U2VjcmV0UGFyYW1ldGVyLmV4cG9ydChcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLmFwcENsaWVudFNlY3JldC5zZWNyZXRBcm4sXG4gICAgKTtcblxuICAgIHRoaXMuYXBwT3BlbklkUGFyYW1ldGVycyA9IENvZ25pdG9Vc2VyUG9vbC5jcmVhdGVPcGVuSWRQYXJhbWV0ZXJzKFxuICAgICAgdGhpcy51c2VyUG9vbCxcbiAgICAgIHRoaXMuYXBwVXNlclBvb2xDbGllbnQsXG4gICAgICB0aGlzLmFwcENsaWVudFNlY3JldCxcbiAgICApO1xuXG4gICAgaWYgKHByb3BzLmNyZWF0ZU1hbmFnZWRMb2dpbkJyYW5kaW5nID8/IHRydWUpIHtcbiAgICAgIG5ldyBDZm5NYW5hZ2VkTG9naW5CcmFuZGluZyh0aGlzLCBcIkZyb250ZW5kQ2xpZW50TG9naW5CcmFuZGluZ1wiLCB7XG4gICAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlclBvb2wudXNlclBvb2xJZCxcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuYXBwVXNlclBvb2xDbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICAgICAgdXNlQ29nbml0b1Byb3ZpZGVkVmFsdWVzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.DefaultUserPoolClients = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -12,6 +11,9 @@ const utils_1 = require("../utils");
12
11
  * @deprecated Use {@link CognitoUserPool} instead
13
12
  */
14
13
  class DefaultUserPoolClients extends constructs_1.Construct {
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@btc-embedded/cdk-extensions.DefaultUserPoolClients", version: "0.23.7" };
15
+ frontendClient;
16
+ apiClient;
15
17
  constructor(scope, id, props) {
16
18
  super(scope, id);
17
19
  const apiAccessScope = new aws_cognito_1.ResourceServerScope({
@@ -96,6 +98,4 @@ class DefaultUserPoolClients extends constructs_1.Construct {
96
98
  }
97
99
  }
98
100
  exports.DefaultUserPoolClients = DefaultUserPoolClients;
99
- _a = JSII_RTTI_SYMBOL_1;
100
- DefaultUserPoolClients[_a] = { fqn: "@btc-embedded/cdk-extensions.DefaultUserPoolClients", version: "0.23.5" };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFVzZXJQb29sQ2xpZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbGF0Zm9ybS9EZWZhdWx0VXNlclBvb2xDbGllbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseURBUWlDO0FBQ2pDLHVFQUF3RDtBQUN4RCwyQ0FBdUM7QUFDdkMsb0NBQTBDO0FBaUQxQzs7O0dBR0c7QUFDSCxNQUFhLHNCQUF1QixTQUFRLHNCQUFTO0lBSW5ELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxjQUFjLEdBQUcsSUFBSSxpQ0FBbUIsQ0FBQztZQUM3QyxTQUFTLEVBQUUsWUFBWTtZQUN2QixnQkFBZ0IsRUFBRSw0QkFBNEI7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRTtZQUN2RSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVM7WUFDMUIsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUNqQixLQUFLLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDckQsNENBQThCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUM1QyxJQUFJLEVBQUUsQ0FBQztRQUVWLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBRTlDLE1BQU0sY0FBYyxHQUFHLHdCQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDakUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLEtBQUssRUFBRTtnQkFDTCxLQUFLLEVBQUU7b0JBQ0wsaUJBQWlCLEVBQUUsSUFBSTtpQkFDeEI7Z0JBQ0QsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDO2FBQ3pCO1lBQ0QsMEJBQTBCLEVBQUU7Z0JBQzFCLDRDQUE4QixDQUFDLE9BQU87Z0JBQ3RDLEdBQUcsYUFBYTthQUNqQjtZQUNELEdBQUcsS0FBSyxDQUFDLGdCQUFnQjtTQUMxQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDdkUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBRXhCLHFEQUFxRDtZQUNyRCxjQUFjLEVBQUUsSUFBSTtZQUNwQixTQUFTLEVBQUU7Z0JBQ1QsWUFBWSxFQUFFLElBQUk7YUFDbkI7WUFFRCxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFO29CQUNMLHNCQUFzQixFQUFFLElBQUk7aUJBQzdCO2dCQUNELE1BQU0sRUFBRTtvQkFDTix3QkFBVSxDQUFDLE1BQU07b0JBQ2pCLHdCQUFVLENBQUMsT0FBTztvQkFDbEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7aUJBQ3JDO2dCQUNELFlBQVksRUFBRTtvQkFDWiwyQkFBMkI7b0JBQzNCLFdBQVcsS0FBSyxDQUFDLElBQUkscUJBQXFCO29CQUMxQyxHQUFHLFlBQVk7aUJBQ2hCO2dCQUNELFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTthQUM3QjtZQUNELDBCQUEwQixFQUFFO2dCQUMxQiw0Q0FBOEIsQ0FBQyxPQUFPO2dCQUN0QyxHQUFHLGFBQWE7YUFDakI7WUFDRCxHQUFHLEtBQUssQ0FBQyxxQkFBcUI7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxTQUFTLEdBQUcsSUFBSSwyQkFBTSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUNwRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQjtTQUN2RCxDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFBLHNCQUFjLEVBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXBELFdBQVcsQ0FBQztZQUNWLElBQUksRUFBRSwrQkFBK0I7WUFDckMsR0FBRyxFQUFFLHVCQUF1QjtZQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0I7U0FDdkMsQ0FBQyxDQUFDO1FBRUgsV0FBVyxDQUFDO1lBQ1YsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxHQUFHLEVBQUUsMEJBQTBCO1lBQy9CLEtBQUssRUFBRSxjQUFjLENBQUMsU0FBUztTQUNoQyxDQUFDLENBQUM7UUFFSCxXQUFXLENBQUM7WUFDVixJQUFJLEVBQUUsMkJBQTJCO1lBQ2pDLEdBQUcsRUFBRSwyQkFBMkI7WUFDaEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQztRQUVILFdBQVcsQ0FBQztZQUNWLElBQUksRUFBRSw2QkFBNkI7WUFDbkMsR0FBRyxFQUFFLHFCQUFxQjtZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0I7U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEzR0gsd0RBNEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSVVzZXJQb29sLFxuICBJVXNlclBvb2xDbGllbnQsXG4gIE9BdXRoU2NvcGUsXG4gIFJlc291cmNlU2VydmVyU2NvcGUsXG4gIFVzZXJQb29sQ2xpZW50LFxuICBVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIsXG4gIFVzZXJQb29sQ2xpZW50T3B0aW9ucyxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2duaXRvXCI7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgY3JlYXRlRXhwb3J0ZXIgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0VXNlclBvb2xDbGllbnRzUHJvcHMge1xuICAvKipcbiAgICogVGhlIHVzZXIgcG9vbCB3aGljaCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIGNsaWVudHMuXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbDogSVVzZXJQb29sO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIHdoaWNoIHRoZSBBTEIgd2lsbCBsaXN0ZW4gdG8uXG4gICAqXG4gICAqIFRoaXMgc2V0dGluZyBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgY29ycmVjdCBjYWxsYmFjayBVUkwgZm9yIHVzZXIgcG9vbFxuICAgKiBjbGllbnQgc3VjaCB0aGF0IHRoZSBBTEIgY2FuIHBlcmZvcm0gYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqL1xuICByZWFkb25seSBmcWRuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdmFsaWQgbG9nb3V0IFVSTHMgd2hpY2ggc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmcm9udGVuZCB1c2VyIHBvb2wgY2xpZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nb3V0VXJscz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGFkZGl0aW9uYWwgY2FsbGJhY2sgVVJMcyB3aGljaCB0aGUgZnJvbnRlbmQgdXNlcyBmb3IgT0lEQyBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGNhbGxiYWNrVXJscz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGFkZGl0aW9uYWwgdXNlciBwb29sIGlkZW50aXR5IHByb3ZpZGVycyB0byBlbmFibGUgZmVkZXJhdGVkIGxvZ2luLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRvbmFsVXNlclBvb2xJZGVudGl0eVByb3ZpZGVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDbGllbnQgb3B0aW9ucyBmb3IgdGhlIEFQSSBjbGllbnQsIGV4dGVuZGluZyBhbmQgb3ZlcndyaXRpbmcgdGhlIGRlZmF1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpQ2xpZW50T3B0aW9ucz86IFVzZXJQb29sQ2xpZW50T3B0aW9ucztcblxuICAvKipcbiAgICogQ2xpZW50IG9wdGlvbnMgZm9yIHRoZSBmcm9udGVuZCBjbGllbnQsIGV4dGVuZGluZyBhbmQgb3ZlcndyaXRpbmcgdGhlIGRlZmF1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRlbmRDbGllbnRPcHRpb25zPzogVXNlclBvb2xDbGllbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIE9BdXRoIHNjb3BlcyBmb3IgdGhlIGZyb250ZW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRlbmRPQXV0aFNjb3Blcz86IE9BdXRoU2NvcGVbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgZGVmYXVsdCB1c2VyIHBvb2wgY2xpZW50cyBmb3IgdGhlIGZyb250ZW5kIGFuZCBBUEkgYWNjZXNzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBDb2duaXRvVXNlclBvb2x9ICBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0VXNlclBvb2xDbGllbnRzIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGZyb250ZW5kQ2xpZW50OiBJVXNlclBvb2xDbGllbnQ7XG4gIHB1YmxpYyBhcGlDbGllbnQ6IElVc2VyUG9vbENsaWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IERlZmF1bHRVc2VyUG9vbENsaWVudHNQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGFwaUFjY2Vzc1Njb3BlID0gbmV3IFJlc291cmNlU2VydmVyU2NvcGUoe1xuICAgICAgc2NvcGVOYW1lOiBcImFwaV9hY2Nlc3NcIixcbiAgICAgIHNjb3BlRGVzY3JpcHRpb246IFwiUkVTVCBBUEkgZnVsbCBhY2Nlc3Mgc2NvcGVcIixcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlcnZlciA9IHByb3BzLnVzZXJQb29sLmFkZFJlc291cmNlU2VydmVyKFwiUkVTVEFQSVJlc291cmNlU2VydmVyXCIsIHtcbiAgICAgIGlkZW50aWZpZXI6IGAke2lkfVJFU1RBUElgLFxuICAgICAgc2NvcGVzOiBbYXBpQWNjZXNzU2NvcGVdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHJvdmlkZXJOYW1lcyA9XG4gICAgICBwcm9wcy5hZGRpdG9uYWxVc2VyUG9vbElkZW50aXR5UHJvdmlkZXJzPy5tYXAoKG5hbWUpID0+XG4gICAgICAgIFVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlci5jdXN0b20obmFtZSksXG4gICAgICApID8/IFtdO1xuXG4gICAgY29uc3QgY2FsbGJhY2tVcmxzID0gcHJvcHMuY2FsbGJhY2tVcmxzID8/IFtdO1xuXG4gICAgY29uc3QgYXBpQ2xpZW50U2NvcGUgPSBPQXV0aFNjb3BlLnJlc291cmNlU2VydmVyKHNlcnZlciwgYXBpQWNjZXNzU2NvcGUpO1xuXG4gICAgdGhpcy5hcGlDbGllbnQgPSBuZXcgVXNlclBvb2xDbGllbnQodGhpcywgXCJSRVNUQVBJVXNlclBvb2xDbGllbnRcIiwge1xuICAgICAgdXNlclBvb2w6IHByb3BzLnVzZXJQb29sLFxuICAgICAgZ2VuZXJhdGVTZWNyZXQ6IHRydWUsXG4gICAgICBvQXV0aDoge1xuICAgICAgICBmbG93czoge1xuICAgICAgICAgIGNsaWVudENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY29wZXM6IFthcGlDbGllbnRTY29wZV0sXG4gICAgICB9LFxuICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IFtcbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE8sXG4gICAgICAgIC4uLnByb3ZpZGVyTmFtZXMsXG4gICAgICBdLFxuICAgICAgLi4ucHJvcHMuYXBpQ2xpZW50T3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuZnJvbnRlbmRDbGllbnQgPSBuZXcgVXNlclBvb2xDbGllbnQodGhpcywgXCJGcm9udGVuZFVzZXJQb29sQ2xpZW50XCIsIHtcbiAgICAgIHVzZXJQb29sOiBwcm9wcy51c2VyUG9vbCxcblxuICAgICAgLy8gUmVxdWlyZWQgbWluaW1hbCBjb25maWd1cmF0aW9uIGZvciB1c2Ugd2l0aCBhbiBFTEJcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgYXV0aEZsb3dzOiB7XG4gICAgICAgIHVzZXJQYXNzd29yZDogdHJ1ZSxcbiAgICAgIH0sXG5cbiAgICAgIG9BdXRoOiB7XG4gICAgICAgIGZsb3dzOiB7XG4gICAgICAgICAgYXV0aG9yaXphdGlvbkNvZGVHcmFudDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcGVzOiBbXG4gICAgICAgICAgT0F1dGhTY29wZS5PUEVOSUQsXG4gICAgICAgICAgT0F1dGhTY29wZS5QUk9GSUxFLFxuICAgICAgICAgIC4uLihwcm9wcy5mcm9udGVuZE9BdXRoU2NvcGVzID8/IFtdKSxcbiAgICAgICAgXSxcbiAgICAgICAgY2FsbGJhY2tVcmxzOiBbXG4gICAgICAgICAgLy8gYWRkIGNhbGxiYWNrIFVSTCBmb3IgQUxCXG4gICAgICAgICAgYGh0dHBzOi8vJHtwcm9wcy5mcWRufS9vYXV0aDIvaWRwcmVzcG9uc2VgLFxuICAgICAgICAgIC4uLmNhbGxiYWNrVXJscyxcbiAgICAgICAgXSxcbiAgICAgICAgbG9nb3V0VXJsczogcHJvcHMubG9nb3V0VXJscyxcbiAgICAgIH0sXG4gICAgICBzdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVyczogW1xuICAgICAgICBVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIuQ09HTklUTyxcbiAgICAgICAgLi4ucHJvdmlkZXJOYW1lcyxcbiAgICAgIF0sXG4gICAgICAuLi5wcm9wcy5mcm9udGVuZENsaWVudE9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBhcGlTZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIFwiQXBpQ2xpZW50U2VjcmV0XCIsIHtcbiAgICAgIHNlY3JldFN0cmluZ1ZhbHVlOiB0aGlzLmFwaUNsaWVudC51c2VyUG9vbENsaWVudFNlY3JldCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGV4cG9ydFZhbHVlID0gY3JlYXRlRXhwb3J0ZXIodGhpcywgXCJjb2duaXRvXCIpO1xuXG4gICAgZXhwb3J0VmFsdWUoe1xuICAgICAgbmFtZTogXCJDb2duaXRvIEZ1bGwgQWNjZXNzIENsaWVudCBJZFwiLFxuICAgICAga2V5OiBcImZ1bGwtYWNjZXNzLWNsaWVudC1pZFwiLFxuICAgICAgdmFsdWU6IHRoaXMuYXBpQ2xpZW50LnVzZXJQb29sQ2xpZW50SWQsXG4gICAgfSk7XG5cbiAgICBleHBvcnRWYWx1ZSh7XG4gICAgICBuYW1lOiBcIkNvZ25pdG8gQXBpIENsaWVudCBTY29wZVwiLFxuICAgICAga2V5OiBcImZ1bGwtYWNjZXNzLWNsaWVudC1zY29wZVwiLFxuICAgICAgdmFsdWU6IGFwaUNsaWVudFNjb3BlLnNjb3BlTmFtZSxcbiAgICB9KTtcblxuICAgIGV4cG9ydFZhbHVlKHtcbiAgICAgIG5hbWU6IFwiQ29nbml0byBBcGkgQ2xpZW50IFNlY3JldFwiLFxuICAgICAga2V5OiBcImZ1bGwtYWNjZXNzLWNsaWVudC1zZWNyZXRcIixcbiAgICAgIHZhbHVlOiBhcGlTZWNyZXQuc2VjcmV0QXJuLFxuICAgIH0pO1xuXG4gICAgZXhwb3J0VmFsdWUoe1xuICAgICAgbmFtZTogXCJDb2duaXRvIFVzZXIgUG9vbCBDbGllbnQgSWRcIixcbiAgICAgIGtleTogXCJ1c2VyLXBvb2wtY2xpZW50LWlkXCIsXG4gICAgICB2YWx1ZTogdGhpcy5mcm9udGVuZENsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFVzZXJQb29sQ2xpZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbGF0Zm9ybS9EZWZhdWx0VXNlclBvb2xDbGllbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx5REFRaUM7QUFDakMsdUVBQXdEO0FBQ3hELDJDQUF1QztBQUN2QyxvQ0FBMEM7QUFpRDFDOzs7R0FHRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsc0JBQVM7O0lBQzVDLGNBQWMsQ0FBa0I7SUFDaEMsU0FBUyxDQUFrQjtJQUVsQyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrQztRQUVsQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sY0FBYyxHQUFHLElBQUksaUNBQW1CLENBQUM7WUFDN0MsU0FBUyxFQUFFLFlBQVk7WUFDdkIsZ0JBQWdCLEVBQUUsNEJBQTRCO1NBQy9DLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUU7WUFDdkUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTO1lBQzFCLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQztTQUN6QixDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FDakIsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3JELDRDQUE4QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDNUMsSUFBSSxFQUFFLENBQUM7UUFFVixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUU5QyxNQUFNLGNBQWMsR0FBRyx3QkFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQ2pFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixjQUFjLEVBQUUsSUFBSTtZQUNwQixLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFO29CQUNMLGlCQUFpQixFQUFFLElBQUk7aUJBQ3hCO2dCQUNELE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUN6QjtZQUNELDBCQUEwQixFQUFFO2dCQUMxQiw0Q0FBOEIsQ0FBQyxPQUFPO2dCQUN0QyxHQUFHLGFBQWE7YUFDakI7WUFDRCxHQUFHLEtBQUssQ0FBQyxnQkFBZ0I7U0FDMUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFO1lBQ3ZFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUV4QixxREFBcUQ7WUFDckQsY0FBYyxFQUFFLElBQUk7WUFDcEIsU0FBUyxFQUFFO2dCQUNULFlBQVksRUFBRSxJQUFJO2FBQ25CO1lBRUQsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRTtvQkFDTCxzQkFBc0IsRUFBRSxJQUFJO2lCQUM3QjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sd0JBQVUsQ0FBQyxNQUFNO29CQUNqQix3QkFBVSxDQUFDLE9BQU87b0JBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO2lCQUNyQztnQkFDRCxZQUFZLEVBQUU7b0JBQ1osMkJBQTJCO29CQUMzQixXQUFXLEtBQUssQ0FBQyxJQUFJLHFCQUFxQjtvQkFDMUMsR0FBRyxZQUFZO2lCQUNoQjtnQkFDRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDN0I7WUFDRCwwQkFBMEIsRUFBRTtnQkFDMUIsNENBQThCLENBQUMsT0FBTztnQkFDdEMsR0FBRyxhQUFhO2FBQ2pCO1lBQ0QsR0FBRyxLQUFLLENBQUMscUJBQXFCO1NBQy9CLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksMkJBQU0sQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDcEQsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0I7U0FDdkQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsSUFBQSxzQkFBYyxFQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVwRCxXQUFXLENBQUM7WUFDVixJQUFJLEVBQUUsK0JBQStCO1lBQ3JDLEdBQUcsRUFBRSx1QkFBdUI7WUFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCO1NBQ3ZDLENBQUMsQ0FBQztRQUVILFdBQVcsQ0FBQztZQUNWLElBQUksRUFBRSwwQkFBMEI7WUFDaEMsR0FBRyxFQUFFLDBCQUEwQjtZQUMvQixLQUFLLEVBQUUsY0FBYyxDQUFDLFNBQVM7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsV0FBVyxDQUFDO1lBQ1YsSUFBSSxFQUFFLDJCQUEyQjtZQUNqQyxHQUFHLEVBQUUsMkJBQTJCO1lBQ2hDLEtBQUssRUFBRSxTQUFTLENBQUMsU0FBUztTQUMzQixDQUFDLENBQUM7UUFFSCxXQUFXLENBQUM7WUFDVixJQUFJLEVBQUUsNkJBQTZCO1lBQ25DLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBM0dILHdEQTRHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElVc2VyUG9vbCxcbiAgSVVzZXJQb29sQ2xpZW50LFxuICBPQXV0aFNjb3BlLFxuICBSZXNvdXJjZVNlcnZlclNjb3BlLFxuICBVc2VyUG9vbENsaWVudCxcbiAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLFxuICBVc2VyUG9vbENsaWVudE9wdGlvbnMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29nbml0b1wiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGNyZWF0ZUV4cG9ydGVyIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFVzZXJQb29sQ2xpZW50c1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB1c2VyIHBvb2wgd2hpY2ggc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZSBjbGllbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2w6IElVc2VyUG9vbDtcblxuICAvKipcbiAgICogVGhlIGZ1bGx5IHF1YWxpZmllZCBkb21haW4gbmFtZSB3aGljaCB0aGUgQUxCIHdpbGwgbGlzdGVuIHRvLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIGNvcnJlY3QgY2FsbGJhY2sgVVJMIGZvciB1c2VyIHBvb2xcbiAgICogY2xpZW50IHN1Y2ggdGhhdCB0aGUgQUxCIGNhbiBwZXJmb3JtIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgZnFkbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHZhbGlkIGxvZ291dCBVUkxzIHdoaWNoIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnJvbnRlbmQgdXNlciBwb29sIGNsaWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ291dFVybHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIGNhbGxiYWNrIFVSTHMgd2hpY2ggdGhlIGZyb250ZW5kIHVzZXMgZm9yIE9JREMgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqL1xuICByZWFkb25seSBjYWxsYmFja1VybHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIHVzZXIgcG9vbCBpZGVudGl0eSBwcm92aWRlcnMgdG8gZW5hYmxlIGZlZGVyYXRlZCBsb2dpbi5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0b25hbFVzZXJQb29sSWRlbnRpdHlQcm92aWRlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ2xpZW50IG9wdGlvbnMgZm9yIHRoZSBBUEkgY2xpZW50LCBleHRlbmRpbmcgYW5kIG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGFwaUNsaWVudE9wdGlvbnM/OiBVc2VyUG9vbENsaWVudE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIENsaWVudCBvcHRpb25zIGZvciB0aGUgZnJvbnRlbmQgY2xpZW50LCBleHRlbmRpbmcgYW5kIG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250ZW5kQ2xpZW50T3B0aW9ucz86IFVzZXJQb29sQ2xpZW50T3B0aW9ucztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBPQXV0aCBzY29wZXMgZm9yIHRoZSBmcm9udGVuZC5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250ZW5kT0F1dGhTY29wZXM/OiBPQXV0aFNjb3BlW107XG59XG5cbi8qKlxuICogQ3JlYXRlIGRlZmF1bHQgdXNlciBwb29sIGNsaWVudHMgZm9yIHRoZSBmcm9udGVuZCBhbmQgQVBJIGFjY2Vzcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgQ29nbml0b1VzZXJQb29sfSAgaW5zdGVhZFxuICovXG5leHBvcnQgY2xhc3MgRGVmYXVsdFVzZXJQb29sQ2xpZW50cyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBmcm9udGVuZENsaWVudDogSVVzZXJQb29sQ2xpZW50O1xuICBwdWJsaWMgYXBpQ2xpZW50OiBJVXNlclBvb2xDbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEZWZhdWx0VXNlclBvb2xDbGllbnRzUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBhcGlBY2Nlc3NTY29wZSA9IG5ldyBSZXNvdXJjZVNlcnZlclNjb3BlKHtcbiAgICAgIHNjb3BlTmFtZTogXCJhcGlfYWNjZXNzXCIsXG4gICAgICBzY29wZURlc2NyaXB0aW9uOiBcIlJFU1QgQVBJIGZ1bGwgYWNjZXNzIHNjb3BlXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZXJ2ZXIgPSBwcm9wcy51c2VyUG9vbC5hZGRSZXNvdXJjZVNlcnZlcihcIlJFU1RBUElSZXNvdXJjZVNlcnZlclwiLCB7XG4gICAgICBpZGVudGlmaWVyOiBgJHtpZH1SRVNUQVBJYCxcbiAgICAgIHNjb3BlczogW2FwaUFjY2Vzc1Njb3BlXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHByb3ZpZGVyTmFtZXMgPVxuICAgICAgcHJvcHMuYWRkaXRvbmFsVXNlclBvb2xJZGVudGl0eVByb3ZpZGVycz8ubWFwKChuYW1lKSA9PlxuICAgICAgICBVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIuY3VzdG9tKG5hbWUpLFxuICAgICAgKSA/PyBbXTtcblxuICAgIGNvbnN0IGNhbGxiYWNrVXJscyA9IHByb3BzLmNhbGxiYWNrVXJscyA/PyBbXTtcblxuICAgIGNvbnN0IGFwaUNsaWVudFNjb3BlID0gT0F1dGhTY29wZS5yZXNvdXJjZVNlcnZlcihzZXJ2ZXIsIGFwaUFjY2Vzc1Njb3BlKTtcblxuICAgIHRoaXMuYXBpQ2xpZW50ID0gbmV3IFVzZXJQb29sQ2xpZW50KHRoaXMsIFwiUkVTVEFQSVVzZXJQb29sQ2xpZW50XCIsIHtcbiAgICAgIHVzZXJQb29sOiBwcm9wcy51c2VyUG9vbCxcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgb0F1dGg6IHtcbiAgICAgICAgZmxvd3M6IHtcbiAgICAgICAgICBjbGllbnRDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcGVzOiBbYXBpQ2xpZW50U2NvcGVdLFxuICAgICAgfSxcbiAgICAgIHN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzOiBbXG4gICAgICAgIFVzZXJQb29sQ2xpZW50SWRlbnRpdHlQcm92aWRlci5DT0dOSVRPLFxuICAgICAgICAuLi5wcm92aWRlck5hbWVzLFxuICAgICAgXSxcbiAgICAgIC4uLnByb3BzLmFwaUNsaWVudE9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmZyb250ZW5kQ2xpZW50ID0gbmV3IFVzZXJQb29sQ2xpZW50KHRoaXMsIFwiRnJvbnRlbmRVc2VyUG9vbENsaWVudFwiLCB7XG4gICAgICB1c2VyUG9vbDogcHJvcHMudXNlclBvb2wsXG5cbiAgICAgIC8vIFJlcXVpcmVkIG1pbmltYWwgY29uZmlndXJhdGlvbiBmb3IgdXNlIHdpdGggYW4gRUxCXG4gICAgICBnZW5lcmF0ZVNlY3JldDogdHJ1ZSxcbiAgICAgIGF1dGhGbG93czoge1xuICAgICAgICB1c2VyUGFzc3dvcmQ6IHRydWUsXG4gICAgICB9LFxuXG4gICAgICBvQXV0aDoge1xuICAgICAgICBmbG93czoge1xuICAgICAgICAgIGF1dGhvcml6YXRpb25Db2RlR3JhbnQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHNjb3BlczogW1xuICAgICAgICAgIE9BdXRoU2NvcGUuT1BFTklELFxuICAgICAgICAgIE9BdXRoU2NvcGUuUFJPRklMRSxcbiAgICAgICAgICAuLi4ocHJvcHMuZnJvbnRlbmRPQXV0aFNjb3BlcyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIGNhbGxiYWNrVXJsczogW1xuICAgICAgICAgIC8vIGFkZCBjYWxsYmFjayBVUkwgZm9yIEFMQlxuICAgICAgICAgIGBodHRwczovLyR7cHJvcHMuZnFkbn0vb2F1dGgyL2lkcHJlc3BvbnNlYCxcbiAgICAgICAgICAuLi5jYWxsYmFja1VybHMsXG4gICAgICAgIF0sXG4gICAgICAgIGxvZ291dFVybHM6IHByb3BzLmxvZ291dFVybHMsXG4gICAgICB9LFxuICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IFtcbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE8sXG4gICAgICAgIC4uLnByb3ZpZGVyTmFtZXMsXG4gICAgICBdLFxuICAgICAgLi4ucHJvcHMuZnJvbnRlbmRDbGllbnRPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYXBpU2VjcmV0ID0gbmV3IFNlY3JldCh0aGlzLCBcIkFwaUNsaWVudFNlY3JldFwiLCB7XG4gICAgICBzZWNyZXRTdHJpbmdWYWx1ZTogdGhpcy5hcGlDbGllbnQudXNlclBvb2xDbGllbnRTZWNyZXQsXG4gICAgfSk7XG5cbiAgICBjb25zdCBleHBvcnRWYWx1ZSA9IGNyZWF0ZUV4cG9ydGVyKHRoaXMsIFwiY29nbml0b1wiKTtcblxuICAgIGV4cG9ydFZhbHVlKHtcbiAgICAgIG5hbWU6IFwiQ29nbml0byBGdWxsIEFjY2VzcyBDbGllbnQgSWRcIixcbiAgICAgIGtleTogXCJmdWxsLWFjY2Vzcy1jbGllbnQtaWRcIixcbiAgICAgIHZhbHVlOiB0aGlzLmFwaUNsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgIH0pO1xuXG4gICAgZXhwb3J0VmFsdWUoe1xuICAgICAgbmFtZTogXCJDb2duaXRvIEFwaSBDbGllbnQgU2NvcGVcIixcbiAgICAgIGtleTogXCJmdWxsLWFjY2Vzcy1jbGllbnQtc2NvcGVcIixcbiAgICAgIHZhbHVlOiBhcGlDbGllbnRTY29wZS5zY29wZU5hbWUsXG4gICAgfSk7XG5cbiAgICBleHBvcnRWYWx1ZSh7XG4gICAgICBuYW1lOiBcIkNvZ25pdG8gQXBpIENsaWVudCBTZWNyZXRcIixcbiAgICAgIGtleTogXCJmdWxsLWFjY2Vzcy1jbGllbnQtc2VjcmV0XCIsXG4gICAgICB2YWx1ZTogYXBpU2VjcmV0LnNlY3JldEFybixcbiAgICB9KTtcblxuICAgIGV4cG9ydFZhbHVlKHtcbiAgICAgIG5hbWU6IFwiQ29nbml0byBVc2VyIFBvb2wgQ2xpZW50IElkXCIsXG4gICAgICBrZXk6IFwidXNlci1wb29sLWNsaWVudC1pZFwiLFxuICAgICAgdmFsdWU6IHRoaXMuZnJvbnRlbmRDbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICB9KTtcbiAgfVxufVxuIl19