@fjall/components-infrastructure 0.79.3 → 0.80.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/app.d.ts +39 -2
- package/dist/lib/app.js +85 -4
- package/dist/lib/aspects/resourceInventory.d.ts +41 -0
- package/dist/lib/aspects/resourceInventory.js +56 -0
- package/dist/lib/config/audit.d.ts +18 -0
- package/dist/lib/config/audit.js +22 -0
- package/dist/lib/config/aws/accountId.js +3 -3
- package/dist/lib/config/aws/ecrDefaultImage.js +7 -7
- package/dist/lib/config/aws/identityCenter.js +7 -8
- package/dist/lib/config/aws/identityCenterGroupMembership.js +6 -6
- package/dist/lib/config/aws/ipam.js +3 -3
- package/dist/lib/config/aws/ipamPoolId.js +4 -4
- package/dist/lib/config/aws/organisation.js +2 -3
- package/dist/lib/config/aws/organisationId.js +4 -4
- package/dist/lib/patterns/aws/auditRole.d.ts +44 -0
- package/dist/lib/patterns/aws/auditRole.js +58 -0
- package/dist/lib/patterns/aws/buildkite.js +12 -12
- package/dist/lib/patterns/aws/cdn.d.ts +133 -0
- package/dist/lib/patterns/aws/cdn.js +216 -0
- package/dist/lib/patterns/aws/compute.d.ts +32 -13
- package/dist/lib/patterns/aws/compute.js +24 -14
- package/dist/lib/patterns/aws/database.d.ts +2 -1
- package/dist/lib/patterns/aws/database.js +7 -2
- package/dist/lib/patterns/aws/dynamodb.d.ts +66 -0
- package/dist/lib/patterns/aws/dynamodb.js +106 -0
- package/dist/lib/patterns/aws/hostedZone.js +1 -1
- package/dist/lib/patterns/aws/index.d.ts +1 -0
- package/dist/lib/patterns/aws/index.js +2 -1
- package/dist/lib/patterns/aws/loadBalancer.d.ts +163 -0
- package/dist/lib/patterns/aws/loadBalancer.js +278 -0
- package/dist/lib/patterns/aws/managedAccount.js +3 -4
- package/dist/lib/patterns/aws/queue.d.ts +61 -0
- package/dist/lib/patterns/aws/queue.js +103 -0
- package/dist/lib/patterns/aws/storage.js +3 -2
- package/dist/lib/patterns/aws/subdomainHostedZone.js +2 -2
- package/dist/lib/resources/aws/audit/auditRole.d.ts +32 -0
- package/dist/lib/resources/aws/audit/auditRole.js +44 -0
- package/dist/lib/resources/aws/backup/backupPlan.js +3 -4
- package/dist/lib/resources/aws/backup/backupVault.js +3 -4
- package/dist/lib/resources/aws/base/awsStack.js +1 -2
- package/dist/lib/resources/aws/cdn/cloudFront.d.ts +65 -0
- package/dist/lib/resources/aws/cdn/cloudFront.js +135 -0
- package/dist/lib/resources/aws/cdn/index.d.ts +1 -0
- package/dist/lib/resources/aws/cdn/index.js +18 -0
- package/dist/lib/resources/aws/compute/capacityProviderDrainWaiter.d.ts +20 -0
- package/dist/lib/resources/aws/compute/capacityProviderDrainWaiter.js +180 -0
- package/dist/lib/resources/aws/compute/ecs.d.ts +65 -11
- package/dist/lib/resources/aws/compute/ecs.js +293 -124
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +1 -2
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +1 -4
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +1 -2
- package/dist/lib/resources/aws/compute/ecsSpot.js +1 -4
- package/dist/lib/resources/aws/compute/lambda.d.ts +10 -1
- package/dist/lib/resources/aws/compute/lambda.js +71 -4
- package/dist/lib/resources/aws/database/database.js +1 -1
- package/dist/lib/resources/aws/database/dynamodb.d.ts +70 -0
- package/dist/lib/resources/aws/database/dynamodb.js +170 -0
- package/dist/lib/resources/aws/database/rdsAurora.js +5 -5
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +7 -7
- package/dist/lib/resources/aws/database/rdsDeletionWaiter.d.ts +33 -0
- package/dist/lib/resources/aws/database/rdsDeletionWaiter.js +74 -0
- package/dist/lib/resources/aws/database/rdsInstance.js +3 -3
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +2 -2
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/group.js +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +1 -1
- package/dist/lib/resources/aws/logging/cloudTrail.js +1 -1
- package/dist/lib/resources/aws/messaging/index.d.ts +1 -0
- package/dist/lib/resources/aws/messaging/index.js +18 -0
- package/dist/lib/resources/aws/messaging/sqs.d.ts +65 -0
- package/dist/lib/resources/aws/messaging/sqs.js +195 -0
- package/dist/lib/resources/aws/monitoring/monitoringRole.js +2 -3
- package/dist/lib/resources/aws/networking/ipamPool.js +1 -1
- package/dist/lib/resources/aws/networking/vpc.d.ts +1 -0
- package/dist/lib/resources/aws/networking/vpc.js +7 -3
- package/dist/lib/resources/aws/networking/vpcEndpoint.d.ts +20 -0
- package/dist/lib/resources/aws/networking/vpcEndpoint.js +59 -0
- package/dist/lib/resources/aws/networking/vpcEndpoints.d.ts +71 -0
- package/dist/lib/resources/aws/networking/vpcEndpoints.js +125 -0
- package/dist/lib/resources/aws/secrets/secret.js +1 -1
- package/dist/lib/resources/aws/storage/ecr.d.ts +1 -2
- package/dist/lib/resources/aws/storage/ecr.js +2 -2
- package/dist/lib/resources/aws/utilities/cfnOutput.test.d.ts +1 -0
- package/dist/lib/resources/aws/utilities/cfnOutput.test.js +102 -0
- package/dist/lib/resources/aws/utilities/codeBuild.d.ts +1 -2
- package/dist/lib/resources/aws/utilities/codeBuild.js +1 -1
- package/dist/lib/resources/aws/utilities/customResource.d.ts +2 -1
- package/dist/lib/resources/aws/utilities/customResource.js +1 -1
- package/dist/lib/utils/getStackOutput.js +2 -2
- package/dist/lib/utils/sanitizeCfnKey.d.ts +5 -0
- package/dist/lib/utils/sanitizeCfnKey.js +11 -0
- package/dist/lib/utils/tagResource.d.ts +24 -0
- package/dist/lib/utils/tagResource.js +30 -0
- package/package.json +6 -5
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQSQueue = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
|
|
7
|
+
function toRemovalPolicy(policy) {
|
|
8
|
+
switch (policy) {
|
|
9
|
+
case "RETAIN":
|
|
10
|
+
return aws_cdk_lib_1.RemovalPolicy.RETAIN;
|
|
11
|
+
case "DESTROY":
|
|
12
|
+
default:
|
|
13
|
+
return aws_cdk_lib_1.RemovalPolicy.DESTROY;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function toEncryption(encryption) {
|
|
17
|
+
switch (encryption) {
|
|
18
|
+
case "SSE_KMS":
|
|
19
|
+
return aws_sqs_1.QueueEncryption.KMS;
|
|
20
|
+
case "NONE":
|
|
21
|
+
return aws_sqs_1.QueueEncryption.UNENCRYPTED;
|
|
22
|
+
case "SSE_SQS":
|
|
23
|
+
default:
|
|
24
|
+
return aws_sqs_1.QueueEncryption.SQS_MANAGED;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function toFifoThroughputLimit(limit) {
|
|
28
|
+
switch (limit) {
|
|
29
|
+
case "perQueue":
|
|
30
|
+
return aws_sqs_1.FifoThroughputLimit.PER_QUEUE;
|
|
31
|
+
case "perMessageGroupId":
|
|
32
|
+
return aws_sqs_1.FifoThroughputLimit.PER_MESSAGE_GROUP_ID;
|
|
33
|
+
default:
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function toDeduplicationScope(scope) {
|
|
38
|
+
switch (scope) {
|
|
39
|
+
case "queue":
|
|
40
|
+
return aws_sqs_1.DeduplicationScope.QUEUE;
|
|
41
|
+
case "messageGroup":
|
|
42
|
+
return aws_sqs_1.DeduplicationScope.MESSAGE_GROUP;
|
|
43
|
+
default:
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
class SQSQueue extends constructs_1.Construct {
|
|
48
|
+
constructor(scope, id, props) {
|
|
49
|
+
super(scope, id);
|
|
50
|
+
this.id = id;
|
|
51
|
+
const isFifo = props.queueType === "fifo";
|
|
52
|
+
const queueName = props.queueName
|
|
53
|
+
? isFifo
|
|
54
|
+
? `${props.queueName}.fifo`
|
|
55
|
+
: props.queueName
|
|
56
|
+
: undefined;
|
|
57
|
+
// Create Dead Letter Queue if enabled
|
|
58
|
+
let deadLetterQueue;
|
|
59
|
+
if (props.deadLetterQueue?.enabled) {
|
|
60
|
+
if (props.deadLetterQueue.queue) {
|
|
61
|
+
deadLetterQueue = {
|
|
62
|
+
queue: props.deadLetterQueue.queue,
|
|
63
|
+
maxReceiveCount: props.deadLetterQueue.maxReceiveCount ?? 3
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const dlqName = queueName
|
|
68
|
+
? isFifo
|
|
69
|
+
? `${props.queueName}-dlq.fifo`
|
|
70
|
+
: `${props.queueName}-dlq`
|
|
71
|
+
: undefined;
|
|
72
|
+
this.dlq = new aws_sqs_1.Queue(this, `${id}DeadLetterQueue`, {
|
|
73
|
+
queueName: dlqName,
|
|
74
|
+
fifo: isFifo,
|
|
75
|
+
encryption: toEncryption(props.encryption),
|
|
76
|
+
retentionPeriod: aws_cdk_lib_1.Duration.days(14),
|
|
77
|
+
removalPolicy: toRemovalPolicy(props.removalPolicy)
|
|
78
|
+
});
|
|
79
|
+
deadLetterQueue = {
|
|
80
|
+
queue: this.dlq,
|
|
81
|
+
maxReceiveCount: props.deadLetterQueue.maxReceiveCount ?? 3
|
|
82
|
+
};
|
|
83
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}DeadLetterQueueUrl`, {
|
|
84
|
+
key: `${id}DeadLetterQueueUrl`,
|
|
85
|
+
value: this.dlq.queueUrl,
|
|
86
|
+
description: `Dead letter queue URL for ${id}`
|
|
87
|
+
});
|
|
88
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}DeadLetterQueueArn`, {
|
|
89
|
+
key: `${id}DeadLetterQueueArn`,
|
|
90
|
+
value: this.dlq.queueArn,
|
|
91
|
+
description: `Dead letter queue ARN for ${id}`
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
this.queue = new aws_sqs_1.Queue(this, `${id}Queue`, {
|
|
96
|
+
queueName,
|
|
97
|
+
fifo: isFifo,
|
|
98
|
+
visibilityTimeout: props.visibilityTimeout
|
|
99
|
+
? aws_cdk_lib_1.Duration.seconds(props.visibilityTimeout)
|
|
100
|
+
: undefined,
|
|
101
|
+
retentionPeriod: props.messageRetentionPeriod
|
|
102
|
+
? aws_cdk_lib_1.Duration.seconds(props.messageRetentionPeriod)
|
|
103
|
+
: undefined,
|
|
104
|
+
receiveMessageWaitTime: props.receiveMessageWaitTime
|
|
105
|
+
? aws_cdk_lib_1.Duration.seconds(props.receiveMessageWaitTime)
|
|
106
|
+
: undefined,
|
|
107
|
+
maxMessageSizeBytes: props.maxMessageSize,
|
|
108
|
+
deliveryDelay: props.deliveryDelay
|
|
109
|
+
? aws_cdk_lib_1.Duration.seconds(props.deliveryDelay)
|
|
110
|
+
: undefined,
|
|
111
|
+
deadLetterQueue,
|
|
112
|
+
encryption: toEncryption(props.encryption),
|
|
113
|
+
contentBasedDeduplication: isFifo ? (props.contentBasedDeduplication ?? true) : undefined,
|
|
114
|
+
fifoThroughputLimit: isFifo
|
|
115
|
+
? toFifoThroughputLimit(props.fifoThroughputLimit)
|
|
116
|
+
: undefined,
|
|
117
|
+
deduplicationScope: isFifo
|
|
118
|
+
? toDeduplicationScope(props.deduplicationScope)
|
|
119
|
+
: undefined,
|
|
120
|
+
removalPolicy: toRemovalPolicy(props.removalPolicy)
|
|
121
|
+
});
|
|
122
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}QueueUrl`, {
|
|
123
|
+
key: `${id}QueueUrl`,
|
|
124
|
+
value: this.queue.queueUrl,
|
|
125
|
+
description: `SQS queue URL for ${id}`
|
|
126
|
+
});
|
|
127
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}QueueArn`, {
|
|
128
|
+
key: `${id}QueueArn`,
|
|
129
|
+
value: this.queue.queueArn,
|
|
130
|
+
description: `SQS queue ARN for ${id}`
|
|
131
|
+
});
|
|
132
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}QueueName`, {
|
|
133
|
+
key: `${id}QueueName`,
|
|
134
|
+
value: this.queue.queueName,
|
|
135
|
+
description: `SQS queue name for ${id}`
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get the SQS queue URL.
|
|
140
|
+
*/
|
|
141
|
+
getQueueUrl() {
|
|
142
|
+
return this.queue.queueUrl;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get the SQS queue ARN.
|
|
146
|
+
*/
|
|
147
|
+
getQueueArn() {
|
|
148
|
+
return this.queue.queueArn;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get the SQS queue name.
|
|
152
|
+
*/
|
|
153
|
+
getQueueName() {
|
|
154
|
+
return this.queue.queueName;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get the underlying CDK Queue construct.
|
|
158
|
+
*/
|
|
159
|
+
getQueue() {
|
|
160
|
+
return this.queue;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get the dead letter queue if configured.
|
|
164
|
+
*/
|
|
165
|
+
getDeadLetterQueue() {
|
|
166
|
+
return this.dlq;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Grant send message permissions to the grantee.
|
|
170
|
+
*/
|
|
171
|
+
grantSend(grantee) {
|
|
172
|
+
return this.queue.grantSendMessages(grantee);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Grant consume (receive and delete) message permissions to the grantee.
|
|
176
|
+
*/
|
|
177
|
+
grantConsume(grantee) {
|
|
178
|
+
return this.queue.grantConsumeMessages(grantee);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Grant purge queue permissions to the grantee.
|
|
182
|
+
*/
|
|
183
|
+
grantPurge(grantee) {
|
|
184
|
+
return this.queue.grantPurge(grantee);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Grant send and consume message permissions to the grantee.
|
|
188
|
+
*/
|
|
189
|
+
grantSendAndConsume(grantee) {
|
|
190
|
+
this.queue.grantSendMessages(grantee);
|
|
191
|
+
return this.queue.grantConsumeMessages(grantee);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
exports.SQSQueue = SQSQueue;
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbWVzc2FnaW5nL3Nxcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQWlFO0FBQ2pFLGlEQU82QjtBQXdCN0IsU0FBUyxlQUFlLENBQ3RCLE1BQTZCO0lBRTdCLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLFFBQVE7WUFDWCxPQUFPLDJCQUFhLENBQUMsTUFBTSxDQUFDO1FBQzlCLEtBQUssU0FBUyxDQUFDO1FBQ2Y7WUFDRSxPQUFPLDJCQUFhLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQ25CLFVBQTJDO0lBRTNDLFFBQVEsVUFBVSxFQUFFLENBQUM7UUFDbkIsS0FBSyxTQUFTO1lBQ1osT0FBTyx5QkFBZSxDQUFDLEdBQUcsQ0FBQztRQUM3QixLQUFLLE1BQU07WUFDVCxPQUFPLHlCQUFlLENBQUMsV0FBVyxDQUFDO1FBQ3JDLEtBQUssU0FBUyxDQUFDO1FBQ2Y7WUFDRSxPQUFPLHlCQUFlLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FDNUIsS0FBd0M7SUFFeEMsUUFBUSxLQUFLLEVBQUUsQ0FBQztRQUNkLEtBQUssVUFBVTtZQUNiLE9BQU8sNkJBQW1CLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLEtBQUssbUJBQW1CO1lBQ3RCLE9BQU8sNkJBQW1CLENBQUMsb0JBQW9CLENBQUM7UUFDbEQ7WUFDRSxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQzNCLEtBQWdDO0lBRWhDLFFBQVEsS0FBSyxFQUFFLENBQUM7UUFDZCxLQUFLLE9BQU87WUFDVixPQUFPLDRCQUFrQixDQUFDLEtBQUssQ0FBQztRQUNsQyxLQUFLLGNBQWM7WUFD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SSxZQUFZLENBQUMsT0FBbUI7UUFDckMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxPQUFtQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFtQixDQUFDLE9BQW1CO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQXpLRCw0QkF5S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgUXVldWUsXG4gIHR5cGUgSVF1ZXVlLFxuICBEZWFkTGV0dGVyUXVldWUsXG4gIFF1ZXVlRW5jcnlwdGlvbixcbiAgRmlmb1Rocm91Z2hwdXRMaW1pdCxcbiAgRGVkdXBsaWNhdGlvblNjb3BlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3FzXCI7XG5pbXBvcnQgeyB0eXBlIElHcmFudGFibGUsIHR5cGUgR3JhbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNRU1F1ZXVlUHJvcHMge1xuICBxdWV1ZU5hbWU/OiBzdHJpbmc7XG4gIHF1ZXVlVHlwZT86IFwic3RhbmRhcmRcIiB8IFwiZmlmb1wiO1xuICB2aXNpYmlsaXR5VGltZW91dD86IG51bWJlcjtcbiAgbWVzc2FnZVJldGVudGlvblBlcmlvZD86IG51bWJlcjtcbiAgcmVjZWl2ZU1lc3NhZ2VXYWl0VGltZT86IG51bWJlcjtcbiAgbWF4TWVzc2FnZVNpemU/OiBudW1iZXI7XG4gIGRlbGl2ZXJ5RGVsYXk/OiBudW1iZXI7XG4gIGRlYWRMZXR0ZXJRdWV1ZT86IHtcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIG1heFJlY2VpdmVDb3VudD86IG51bWJlcjtcbiAgICBxdWV1ZT86IElRdWV1ZTtcbiAgfTtcbiAgZW5jcnlwdGlvbj86IFwiU1NFX1NRU1wiIHwgXCJTU0VfS01TXCIgfCBcIk5PTkVcIjtcbiAga21zS2V5QXJuPzogc3RyaW5nO1xuICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uPzogYm9vbGVhbjtcbiAgZmlmb1Rocm91Z2hwdXRMaW1pdD86IFwicGVyUXVldWVcIiB8IFwicGVyTWVzc2FnZUdyb3VwSWRcIjtcbiAgZGVkdXBsaWNhdGlvblNjb3BlPzogXCJxdWV1ZVwiIHwgXCJtZXNzYWdlR3JvdXBcIjtcbiAgcmVtb3ZhbFBvbGljeT86IFwiREVTVFJPWVwiIHwgXCJSRVRBSU5cIjtcbn1cblxuZnVuY3Rpb24gdG9SZW1vdmFsUG9saWN5KFxuICBwb2xpY3k/OiBcIkRFU1RST1lcIiB8IFwiUkVUQUlOXCJcbik6IFJlbW92YWxQb2xpY3kge1xuICBzd2l0Y2ggKHBvbGljeSkge1xuICAgIGNhc2UgXCJSRVRBSU5cIjpcbiAgICAgIHJldHVybiBSZW1vdmFsUG9saWN5LlJFVEFJTjtcbiAgICBjYXNlIFwiREVTVFJPWVwiOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvRW5jcnlwdGlvbihcbiAgZW5jcnlwdGlvbj86IFwiU1NFX1NRU1wiIHwgXCJTU0VfS01TXCIgfCBcIk5PTkVcIlxuKTogUXVldWVFbmNyeXB0aW9uIHtcbiAgc3dpdGNoIChlbmNyeXB0aW9uKSB7XG4gICAgY2FzZSBcIlNTRV9LTVNcIjpcbiAgICAgIHJldHVybiBRdWV1ZUVuY3J5cHRpb24uS01TO1xuICAgIGNhc2UgXCJOT05FXCI6XG4gICAgICByZXR1cm4gUXVldWVFbmNyeXB0aW9uLlVORU5DUllQVEVEO1xuICAgIGNhc2UgXCJTU0VfU1FTXCI6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBRdWV1ZUVuY3J5cHRpb24uU1FTX01BTkFHRUQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9GaWZvVGhyb3VnaHB1dExpbWl0KFxuICBsaW1pdD86IFwicGVyUXVldWVcIiB8IFwicGVyTWVzc2FnZUdyb3VwSWRcIlxuKTogRmlmb1Rocm91Z2hwdXRMaW1pdCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAobGltaXQpIHtcbiAgICBjYXNlIFwicGVyUXVldWVcIjpcbiAgICAgIHJldHVybiBGaWZvVGhyb3VnaHB1dExpbWl0LlBFUl9RVUVVRTtcbiAgICBjYXNlIFwicGVyTWVzc2FnZUdyb3VwSWRcIjpcbiAgICAgIHJldHVybiBGaWZvVGhyb3VnaHB1dExpbWl0LlBFUl9NRVNTQUdFX0dST1VQX0lEO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvRGVkdXBsaWNhdGlvblNjb3BlKFxuICBzY29wZT86IFwicXVldWVcIiB8IFwibWVzc2FnZUdyb3VwXCJcbik6IERlZHVwbGljYXRpb25TY29wZSB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoc2NvcGUpIHtcbiAgICBjYXNlIFwicXVldWVcIjpcbiAgICAgIHJldHVybiBEZWR1cGxpY2F0aW9uU2NvcGUuUVVFVUU7XG4gICAgY2FzZSBcIm1lc3NhZ2VHcm91cFwiOlxuICAgICAgcmV0dXJuIERlZHVwbGljYXRpb25TY29wZS5NRVNTQUdFX0dST1VQO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTUVNRdWV1ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xuICBwcml2YXRlIHF1ZXVlOiBRdWV1ZTtcbiAgcHJpdmF0ZSBkbHE/OiBRdWV1ZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU1FTUXVldWVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5pZCA9IGlkO1xuXG4gICAgY29uc3QgaXNGaWZvID0gcHJvcHMucXVldWVUeXBlID09PSBcImZpZm9cIjtcbiAgICBjb25zdCBxdWV1ZU5hbWUgPSBwcm9wcy5xdWV1ZU5hbWVcbiAgICAgID8gaXNGaWZvXG4gICAgICAgID8gYCR7cHJvcHMucXVldWVOYW1lfS5maWZvYFxuICAgICAgICA6IHByb3BzLnF1ZXVlTmFtZVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGUgRGVhZCBMZXR0ZXIgUXVldWUgaWYgZW5hYmxlZFxuICAgIGxldCBkZWFkTGV0dGVyUXVldWU6IERlYWRMZXR0ZXJRdWV1ZSB8IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMuZGVhZExldHRlclF1ZXVlPy5lbmFibGVkKSB7XG4gICAgICBpZiAocHJvcHMuZGVhZExldHRlclF1ZXVlLnF1ZXVlKSB7XG4gICAgICAgIGRlYWRMZXR0ZXJRdWV1ZSA9IHtcbiAgICAgICAgICBxdWV1ZTogcHJvcHMuZGVhZExldHRlclF1ZXVlLnF1ZXVlLFxuICAgICAgICAgIG1heFJlY2VpdmVDb3VudDogcHJvcHMuZGVhZExldHRlclF1ZXVlLm1heFJlY2VpdmVDb3VudCA/PyAzXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkbHFOYW1lID0gcXVldWVOYW1lXG4gICAgICAgICAgPyBpc0ZpZm9cbiAgICAgICAgICAgID8gYCR7cHJvcHMucXVldWVOYW1lfS1kbHEuZmlmb2BcbiAgICAgICAgICAgIDogYCR7cHJvcHMucXVldWVOYW1lfS1kbHFgXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5kbHEgPSBuZXcgUXVldWUodGhpcywgYCR7aWR9RGVhZExldHRlclF1ZXVlYCwge1xuICAgICAgICAgIHF1ZXVlTmFtZTogZGxxTmFtZSxcbiAgICAgICAgICBmaWZvOiBpc0ZpZm8sXG4gICAgICAgICAgZW5jcnlwdGlvbjogdG9FbmNyeXB0aW9uKHByb3BzLmVuY3J5cHRpb24pLFxuICAgICAgICAgIHJldGVudGlvblBlcmlvZDogRHVyYXRpb24uZGF5cygxNCksXG4gICAgICAgICAgcmVtb3ZhbFBvbGljeTogdG9SZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRlYWRMZXR0ZXJRdWV1ZSA9IHtcbiAgICAgICAgICBxdWV1ZTogdGhpcy5kbHEsXG4gICAgICAgICAgbWF4UmVjZWl2ZUNvdW50OiBwcm9wcy5kZWFkTGV0dGVyUXVldWUubWF4UmVjZWl2ZUNvdW50ID8/IDNcbiAgICAgICAgfTtcblxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfURlYWRMZXR0ZXJRdWV1ZVVybGAsIHtcbiAgICAgICAgICBrZXk6IGAke2lkfURlYWRMZXR0ZXJRdWV1ZVVybGAsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZGxxLnF1ZXVlVXJsLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRGVhZCBsZXR0ZXIgcXVldWUgVVJMIGZvciAke2lkfWBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1EZWFkTGV0dGVyUXVldWVBcm5gLCB7XG4gICAgICAgICAga2V5OiBgJHtpZH1EZWFkTGV0dGVyUXVldWVBcm5gLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLmRscS5xdWV1ZUFybixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYERlYWQgbGV0dGVyIHF1ZXVlIEFSTiBmb3IgJHtpZH1gXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucXVldWUgPSBuZXcgUXVldWUodGhpcywgYCR7aWR9UXVldWVgLCB7XG4gICAgICBxdWV1ZU5hbWUsXG4gICAgICBmaWZvOiBpc0ZpZm8sXG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogcHJvcHMudmlzaWJpbGl0eVRpbWVvdXRcbiAgICAgICAgPyBEdXJhdGlvbi5zZWNvbmRzKHByb3BzLnZpc2liaWxpdHlUaW1lb3V0KVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJldGVudGlvblBlcmlvZDogcHJvcHMubWVzc2FnZVJldGVudGlvblBlcmlvZFxuICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJvcHMubWVzc2FnZVJldGVudGlvblBlcmlvZClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZWNlaXZlTWVzc2FnZVdhaXRUaW1lOiBwcm9wcy5yZWNlaXZlTWVzc2FnZVdhaXRUaW1lXG4gICAgICAgID8gRHVyYXRpb24uc2Vjb25kcyhwcm9wcy5yZWNlaXZlTWVzc2FnZVdhaXRUaW1lKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG1heE1lc3NhZ2VTaXplQnl0ZXM6IHByb3BzLm1heE1lc3NhZ2VTaXplLFxuICAgICAgZGVsaXZlcnlEZWxheTogcHJvcHMuZGVsaXZlcnlEZWxheVxuICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJvcHMuZGVsaXZlcnlEZWxheSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZWFkTGV0dGVyUXVldWUsXG4gICAgICBlbmNyeXB0aW9uOiB0b0VuY3J5cHRpb24ocHJvcHMuZW5jcnlwdGlvbiksXG4gICAgICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uOlxuICAgICAgICBpc0ZpZm8gPyAocHJvcHMuY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbiA/PyB0cnVlKSA6IHVuZGVmaW5lZCxcbiAgICAgIGZpZm9UaHJvdWdocHV0TGltaXQ6IGlzRmlmb1xuICAgICAgICA/IHRvRmlmb1Rocm91Z2hwdXRMaW1pdChwcm9wcy5maWZvVGhyb3VnaHB1dExpbWl0KVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGRlZHVwbGljYXRpb25TY29wZTogaXNGaWZvXG4gICAgICAgID8gdG9EZWR1cGxpY2F0aW9uU2NvcGUocHJvcHMuZGVkdXBsaWNhdGlvblNjb3BlKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHRvUmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5KVxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1RdWV1ZVVybGAsIHtcbiAgICAgIGtleTogYCR7aWR9UXVldWVVcmxgLFxuICAgICAgdmFsdWU6IHRoaXMucXVldWUucXVldWVVcmwsXG4gICAgICBkZXNjcmlwdGlvbjogYFNRUyBxdWV1ZSBVUkwgZm9yICR7aWR9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1RdWV1ZUFybmAsIHtcbiAgICAgIGtleTogYCR7aWR9UXVldWVBcm5gLFxuICAgICAgdmFsdWU6IHRoaXMucXVldWUucXVldWVBcm4sXG4gICAgICBkZXNjcmlwdGlvbjogYFNRUyBxdWV1ZSBBUk4gZm9yICR7aWR9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1RdWV1ZU5hbWVgLCB7XG4gICAgICBrZXk6IGAke2lkfVF1ZXVlTmFtZWAsXG4gICAgICB2YWx1ZTogdGhpcy5xdWV1ZS5xdWV1ZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYFNRUyBxdWV1ZSBuYW1lIGZvciAke2lkfWBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFNRUyBxdWV1ZSBVUkwuXG4gICAqL1xuICBwdWJsaWMgZ2V0UXVldWVVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5xdWV1ZVVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFNRUyBxdWV1ZSBBUk4uXG4gICAqL1xuICBwdWJsaWMgZ2V0UXVldWVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5xdWV1ZUFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFNRUyBxdWV1ZSBuYW1lLlxuICAgKi9cbiAgcHVibGljIGdldFF1ZXVlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLnF1ZXVlTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVuZGVybHlpbmcgQ0RLIFF1ZXVlIGNvbnN0cnVjdC5cbiAgICovXG4gIHB1YmxpYyBnZXRRdWV1ZSgpOiBJUXVldWUge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVhZCBsZXR0ZXIgcXVldWUgaWYgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBnZXREZWFkTGV0dGVyUXVldWUoKTogSVF1ZXVlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kbHE7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgc2VuZCBtZXNzYWdlIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKi9cbiAgcHVibGljIGdyYW50U2VuZChncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKGdyYW50ZWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IGNvbnN1bWUgKHJlY2VpdmUgYW5kIGRlbGV0ZSkgbWVzc2FnZSBwZXJtaXNzaW9ucyB0byB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIHB1YmxpYyBncmFudENvbnN1bWUoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5ncmFudENvbnN1bWVNZXNzYWdlcyhncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdXJnZSBxdWV1ZSBwZXJtaXNzaW9ucyB0byB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIHB1YmxpYyBncmFudFB1cmdlKGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuZ3JhbnRQdXJnZShncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBzZW5kIGFuZCBjb25zdW1lIG1lc3NhZ2UgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRTZW5kQW5kQ29uc3VtZShncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHRoaXMucXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMoZ3JhbnRlZSk7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuZ3JhbnRDb25zdW1lTWVzc2FnZXMoZ3JhbnRlZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MonitoringRoleFactory = void 0;
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
-
const aws_cdk_lib_2 = require("aws-cdk-lib");
|
|
7
6
|
/**
|
|
8
7
|
* Factory to build a cross-account monitoring IAM role that allows the Fjall webapp
|
|
9
8
|
* to query CloudWatch metrics, ECS service status, and logs for this application.
|
|
@@ -55,7 +54,7 @@ class MonitoringRoleFactory {
|
|
|
55
54
|
}
|
|
56
55
|
});
|
|
57
56
|
// Export the role ARN so it can be retrieved after deployment
|
|
58
|
-
new
|
|
57
|
+
new aws_cdk_lib_1.CfnOutput(scope, `${id}Arn`, {
|
|
59
58
|
value: role.roleArn,
|
|
60
59
|
description: `ARN of the monitoring role for ${config.appName}`,
|
|
61
60
|
exportName: `${config.appName}-MonitoringRoleArn`
|
|
@@ -66,4 +65,4 @@ class MonitoringRoleFactory {
|
|
|
66
65
|
}
|
|
67
66
|
exports.MonitoringRoleFactory = MonitoringRoleFactory;
|
|
68
67
|
exports.default = MonitoringRoleFactory;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvcmluZ1JvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tb25pdG9yaW5nL21vbml0b3JpbmdSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUErQztBQUMvQyxpREFNNkI7QUF5QjdCOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQ2pCLEVBQVUsRUFDVixNQUE0QjtRQUU1QixPQUFPLENBQUMsR0FBYyxFQUFFLEtBQWdCLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU5QixNQUFNLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUMvQixRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzNFLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEdBQUc7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7Z0JBQ3ZELFdBQVcsRUFBRSx3REFBd0QsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDckYsY0FBYyxFQUFFO29CQUNkLGdCQUFnQixFQUFFLElBQUksd0JBQWMsQ0FBQzt3QkFDbkMsVUFBVSxFQUFFOzRCQUNWLElBQUkseUJBQWUsQ0FBQztnQ0FDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQ0FDcEIsT0FBTyxFQUFFO29DQUNQLDBCQUEwQjtvQ0FDMUIsZ0NBQWdDO29DQUNoQyx3QkFBd0I7aUNBQ3pCO2dDQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQzs2QkFDakIsQ0FBQzs0QkFDRixJQUFJLHlCQUFlLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7Z0NBQ3BCLE9BQU8sRUFBRTtvQ0FDUCxzQkFBc0I7b0NBQ3RCLG1CQUFtQjtvQ0FDbkIsZUFBZTtpQ0FDaEI7Z0NBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2dDQUNoQixVQUFVLEVBQUU7b0NBQ1YsWUFBWSxFQUFFO3dDQUNaLDhDQUE4QyxFQUM1QyxNQUFNLENBQUMsT0FBTztxQ0FDakI7aUNBQ0Y7NkJBQ0YsQ0FBQzs0QkFDRixJQUFJLHlCQUFlLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7Z0NBQ3BCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLG1CQUFtQixDQUFDO2dDQUN0RCxTQUFTLEVBQUU7b0NBQ1QsZ0JBQWdCLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sdUJBQXVCLE1BQU0sQ0FBQyxPQUFPLEtBQUs7aUNBQ3hGOzZCQUNGLENBQUM7eUJBQ0g7cUJBQ0YsQ0FBQztpQkFDSDthQUNGLENBQUMsQ0FBQztZQUVILDhEQUE4RDtZQUM5RCxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7Z0JBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDbkIsV0FBVyxFQUFFLGtDQUFrQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUMvRCxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxvQkFBb0I7YUFDbEQsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE5REQsc0RBOERDO0FBRUQsa0JBQWUscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBSb2xlLFxuICBBY2NvdW50UHJpbmNpcGFsLFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBFZmZlY3Rcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nUm9sZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIGFjY291bnQgSUQgb2YgdGhlIEZqYWxsIHdlYmFwcCB0aGF0IHdpbGwgYXNzdW1lIHRoaXMgcm9sZVxuICAgKi9cbiAgd2ViYXBwQWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBuYW1lIHRvIHNjb3BlIHRoZSByb2xlJ3MgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIGFwcE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgcm9sZSBuYW1lIHByZWZpeC4gRGVmYXVsdHMgdG8gXCJGamFsbE1vbml0b3JpbmdcIlxuICAgKi9cbiAgcm9sZU5hbWVQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIElBTSBwYXRoIGZvciB0aGUgcm9sZS4gRGVmYXVsdHMgdG8gXCIvXCJcbiAgICovXG4gIHJvbGVQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgdG8gYnVpbGQgYSBjcm9zcy1hY2NvdW50IG1vbml0b3JpbmcgSUFNIHJvbGUgdGhhdCBhbGxvd3MgdGhlIEZqYWxsIHdlYmFwcFxuICogdG8gcXVlcnkgQ2xvdWRXYXRjaCBtZXRyaWNzLCBFQ1Mgc2VydmljZSBzdGF0dXMsIGFuZCBsb2dzIGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgTW9uaXRvcmluZ1JvbGVGYWN0b3J5IHtcbiAgcHVibGljIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIGNvbmZpZzogTW9uaXRvcmluZ1JvbGVDb25maWdcbiAgKTogKGFwcDogQ29uc3RydWN0LCBzY29wZTogQ29uc3RydWN0KSA9PiBSb2xlIHtcbiAgICByZXR1cm4gKGFwcDogQ29uc3RydWN0LCBzY29wZTogQ29uc3RydWN0KSA9PiB7XG4gICAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHNjb3BlLCBpZCwge1xuICAgICAgICByb2xlTmFtZTogYCR7Y29uZmlnLnJvbGVOYW1lUHJlZml4IHx8IFwiRmphbGxNb25pdG9yaW5nXCJ9LSR7Y29uZmlnLmFwcE5hbWV9YCxcbiAgICAgICAgcGF0aDogY29uZmlnLnJvbGVQYXRoIHx8IFwiL1wiLFxuICAgICAgICBhc3N1bWVkQnk6IG5ldyBBY2NvdW50UHJpbmNpcGFsKGNvbmZpZy53ZWJhcHBBY2NvdW50SWQpLFxuICAgICAgICBkZXNjcmlwdGlvbjogYENyb3NzLWFjY291bnQgbW9uaXRvcmluZyByb2xlIGZvciBGamFsbCBhcHBsaWNhdGlvbjogJHtjb25maWcuYXBwTmFtZX1gLFxuICAgICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICAgIE1vbml0b3JpbmdQb2xpY3k6IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgIFwiY2xvdWR3YXRjaDpHZXRNZXRyaWNEYXRhXCIsXG4gICAgICAgICAgICAgICAgICBcImNsb3Vkd2F0Y2g6R2V0TWV0cmljU3RhdGlzdGljc1wiLFxuICAgICAgICAgICAgICAgICAgXCJjbG91ZHdhdGNoOkxpc3RNZXRyaWNzXCJcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJlY3M6RGVzY3JpYmVTZXJ2aWNlc1wiLFxuICAgICAgICAgICAgICAgICAgXCJlY3M6RGVzY3JpYmVUYXNrc1wiLFxuICAgICAgICAgICAgICAgICAgXCJlY3M6TGlzdFRhc2tzXCJcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJhd3M6UmVzb3VyY2VUYWcvZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiOlxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hcHBOYW1lXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1wibG9nczpGaWx0ZXJMb2dFdmVudHNcIiwgXCJsb2dzOkdldExvZ0V2ZW50c1wiXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgIGBhcm46YXdzOmxvZ3M6JHtzdGFjay5yZWdpb259OiR7c3RhY2suYWNjb3VudH06bG9nLWdyb3VwOi9hd3MvZWNzLyR7Y29uZmlnLmFwcE5hbWV9KjoqYFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gRXhwb3J0IHRoZSByb2xlIEFSTiBzbyBpdCBjYW4gYmUgcmV0cmlldmVkIGFmdGVyIGRlcGxveW1lbnRcbiAgICAgIG5ldyBDZm5PdXRwdXQoc2NvcGUsIGAke2lkfUFybmAsIHtcbiAgICAgICAgdmFsdWU6IHJvbGUucm9sZUFybixcbiAgICAgICAgZGVzY3JpcHRpb246IGBBUk4gb2YgdGhlIG1vbml0b3Jpbmcgcm9sZSBmb3IgJHtjb25maWcuYXBwTmFtZX1gLFxuICAgICAgICBleHBvcnROYW1lOiBgJHtjb25maWcuYXBwTmFtZX0tTW9uaXRvcmluZ1JvbGVBcm5gXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJvbGU7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNb25pdG9yaW5nUm9sZUZhY3Rvcnk7XG4iXX0=
|
|
@@ -155,4 +155,4 @@ class IpamPoolStack extends aws_cdk_lib_1.Stack {
|
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
exports.IpamPoolStack = IpamPoolStack;
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2lwYW1Qb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRTtBQUNwRSwyQ0FBdUM7QUFDdkMsaURBRzZCO0FBQzdCLDhEQUEyRDtBQUMzRCw4REFBdUQ7QUF5QnZELE1BQWEsUUFBUyxTQUFRLHNCQUFTO0lBQ3JDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiwwREFBMEQ7UUFDMUQsTUFBTSx5QkFBeUIsR0FDN0IsS0FBSyxDQUFDLFNBQVMsSUFBSSxnQkFBRSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzdELE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FDdEIsQ0FBQztRQUVGLHVEQUF1RDtRQUN2RCxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxFQUFFLENBQUM7UUFDeEUsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLENBQUMsd0JBQXdCLElBQUksRUFBRSxDQUFDO1FBRXRFLGtGQUFrRjtRQUNsRixJQUFJLG9CQUFvQixHQUFHLEVBQUUsSUFBSSxvQkFBb0IsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUMzRCxNQUFNLElBQUksS0FBSyxDQUNiLG1G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QUFjLENBQUMsQ0FBQztnQkFFekMsa0VBQWtFO2dCQUNsRSxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGFBQWEsU0FBUyxHQUFHLFlBQVksRUFBRSxFQUFFO29CQUMzRCxHQUFHLEVBQUUsYUFBYSxTQUFTLEdBQUcsWUFBWSxFQUFFO29CQUM1QyxLQUFLLEVBQUUsUUFBUSxDQUFDLGNBQWM7b0JBQzlCLFVBQVUsRUFBRSxhQUFhLFNBQVMsR0FBRyxZQUFZLEVBQUU7aUJBQ3BELENBQUMsQ0FBQztnQkFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGNBQWMsU0FBUyxHQUFHLFlBQVksRUFBRSxFQUFFO29CQUM1RCxHQUFHLEVBQUUsY0FBYyxTQUFTLEdBQUcsWUFBWSxFQUFFO29CQUM3QyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQ3ZCLFVBQVUsRUFBRSxjQUFjLFNBQVMsR0FBRyxZQUFZLEVBQUU7aUJBQ3JELENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBekxELDRCQXlMQztBQUVELE1BQWEsYUFBYyxTQUFRLG1CQUFLO0lBQ3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzdCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBVEQsc0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbiwgQ2ZuT3V0cHV0LCB0eXBlIFN0YWNrUHJvcHMsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQ2ZuSVBBTVBvb2wgYXMgSXBhbVBvb2xDbGFzcyxcbiAgQ2ZuSVBBTVBvb2xDaWRyXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBSZXNvdXJjZVNoYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9yZXNvdXJjZVNoYXJlXCI7XG5pbXBvcnQgZ2V0QWNjb3VudElkIGZyb20gXCIuLi8uLi8uLi91dGlscy9nZXRBY2NvdW50SWRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJcGFtUG9vbFByb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIG9yZ0FjY291bnRzOiBzdHJpbmdbXTtcbiAgaXBhbVNjb3BlPzogc3RyaW5nO1xuICByZWdpb25zOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBuZXRtYXNrIGxlbmd0aCAoL0NJRFIpIGVhY2ggY2hpbGQgSVBBTSBwb29sIHNob3VsZCByZWNlaXZlLlxuICAgKiBDb250cm9scyB0aGUgc2l6ZSBvZiBDSURSIGJsb2NrcyBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlZCB0byBWUENzIGZyb20gdGhlIHBvb2wuXG4gICAqIEFjY2VwdGVkIHJhbmdlOiAvMTYgKDY1LDUzNiBJUHMpIOKAkyAvMjggKDE2IElQcykuIERlZmF1bHRzIHRvIC8yMCAoNCwwOTYgSVBzKS5cbiAgICovXG4gIGFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBuZXRtYXNrIGxlbmd0aCAoL0NJRFIpIHByb3Zpc2lvbmVkIGludG8gZWFjaCBjaGlsZCBJUEFNIHBvb2wgb24gY3JlYXRpb24uXG4gICAqIERldGVybWluZXMgdGhlIHRvdGFsIGFkZHJlc3Mgc3BhY2UgYXZhaWxhYmxlIGZvciBWUEMgYWxsb2NhdGlvbnMgaW4gdGhhdCBhY2NvdW50LlxuICAgKiBBY2NlcHRlZCByYW5nZTogLzEzICg1MjQsMjg4IElQcykg4oCTIC8xNiAoNjUsNTM2IElQcykuIERlZmF1bHRzIHRvIC8xNC5cbiAgICovXG4gIHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElwYW1Qb29sU3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBvcmdBY2NvdW50czogc3RyaW5nW107XG4gIHJlZ2lvbnM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2wgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSXBhbVBvb2xQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBHZXQgdGhlIGRlZmF1bHQgSVBBTSBzY29wZSBJRCBmcm9tIHByb3BzLCBvciBDRk4gaW1wb3J0XG4gICAgY29uc3QgSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCA9XG4gICAgICBwcm9wcy5pcGFtU2NvcGUgfHwgRm4uaW1wb3J0VmFsdWUoXCJJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkXCIpO1xuXG4gICAgY29uc3QgcmVnaW9ucyA9IHByb3BzLnJlZ2lvbnM7XG4gICAgaWYgKCFyZWdpb25zIHx8IHJlZ2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdCBsZWFzdCBvbmUgcmVnaW9uIG11c3QgYmUgc3BlY2lmaWVkIGZvciBJUEFNIHBvb2xzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yZ2FuaXNhdGlvbkFjY291bnRzID0gcHJvcHMub3JnQWNjb3VudHMubWFwKChhY2NvdW50KSA9PlxuICAgICAgYWNjb3VudC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcblxuICAgIC8vIERldGVybWluZSB0aGUgY2hpbGQtcG9vbCBDSURSIHNpemUgKGRlZmF1bHRzIHRvIC8yMClcbiAgICBjb25zdCBkZWZhdWx0TmV0bWFza0xlbmd0aCA9IHByb3BzLmFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aCA/PyAyMDtcbiAgICBjb25zdCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPSBwcm9wcy5wcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPz8gMTQ7XG5cbiAgICAvLyBCYXNpYyB2YWxpZGF0aW9uIOKAkyAvMTYgdG8gLzI4IGluY2x1c2l2ZSBhcmUgY29uc2lkZXJlZCBzYWZlIGZvciBWUEMgYWxsb2NhdGlvbnNcbiAgICBpZiAoZGVmYXVsdE5ldG1hc2tMZW5ndGggPCAxNiB8fCBkZWZhdWx0TmV0bWFza0xlbmd0aCA+IDI4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBhbGxvY2F0aW9uRGVmYXVsdE5ldG1hc2tMZW5ndGggbXVzdCBiZSBiZXR3ZWVuIDE2IGFuZCAyOCAoaW5jbHVzaXZlKS4gUmVjZWl2ZWQ6ICR7ZGVmYXVsdE5ldG1hc2tMZW5ndGh9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBwcm92aXNpb25lZCBibG9jayBzaXplICgvMTMgdG8gLzE2KVxuICAgIGlmIChwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPCAxMyB8fCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPiAxNikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgcHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RoIG11c3QgYmUgYmV0d2VlbiAxMyBhbmQgMTYgKGluY2x1c2l2ZSkuIFJlY2VpdmVkOiAke3Byb3Zpc2lvbmVkTmV0bWFza0xlbmd0aH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFdhcm4gaWYgdXNlciByZXF1ZXN0cyBWUEMgYWxsb2NhdGlvbnMgbGFyZ2VyIHRoYW4gdGhlIHByb3Zpc2lvbmVkIHBvb2xcbiAgICBpZiAoZGVmYXVsdE5ldG1hc2tMZW5ndGggPCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGgpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFdhcm5pbmc6IGFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aCAoLyR7ZGVmYXVsdE5ldG1hc2tMZW5ndGh9KSBpcyBsYXJnZXIgdGhhbiBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggKC8ke3Byb3Zpc2lvbmVkTmV0bWFza0xlbmd0aH0pLiBgICtcbiAgICAgICAgICBgVlBDIGFsbG9jYXRpb24gbWF5IGZhaWwgaWYgdGhlIHBvb2wgY2Fubm90IHNhdGlzZnkgdGhlIHJlcXVlc3QuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBUb3AgTGV2ZWwgUG9vbFxuICAgIGNvbnN0IHJvb3RQb29sID0gbmV3IElwYW1Qb29sQ2xhc3ModGhpcywgXCJUb3BMZXZlbElwYW1Qb29sXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgUm9vdCBJUEFNIHBvb2wgKEdsb2JhbClgLFxuICAgICAgYWRkcmVzc0ZhbWlseTogXCJpcHY0XCIsXG4gICAgICBpcGFtU2NvcGVJZDogSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgIHByb3Zpc2lvbmVkQ2lkcnM6IFtcbiAgICAgICAgeyBjaWRyOiBcIjEwLjAuMC4wLzhcIiB9LFxuICAgICAgICB7IGNpZHI6IFwiMTcyLjE2LjAuMC8xMlwiIH0sXG4gICAgICAgIHsgY2lkcjogXCIxOTIuMTY4LjAuMC8xNlwiIH1cbiAgICAgIF0sXG4gICAgICBhdXRvSW1wb3J0OiB0cnVlLFxuICAgICAgdGFnczogW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLFxuICAgICAgICAgIHZhbHVlOiBcInRvcC1sZXZlbFwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgICAgICB2YWx1ZTogXCJtYW5hZ2VtZW50XCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHJlZ2lvbmFsIHBvb2xzIGFzIGNoaWxkcmVuIG9mIHRoZSByb290IHBvb2xcbiAgICBmb3IgKGNvbnN0IHJlZ2lvbiBvZiByZWdpb25zKSB7XG4gICAgICBjb25zdCByZWdpb25TdWZmaXggPSByZWdpb24ucmVwbGFjZSgvLS9nLCBcIlwiKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgcmVnaW9uYWwgcG9vbCBmb3IgdGhpcyBzcGVjaWZpYyByZWdpb25cbiAgICAgIGNvbnN0IHJlZ2lvbmFsUG9vbCA9IG5ldyBJcGFtUG9vbENsYXNzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgUmVnaW9uYWxQb29sJHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgUmVnaW9uYWwgSVBBTSBwb29sIC0gJHtyZWdpb259YCxcbiAgICAgICAgICBhZGRyZXNzRmFtaWx5OiBcImlwdjRcIixcbiAgICAgICAgICBpcGFtU2NvcGVJZDogSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgICAgICBsb2NhbGU6IHJlZ2lvbixcbiAgICAgICAgICBzb3VyY2VJcGFtUG9vbElkOiByb290UG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgICBhdXRvSW1wb3J0OiB0cnVlLFxuICAgICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2V5OiBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLFxuICAgICAgICAgICAgICB2YWx1ZTogYHJlZ2lvbmFsLSR7cmVnaW9ufWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgICAgICB2YWx1ZTogXCJtYW5hZ2VtZW50XCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJlZ2lvbmFsQ2lkckFsbG9jYXRpb24gPSBuZXcgQ2ZuSVBBTVBvb2xDaWRyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgUmVnaW9uYWxQb29sQ2lkciR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgIHtcbiAgICAgICAgICBpcGFtUG9vbElkOiByZWdpb25hbFBvb2wuYXR0cklwYW1Qb29sSWQsXG4gICAgICAgICAgbmV0bWFza0xlbmd0aDogMTAgLy8gRWFjaCByZWdpb24gZ2V0cyBhIC8xMCAoNCwxOTQsMzA0IElQcylcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgLy8gQ3JlYXRlIGFjY291bnQgcG9vbHMgdW5kZXIgZWFjaCByZWdpb25hbCBwb29sXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnQgb2Ygb3JnYW5pc2F0aW9uQWNjb3VudHMpIHtcbiAgICAgICAgY29uc3QgYWNjb3VudElkID0gZ2V0QWNjb3VudElkKGFjY291bnQpO1xuXG4gICAgICAgIGNvbnN0IGlwYW1Qb29sID0gbmV3IElwYW1Qb29sQ2xhc3MoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHthY2NvdW50fUlwYW1Qb29sJHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7YWNjb3VudH0gLSBJUEFNIHBvb2wgLSAke3JlZ2lvbn1gLFxuICAgICAgICAgICAgYWRkcmVzc0ZhbWlseTogXCJpcHY0XCIsXG4gICAgICAgICAgICBpcGFtU2NvcGVJZDogSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgICAgICAgIGxvY2FsZTogcmVnaW9uLFxuICAgICAgICAgICAgc291cmNlSXBhbVBvb2xJZDogcmVnaW9uYWxQb29sLmF0dHJJcGFtUG9vbElkLFxuICAgICAgICAgICAgYWxsb2NhdGlvbkRlZmF1bHROZXRtYXNrTGVuZ3RoOiBkZWZhdWx0TmV0bWFza0xlbmd0aCxcbiAgICAgICAgICAgIGFsbG9jYXRpb25SZXNvdXJjZVRhZ3M6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYCR7YWNjb3VudElkfS0ke3JlZ2lvbn1gXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhdXRvSW1wb3J0OiB0cnVlLFxuICAgICAgICAgICAgdGFnczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBgJHthY2NvdW50SWR9LSR7cmVnaW9ufWBcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjphY2NvdW50TmFtZVwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhY2NvdW50XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBhY2NvdW50IHBvb2wgaXMgY3JlYXRlZCBhZnRlciB0aGUgcmVnaW9uYWwgQ0lEUiBhbGxvY2F0aW9uXG4gICAgICAgIGlwYW1Qb29sLm5vZGUuYWRkRGVwZW5kZW5jeShyZWdpb25hbENpZHJBbGxvY2F0aW9uKTtcblxuICAgICAgICBjb25zdCBjaWRyQWxsb2NhdGlvbiA9IG5ldyBDZm5JUEFNUG9vbENpZHIoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHthY2NvdW50fVBvb2xDaWRyJHtwcm92aXNpb25lZE5ldG1hc2tMZW5ndGh9JHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpcGFtUG9vbElkOiBpcGFtUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgICAgIG5ldG1hc2tMZW5ndGg6IHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTaGFyZSB0aGUgcG9vbCB3aXRoIHRoZSB0YXJnZXQgYWNjb3VudCBzbyB0aGF0IFZQQ3MgY2FuIGFsbG9jYXRlXG4gICAgICAgIGNvbnN0IHNoYXJlID0gbmV3IFJlc291cmNlU2hhcmUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHthY2NvdW50fUlwYW1SZXNvdXJjZVNoYXJlJHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgJHthY2NvdW50fUlwYW1SZXNvdXJjZVNoYXJlLiR7cmVnaW9ufWAsXG4gICAgICAgICAgICBhbGxvd0V4dGVybmFsUHJpbmNpcGFsczogZmFsc2UsXG4gICAgICAgICAgICBwcmluY2lwYWxzOiBbYWNjb3VudElkXSxcbiAgICAgICAgICAgIHJlc291cmNlQXJuczogW2lwYW1Qb29sLmF0dHJBcm5dLFxuICAgICAgICAgICAgdGFnczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGBtYW5hZ2VtZW50YFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB0aGUgc2hhcmUgaXMgY3JlYXRlZCBvbmx5IGFmdGVyIHRoZSBDSURSIGlzIHByb3Zpc2lvbmVkXG4gICAgICAgIHNoYXJlLm5vZGUuYWRkRGVwZW5kZW5jeShjaWRyQWxsb2NhdGlvbik7XG5cbiAgICAgICAgLy8gRXhwb3NlIHRoZSBwb29sIElEIGZvciBjcm9zcy1zdGFjayB1c2FnZSAoZS5nLiBWUEMgYWxsb2NhdGlvbnMpXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYElwYW1Qb29sSWQke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gLCB7XG4gICAgICAgICAga2V5OiBgSXBhbVBvb2xJZCR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgICAgdmFsdWU6IGlwYW1Qb29sLmF0dHJJcGFtUG9vbElkLFxuICAgICAgICAgIGV4cG9ydE5hbWU6IGBJcGFtUG9vbElkJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YFxuICAgICAgICB9KTtcblxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBJcGFtUG9vbEFybiR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsIHtcbiAgICAgICAgICBrZXk6IGBJcGFtUG9vbEFybiR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgICAgdmFsdWU6IGlwYW1Qb29sLmF0dHJBcm4sXG4gICAgICAgICAgZXhwb3J0TmFtZTogYElwYW1Qb29sQXJuJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElwYW1Qb29sU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJcGFtUG9vbFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IElwYW1Qb29sKHRoaXMsIFwiSXBhbVBvb2xcIiwge1xuICAgICAgb3JnQWNjb3VudHM6IHByb3BzLm9yZ0FjY291bnRzLFxuICAgICAgcmVnaW9uczogcHJvcHMucmVnaW9uc1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbVBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2lwYW1Qb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvRTtBQUNwRSwyQ0FBdUM7QUFDdkMsaURBRzZCO0FBQzdCLDhEQUEyRDtBQUMzRCw4REFBdUQ7QUF5QnZELE1BQWEsUUFBUyxTQUFRLHNCQUFTO0lBQ3JDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiwwREFBMEQ7UUFDMUQsTUFBTSx5QkFBeUIsR0FDN0IsS0FBSyxDQUFDLFNBQVMsSUFBSSxnQkFBRSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzdELE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FDdEIsQ0FBQztRQUVGLHVEQUF1RDtRQUN2RCxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxFQUFFLENBQUM7UUFDeEUsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLENBQUMsd0JBQXdCLElBQUksRUFBRSxDQUFDO1FBRXRFLGtGQUFrRjtRQUNsRixJQUFJLG9CQUFvQixHQUFHLEVBQUUsSUFBSSxvQkFBb0IsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUMzRCxNQUFNLElBQUksS0FBSyxDQUNiLG1G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QUFjLENBQUMsQ0FBQztnQkFFekMsa0VBQWtFO2dCQUNsRSxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGFBQWEsU0FBUyxHQUFHLFlBQVksRUFBRSxFQUFFO29CQUMzRCxHQUFHLEVBQUUsYUFBYSxTQUFTLEdBQUcsWUFBWSxFQUFFO29CQUM1QyxLQUFLLEVBQUUsUUFBUSxDQUFDLGNBQWM7b0JBQzlCLFVBQVUsRUFBRSxhQUFhLFNBQVMsR0FBRyxZQUFZLEVBQUU7aUJBQ3BELENBQUMsQ0FBQztnQkFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGNBQWMsU0FBUyxHQUFHLFlBQVksRUFBRSxFQUFFO29CQUM1RCxHQUFHLEVBQUUsY0FBYyxTQUFTLEdBQUcsWUFBWSxFQUFFO29CQUM3QyxLQUFLLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQ3ZCLFVBQVUsRUFBRSxjQUFjLFNBQVMsR0FBRyxZQUFZLEVBQUU7aUJBQ3JELENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBekxELDRCQXlMQztBQUVELE1BQWEsYUFBYyxTQUFRLG1CQUFLO0lBQ3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzdCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBVEQsc0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIEZuLCB0eXBlIFN0YWNrUHJvcHMsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQ2ZuSVBBTVBvb2wgYXMgSXBhbVBvb2xDbGFzcyxcbiAgQ2ZuSVBBTVBvb2xDaWRyXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBSZXNvdXJjZVNoYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9yZXNvdXJjZVNoYXJlXCI7XG5pbXBvcnQgZ2V0QWNjb3VudElkIGZyb20gXCIuLi8uLi8uLi91dGlscy9nZXRBY2NvdW50SWRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJcGFtUG9vbFByb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIG9yZ0FjY291bnRzOiBzdHJpbmdbXTtcbiAgaXBhbVNjb3BlPzogc3RyaW5nO1xuICByZWdpb25zOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBuZXRtYXNrIGxlbmd0aCAoL0NJRFIpIGVhY2ggY2hpbGQgSVBBTSBwb29sIHNob3VsZCByZWNlaXZlLlxuICAgKiBDb250cm9scyB0aGUgc2l6ZSBvZiBDSURSIGJsb2NrcyBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlZCB0byBWUENzIGZyb20gdGhlIHBvb2wuXG4gICAqIEFjY2VwdGVkIHJhbmdlOiAvMTYgKDY1LDUzNiBJUHMpIOKAkyAvMjggKDE2IElQcykuIERlZmF1bHRzIHRvIC8yMCAoNCwwOTYgSVBzKS5cbiAgICovXG4gIGFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBuZXRtYXNrIGxlbmd0aCAoL0NJRFIpIHByb3Zpc2lvbmVkIGludG8gZWFjaCBjaGlsZCBJUEFNIHBvb2wgb24gY3JlYXRpb24uXG4gICAqIERldGVybWluZXMgdGhlIHRvdGFsIGFkZHJlc3Mgc3BhY2UgYXZhaWxhYmxlIGZvciBWUEMgYWxsb2NhdGlvbnMgaW4gdGhhdCBhY2NvdW50LlxuICAgKiBBY2NlcHRlZCByYW5nZTogLzEzICg1MjQsMjg4IElQcykg4oCTIC8xNiAoNjUsNTM2IElQcykuIERlZmF1bHRzIHRvIC8xNC5cbiAgICovXG4gIHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElwYW1Qb29sU3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICBvcmdBY2NvdW50czogc3RyaW5nW107XG4gIHJlZ2lvbnM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY2xhc3MgSXBhbVBvb2wgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSXBhbVBvb2xQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBHZXQgdGhlIGRlZmF1bHQgSVBBTSBzY29wZSBJRCBmcm9tIHByb3BzLCBvciBDRk4gaW1wb3J0XG4gICAgY29uc3QgSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCA9XG4gICAgICBwcm9wcy5pcGFtU2NvcGUgfHwgRm4uaW1wb3J0VmFsdWUoXCJJcGFtUHJpdmF0ZURlZmF1bHRTY29wZUlkXCIpO1xuXG4gICAgY29uc3QgcmVnaW9ucyA9IHByb3BzLnJlZ2lvbnM7XG4gICAgaWYgKCFyZWdpb25zIHx8IHJlZ2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdCBsZWFzdCBvbmUgcmVnaW9uIG11c3QgYmUgc3BlY2lmaWVkIGZvciBJUEFNIHBvb2xzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yZ2FuaXNhdGlvbkFjY291bnRzID0gcHJvcHMub3JnQWNjb3VudHMubWFwKChhY2NvdW50KSA9PlxuICAgICAgYWNjb3VudC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcblxuICAgIC8vIERldGVybWluZSB0aGUgY2hpbGQtcG9vbCBDSURSIHNpemUgKGRlZmF1bHRzIHRvIC8yMClcbiAgICBjb25zdCBkZWZhdWx0TmV0bWFza0xlbmd0aCA9IHByb3BzLmFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aCA/PyAyMDtcbiAgICBjb25zdCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPSBwcm9wcy5wcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPz8gMTQ7XG5cbiAgICAvLyBCYXNpYyB2YWxpZGF0aW9uIOKAkyAvMTYgdG8gLzI4IGluY2x1c2l2ZSBhcmUgY29uc2lkZXJlZCBzYWZlIGZvciBWUEMgYWxsb2NhdGlvbnNcbiAgICBpZiAoZGVmYXVsdE5ldG1hc2tMZW5ndGggPCAxNiB8fCBkZWZhdWx0TmV0bWFza0xlbmd0aCA+IDI4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBhbGxvY2F0aW9uRGVmYXVsdE5ldG1hc2tMZW5ndGggbXVzdCBiZSBiZXR3ZWVuIDE2IGFuZCAyOCAoaW5jbHVzaXZlKS4gUmVjZWl2ZWQ6ICR7ZGVmYXVsdE5ldG1hc2tMZW5ndGh9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBwcm92aXNpb25lZCBibG9jayBzaXplICgvMTMgdG8gLzE2KVxuICAgIGlmIChwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPCAxMyB8fCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggPiAxNikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgcHJvdmlzaW9uZWROZXRtYXNrTGVuZ3RoIG11c3QgYmUgYmV0d2VlbiAxMyBhbmQgMTYgKGluY2x1c2l2ZSkuIFJlY2VpdmVkOiAke3Byb3Zpc2lvbmVkTmV0bWFza0xlbmd0aH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFdhcm4gaWYgdXNlciByZXF1ZXN0cyBWUEMgYWxsb2NhdGlvbnMgbGFyZ2VyIHRoYW4gdGhlIHByb3Zpc2lvbmVkIHBvb2xcbiAgICBpZiAoZGVmYXVsdE5ldG1hc2tMZW5ndGggPCBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGgpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFdhcm5pbmc6IGFsbG9jYXRpb25EZWZhdWx0TmV0bWFza0xlbmd0aCAoLyR7ZGVmYXVsdE5ldG1hc2tMZW5ndGh9KSBpcyBsYXJnZXIgdGhhbiBwcm92aXNpb25lZE5ldG1hc2tMZW5ndGggKC8ke3Byb3Zpc2lvbmVkTmV0bWFza0xlbmd0aH0pLiBgICtcbiAgICAgICAgICBgVlBDIGFsbG9jYXRpb24gbWF5IGZhaWwgaWYgdGhlIHBvb2wgY2Fubm90IHNhdGlzZnkgdGhlIHJlcXVlc3QuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBUb3AgTGV2ZWwgUG9vbFxuICAgIGNvbnN0IHJvb3RQb29sID0gbmV3IElwYW1Qb29sQ2xhc3ModGhpcywgXCJUb3BMZXZlbElwYW1Qb29sXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgUm9vdCBJUEFNIHBvb2wgKEdsb2JhbClgLFxuICAgICAgYWRkcmVzc0ZhbWlseTogXCJpcHY0XCIsXG4gICAgICBpcGFtU2NvcGVJZDogSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgIHByb3Zpc2lvbmVkQ2lkcnM6IFtcbiAgICAgICAgeyBjaWRyOiBcIjEwLjAuMC4wLzhcIiB9LFxuICAgICAgICB7IGNpZHI6IFwiMTcyLjE2LjAuMC8xMlwiIH0sXG4gICAgICAgIHsgY2lkcjogXCIxOTIuMTY4LjAuMC8xNlwiIH1cbiAgICAgIF0sXG4gICAgICBhdXRvSW1wb3J0OiB0cnVlLFxuICAgICAgdGFnczogW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLFxuICAgICAgICAgIHZhbHVlOiBcInRvcC1sZXZlbFwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgICAgICB2YWx1ZTogXCJtYW5hZ2VtZW50XCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHJlZ2lvbmFsIHBvb2xzIGFzIGNoaWxkcmVuIG9mIHRoZSByb290IHBvb2xcbiAgICBmb3IgKGNvbnN0IHJlZ2lvbiBvZiByZWdpb25zKSB7XG4gICAgICBjb25zdCByZWdpb25TdWZmaXggPSByZWdpb24ucmVwbGFjZSgvLS9nLCBcIlwiKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgcmVnaW9uYWwgcG9vbCBmb3IgdGhpcyBzcGVjaWZpYyByZWdpb25cbiAgICAgIGNvbnN0IHJlZ2lvbmFsUG9vbCA9IG5ldyBJcGFtUG9vbENsYXNzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgUmVnaW9uYWxQb29sJHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgUmVnaW9uYWwgSVBBTSBwb29sIC0gJHtyZWdpb259YCxcbiAgICAgICAgICBhZGRyZXNzRmFtaWx5OiBcImlwdjRcIixcbiAgICAgICAgICBpcGFtU2NvcGVJZDogSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgICAgICBsb2NhbGU6IHJlZ2lvbixcbiAgICAgICAgICBzb3VyY2VJcGFtUG9vbElkOiByb290UG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgICBhdXRvSW1wb3J0OiB0cnVlLFxuICAgICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2V5OiBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLFxuICAgICAgICAgICAgICB2YWx1ZTogYHJlZ2lvbmFsLSR7cmVnaW9ufWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgICAgICAgICB2YWx1ZTogXCJtYW5hZ2VtZW50XCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJlZ2lvbmFsQ2lkckFsbG9jYXRpb24gPSBuZXcgQ2ZuSVBBTVBvb2xDaWRyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgUmVnaW9uYWxQb29sQ2lkciR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgIHtcbiAgICAgICAgICBpcGFtUG9vbElkOiByZWdpb25hbFBvb2wuYXR0cklwYW1Qb29sSWQsXG4gICAgICAgICAgbmV0bWFza0xlbmd0aDogMTAgLy8gRWFjaCByZWdpb24gZ2V0cyBhIC8xMCAoNCwxOTQsMzA0IElQcylcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgLy8gQ3JlYXRlIGFjY291bnQgcG9vbHMgdW5kZXIgZWFjaCByZWdpb25hbCBwb29sXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnQgb2Ygb3JnYW5pc2F0aW9uQWNjb3VudHMpIHtcbiAgICAgICAgY29uc3QgYWNjb3VudElkID0gZ2V0QWNjb3VudElkKGFjY291bnQpO1xuXG4gICAgICAgIGNvbnN0IGlwYW1Qb29sID0gbmV3IElwYW1Qb29sQ2xhc3MoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHthY2NvdW50fUlwYW1Qb29sJHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7YWNjb3VudH0gLSBJUEFNIHBvb2wgLSAke3JlZ2lvbn1gLFxuICAgICAgICAgICAgYWRkcmVzc0ZhbWlseTogXCJpcHY0XCIsXG4gICAgICAgICAgICBpcGFtU2NvcGVJZDogSXBhbVByaXZhdGVEZWZhdWx0U2NvcGVJZCxcbiAgICAgICAgICAgIGxvY2FsZTogcmVnaW9uLFxuICAgICAgICAgICAgc291cmNlSXBhbVBvb2xJZDogcmVnaW9uYWxQb29sLmF0dHJJcGFtUG9vbElkLFxuICAgICAgICAgICAgYWxsb2NhdGlvbkRlZmF1bHROZXRtYXNrTGVuZ3RoOiBkZWZhdWx0TmV0bWFza0xlbmd0aCxcbiAgICAgICAgICAgIGFsbG9jYXRpb25SZXNvdXJjZVRhZ3M6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJmamFsbDpvcGVyYXRpb25zOnBvb2xcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYCR7YWNjb3VudElkfS0ke3JlZ2lvbn1gXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhdXRvSW1wb3J0OiB0cnVlLFxuICAgICAgICAgICAgdGFnczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBcImZqYWxsOm9wZXJhdGlvbnM6cG9vbFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBgJHthY2NvdW50SWR9LSR7cmVnaW9ufWBcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJmamFsbDpjb3N0QWxsb2NhdGlvbjphY2NvdW50TmFtZVwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhY2NvdW50XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBhY2NvdW50IHBvb2wgaXMgY3JlYXRlZCBhZnRlciB0aGUgcmVnaW9uYWwgQ0lEUiBhbGxvY2F0aW9uXG4gICAgICAgIGlwYW1Qb29sLm5vZGUuYWRkRGVwZW5kZW5jeShyZWdpb25hbENpZHJBbGxvY2F0aW9uKTtcblxuICAgICAgICBjb25zdCBjaWRyQWxsb2NhdGlvbiA9IG5ldyBDZm5JUEFNUG9vbENpZHIoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHthY2NvdW50fVBvb2xDaWRyJHtwcm92aXNpb25lZE5ldG1hc2tMZW5ndGh9JHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpcGFtUG9vbElkOiBpcGFtUG9vbC5hdHRySXBhbVBvb2xJZCxcbiAgICAgICAgICAgIG5ldG1hc2tMZW5ndGg6IHByb3Zpc2lvbmVkTmV0bWFza0xlbmd0aFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTaGFyZSB0aGUgcG9vbCB3aXRoIHRoZSB0YXJnZXQgYWNjb3VudCBzbyB0aGF0IFZQQ3MgY2FuIGFsbG9jYXRlXG4gICAgICAgIGNvbnN0IHNoYXJlID0gbmV3IFJlc291cmNlU2hhcmUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHthY2NvdW50fUlwYW1SZXNvdXJjZVNoYXJlJHtyZWdpb25TdWZmaXh9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgJHthY2NvdW50fUlwYW1SZXNvdXJjZVNoYXJlLiR7cmVnaW9ufWAsXG4gICAgICAgICAgICBhbGxvd0V4dGVybmFsUHJpbmNpcGFsczogZmFsc2UsXG4gICAgICAgICAgICBwcmluY2lwYWxzOiBbYWNjb3VudElkXSxcbiAgICAgICAgICAgIHJlc291cmNlQXJuczogW2lwYW1Qb29sLmF0dHJBcm5dLFxuICAgICAgICAgICAgdGFnczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGBtYW5hZ2VtZW50YFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB0aGUgc2hhcmUgaXMgY3JlYXRlZCBvbmx5IGFmdGVyIHRoZSBDSURSIGlzIHByb3Zpc2lvbmVkXG4gICAgICAgIHNoYXJlLm5vZGUuYWRkRGVwZW5kZW5jeShjaWRyQWxsb2NhdGlvbik7XG5cbiAgICAgICAgLy8gRXhwb3NlIHRoZSBwb29sIElEIGZvciBjcm9zcy1zdGFjayB1c2FnZSAoZS5nLiBWUEMgYWxsb2NhdGlvbnMpXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYElwYW1Qb29sSWQke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gLCB7XG4gICAgICAgICAga2V5OiBgSXBhbVBvb2xJZCR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgICAgdmFsdWU6IGlwYW1Qb29sLmF0dHJJcGFtUG9vbElkLFxuICAgICAgICAgIGV4cG9ydE5hbWU6IGBJcGFtUG9vbElkJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YFxuICAgICAgICB9KTtcblxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBJcGFtUG9vbEFybiR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsIHtcbiAgICAgICAgICBrZXk6IGBJcGFtUG9vbEFybiR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgICAgdmFsdWU6IGlwYW1Qb29sLmF0dHJBcm4sXG4gICAgICAgICAgZXhwb3J0TmFtZTogYElwYW1Qb29sQXJuJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElwYW1Qb29sU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJcGFtUG9vbFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbmV3IElwYW1Qb29sKHRoaXMsIFwiSXBhbVBvb2xcIiwge1xuICAgICAgb3JnQWNjb3VudHM6IHByb3BzLm9yZ0FjY291bnRzLFxuICAgICAgcmVnaW9uczogcHJvcHMucmVnaW9uc1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -41,6 +41,7 @@ export interface VpcProps extends ec2.VpcProps {
|
|
|
41
41
|
export declare class Vpc extends ec2.Vpc {
|
|
42
42
|
readonly gatewayEndpoints: ec2.GatewayVpcEndpoint[];
|
|
43
43
|
readonly interfaceEndpoints: ec2.InterfaceVpcEndpoint[];
|
|
44
|
+
readonly hasNatGateways: boolean;
|
|
44
45
|
constructor(scope: Construct, id: string, props?: VpcProps);
|
|
45
46
|
private static gatewayEndpoints;
|
|
46
47
|
private addInterfaceEndpoints;
|
|
@@ -22,8 +22,9 @@ class Vpc extends ec2.Vpc {
|
|
|
22
22
|
});
|
|
23
23
|
this.gatewayEndpoints = [];
|
|
24
24
|
this.interfaceEndpoints = [];
|
|
25
|
-
|
|
26
|
-
this.
|
|
25
|
+
// Store whether NAT gateways are present for use by other constructs (e.g., ECS)
|
|
26
|
+
this.hasNatGateways = natGateways !== 0;
|
|
27
|
+
this.addInterfaceEndpoints(id, props, this.hasNatGateways);
|
|
27
28
|
}
|
|
28
29
|
static gatewayEndpoints(props) {
|
|
29
30
|
if (props?.endpointsConfig === false) {
|
|
@@ -57,6 +58,9 @@ class Vpc extends ec2.Vpc {
|
|
|
57
58
|
if (interfaceConfig === false || interfaceConfig === undefined) {
|
|
58
59
|
return;
|
|
59
60
|
}
|
|
61
|
+
// VPC endpoints must be in the same subnet type as the resources using them:
|
|
62
|
+
// - With NAT: PRIVATE_WITH_EGRESS (Lambda uses these when NAT is available)
|
|
63
|
+
// - Without NAT: PRIVATE_ISOLATED (Lambda falls back to these when no NAT exists)
|
|
60
64
|
const subnetType = hasNatGateways
|
|
61
65
|
? ec2.SubnetType.PRIVATE_WITH_EGRESS
|
|
62
66
|
: ec2.SubnetType.PRIVATE_ISOLATED;
|
|
@@ -227,4 +231,4 @@ class Vpc extends ec2.Vpc {
|
|
|
227
231
|
}
|
|
228
232
|
}
|
|
229
233
|
exports.Vpc = Vpc;
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQTZEO0FBQzdELDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFFekMsa0RBQStDO0FBNkMvQyxNQUFhLEdBQUksU0FBUSxHQUFHLENBQUMsR0FBRztJQUk5QixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELE1BQU0sRUFDSixNQUFNLEVBQUUsZUFBZSxFQUN2QixPQUFPLEVBQUUsWUFBWSxFQUNyQixHQUFHLFNBQVMsRUFDYixHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEIsTUFBTSxNQUFNLEdBQUcsZUFBZSxJQUFJLENBQUMsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUVuQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDeEIsR0FBRyxTQUFTO1lBQ1osT0FBTztZQUNQLFdBQVc7WUFDWCxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUN2RCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztZQUN4QyxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztZQUM5QyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1NBQzlDLENBQUMsQ0FBQztRQXJCVyxxQkFBZ0IsR0FBNkIsRUFBRSxDQUFDO1FBQ2hELHVCQUFrQixHQUErQixFQUFFLENBQUM7UUFz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LGlCQUFpQixDQUFDO1lBQ3ZDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztZQUNwQyxpQkFBaUIsRUFBRSxXQUFXO1lBQzlCLDhCQUE4QixFQUFFLGNBQWM7U0FDL0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLEtBQWdCO1FBQ3ZDLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUNYLEVBQVUsRUFDVixZQUFvQjtRQUVwQixPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxFQUFFLEdBQUcsWUFBWSxJQUFJLEVBQUUsRUFBRTthQUNqQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF4U0Qsa0JBd1NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgRHVyYXRpb24sIFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7IHR5cGUgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2Jhc2UvYXdzU3RhY2tcIjtcbmltcG9ydCB7IExvZ0dyb3VwIH0gZnJvbSBcIi4uL2xvZ2dpbmcvbG9nR3JvdXBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWcGNGbG93TG9nQ29uZmlnIHtcbiAgZGVzdGluYXRpb24/OiBcImNsb3Vkd2F0Y2hcIiB8IFwiczNcIjtcbiAgcmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbiAgdHJhZmZpY1R5cGU/OiBcIkFMTFwiIHwgXCJBQ0NFUFRcIiB8IFwiUkVKRUNUXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVnBjTmF0Q29uZmlnIHtcbiAgY291bnQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBHYXRld2F5RW5kcG9pbnRzIHtcbiAgczM/OiBib29sZWFuO1xuICBkeW5hbW9kYj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJbnRlcmZhY2VFbmRwb2ludHMge1xuICBlY3I/OiBib29sZWFuO1xuICBzZWNyZXRzTWFuYWdlcj86IGJvb2xlYW47XG4gIGttcz86IGJvb2xlYW47XG4gIGNsb3Vkd2F0Y2hMb2dzPzogYm9vbGVhbjtcbiAgc3NtPzogYm9vbGVhbjtcbiAgc3RzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEVuZHBvaW50c0NvbmZpZyB7XG4gIGdhdGV3YXk/OiBHYXRld2F5RW5kcG9pbnRzIHwgZmFsc2U7XG4gIGludGVyZmFjZT86IEludGVyZmFjZUVuZHBvaW50cyB8IGZhbHNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZwY1Byb3BzIGV4dGVuZHMgZWMyLlZwY1Byb3BzIHtcbiAgcmVnaW9uPzogc3RyaW5nO1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIGF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW107XG4gIGlwdjRJcGFtUG9vbElkPzogc3RyaW5nO1xuICBtYXhBenM/OiBudW1iZXI7XG4gIG5hdEdhdGV3YXlDb25maWc/OiBWcGNOYXRDb25maWcgfCBmYWxzZTtcbiAgZmxvd0xvZ0NvbmZpZz86IFZwY0Zsb3dMb2dDb25maWcgfCBmYWxzZTtcbiAgZW5kcG9pbnRzQ29uZmlnPzogRW5kcG9pbnRzQ29uZmlnIHwgZmFsc2U7XG4gIHZwY0NpZHJNYXNrPzogbnVtYmVyO1xuICBzdWJuZXRDaWRyTWFzaz86IG51bWJlcjtcbiAgdnBjTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFZwYyBleHRlbmRzIGVjMi5WcGMge1xuICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheUVuZHBvaW50czogZWMyLkdhdGV3YXlWcGNFbmRwb2ludFtdID0gW107XG4gIHB1YmxpYyByZWFkb25seSBpbnRlcmZhY2VFbmRwb2ludHM6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBWcGNQcm9wcykge1xuICAgIGNvbnN0IHtcbiAgICAgIG1heEF6czogbWF4QXpzRnJvbVByb3BzLFxuICAgICAgdnBjTmFtZTogZXhwbGljaXROYW1lLFxuICAgICAgLi4ucmVzdFByb3BzXG4gICAgfSA9IHByb3BzID8/IHt9O1xuICAgIGNvbnN0IG1heEF6cyA9IG1heEF6c0Zyb21Qcm9wcyA/PyAzO1xuICAgIGNvbnN0IG5hdEdhdGV3YXlzID0gVnBjLnJlc29sdmVOYXRHYXRld2F5cyhwcm9wcyk7XG4gICAgY29uc3QgdnBjTmFtZSA9IGV4cGxpY2l0TmFtZSA/PyBpZDtcblxuICAgIHN1cGVyKHNjb3BlLCBgdnBjLSR7aWR9YCwge1xuICAgICAgLi4ucmVzdFByb3BzLFxuICAgICAgdnBjTmFtZSxcbiAgICAgIG5hdEdhdGV3YXlzLFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZXM6IFZwYy5hdmFpbGFiaWxpdHlab25lcyhzY29wZSwgbWF4QXpzKSxcbiAgICAgIGZsb3dMb2dzOiBWcGMuZmxvd0xvZ3Moc2NvcGUsIGlkLCBwcm9wcyksXG4gICAgICBpcEFkZHJlc3NlczogVnBjLmlwQWRkcmVzc2VzKHNjb3BlLCBpZCwgcHJvcHMpLFxuICAgICAgZ2F0ZXdheUVuZHBvaW50czogVnBjLmdhdGV3YXlFbmRwb2ludHMocHJvcHMpXG4gICAgfSk7XG5cbiAgICBjb25zdCBoYXNOYXRHYXRld2F5cyA9IG5hdEdhdGV3YXlzICE9PSAwO1xuICAgIHRoaXMuYWRkSW50ZXJmYWNlRW5kcG9pbnRzKGlkLCBwcm9wcywgaGFzTmF0R2F0ZXdheXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2F0ZXdheUVuZHBvaW50cyhcbiAgICBwcm9wcz86IFZwY1Byb3BzXG4gICk6IFJlY29yZDxzdHJpbmcsIGVjMi5HYXRld2F5VnBjRW5kcG9pbnRPcHRpb25zPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzPy5lbmRwb2ludHNDb25maWcgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGdhdGV3YXlDb25maWcgPSBwcm9wcz8uZW5kcG9pbnRzQ29uZmlnPy5nYXRld2F5O1xuICAgIGlmIChnYXRld2F5Q29uZmlnID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBlbmFibGVTMyA9IGdhdGV3YXlDb25maWc/LnMzID8/IHRydWU7XG4gICAgY29uc3QgZW5hYmxlRHluYW1vZGIgPSBnYXRld2F5Q29uZmlnPy5keW5hbW9kYiA/PyB0cnVlO1xuXG4gICAgaWYgKCFlbmFibGVTMyAmJiAhZW5hYmxlRHluYW1vZGIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZW5kcG9pbnRzOiBSZWNvcmQ8c3RyaW5nLCBlYzIuR2F0ZXdheVZwY0VuZHBvaW50T3B0aW9ucz4gPSB7fTtcblxuICAgIGlmIChlbmFibGVTMykge1xuICAgICAgZW5kcG9pbnRzLlMzID0geyBzZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5TMyB9O1xuICAgIH1cbiAgICBpZiAoZW5hYmxlRHluYW1vZGIpIHtcbiAgICAgIGVuZHBvaW50cy5EeW5hbW9EQiA9IHtcbiAgICAgICAgc2VydmljZTogZWMyLkdhdGV3YXlWcGNFbmRwb2ludEF3c1NlcnZpY2UuRFlOQU1PREJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGVuZHBvaW50cztcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW50ZXJmYWNlRW5kcG9pbnRzKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFZwY1Byb3BzIHwgdW5kZWZpbmVkLFxuICAgIGhhc05hdEdhdGV3YXlzOiBib29sZWFuXG4gICkge1xuICAgIGlmIChwcm9wcz8uZW5kcG9pbnRzQ29uZmlnID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGludGVyZmFjZUNvbmZpZyA9IHByb3BzPy5lbmRwb2ludHNDb25maWc/LmludGVyZmFjZTtcbiAgICBpZiAoaW50ZXJmYWNlQ29uZmlnID09PSBmYWxzZSB8fCBpbnRlcmZhY2VDb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN1Ym5ldFR5cGUgPSBoYXNOYXRHYXRld2F5c1xuICAgICAgPyBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAgICA6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQ7XG4gICAgY29uc3Qgc3VibmV0U2VsZWN0aW9uID0geyBzdWJuZXRUeXBlIH07XG5cbiAgICBpZiAoaW50ZXJmYWNlQ29uZmlnLmVjcikge1xuICAgICAgdGhpcy5pbnRlcmZhY2VFbmRwb2ludHMucHVzaChcbiAgICAgICAgbmV3IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludCh0aGlzLCBgJHtpZH1FY3JEb2NrZXJgLCB7XG4gICAgICAgICAgdnBjOiB0aGlzLFxuICAgICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuRUNSX0RPQ0tFUixcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLmludGVyZmFjZUVuZHBvaW50cy5wdXNoKFxuICAgICAgICBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIGAke2lkfUVjckFwaWAsIHtcbiAgICAgICAgICB2cGM6IHRoaXMsXG4gICAgICAgICAgc2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1IsXG4gICAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgc3VibmV0czogc3VibmV0U2VsZWN0aW9uXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpbnRlcmZhY2VDb25maWcuc2VjcmV0c01hbmFnZXIpIHtcbiAgICAgIHRoaXMuaW50ZXJmYWNlRW5kcG9pbnRzLnB1c2goXG4gICAgICAgIG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgYCR7aWR9U2VjcmV0c01hbmFnZXJgLCB7XG4gICAgICAgICAgdnBjOiB0aGlzLFxuICAgICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU0VDUkVUU19NQU5BR0VSLFxuICAgICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHN1Ym5ldHM6IHN1Ym5ldFNlbGVjdGlvblxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJmYWNlQ29uZmlnLmttcykge1xuICAgICAgdGhpcy5pbnRlcmZhY2VFbmRwb2ludHMucHVzaChcbiAgICAgICAgbmV3IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludCh0aGlzLCBgJHtpZH1LbXNgLCB7XG4gICAgICAgICAgdnBjOiB0aGlzLFxuICAgICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuS01TLFxuICAgICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHN1Ym5ldHM6IHN1Ym5ldFNlbGVjdGlvblxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJmYWNlQ29uZmlnLmNsb3Vkd2F0Y2hMb2dzKSB7XG4gICAgICB0aGlzLmludGVyZmFjZUVuZHBvaW50cy5wdXNoKFxuICAgICAgICBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIGAke2lkfUNsb3VkV2F0Y2hMb2dzYCwge1xuICAgICAgICAgIHZwYzogdGhpcyxcbiAgICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkNMT1VEV0FUQ0hfTE9HUyxcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGludGVyZmFjZUNvbmZpZy5zc20pIHtcbiAgICAgIHRoaXMuaW50ZXJmYWNlRW5kcG9pbnRzLnB1c2goXG4gICAgICAgIG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgYCR7aWR9U3NtYCwge1xuICAgICAgICAgIHZwYzogdGhpcyxcbiAgICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNTTSxcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLmludGVyZmFjZUVuZHBvaW50cy5wdXNoKFxuICAgICAgICBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIGAke2lkfVNzbU1lc3NhZ2VzYCwge1xuICAgICAgICAgIHZwYzogdGhpcyxcbiAgICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNTTV9NRVNTQUdFUyxcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGludGVyZmFjZUNvbmZpZy5zdHMpIHtcbiAgICAgIHRoaXMuaW50ZXJmYWNlRW5kcG9pbnRzLnB1c2goXG4gICAgICAgIG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgYCR7aWR9U3RzYCwge1xuICAgICAgICAgIHZwYzogdGhpcyxcbiAgICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNUUyxcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHJlc29sdmVOYXRHYXRld2F5cyhwcm9wcz86IFZwY1Byb3BzKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBuYXRDb25maWcgPSBwcm9wcz8ubmF0R2F0ZXdheUNvbmZpZztcblxuICAgIGlmIChuYXRDb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAobmF0Q29uZmlnID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hdENvbmZpZy5jb3VudCA/PyAxO1xuICB9XG5cbiAgc3RhdGljIGF2YWlsYWJpbGl0eVpvbmVzKHNjb3BlOiBDb25zdHJ1Y3QsIG1heEF6czogbnVtYmVyID0gMykge1xuICAgIHJldHVybiBTdGFjay5vZihzY29wZSkuYXZhaWxhYmlsaXR5Wm9uZXMuc2xpY2UoMCwgbWF4QXpzKTtcbiAgfVxuXG4gIHN0YXRpYyBmbG93TG9ncyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBWcGNQcm9wc1xuICApOiBSZWNvcmQ8c3RyaW5nLCBlYzIuRmxvd0xvZ09wdGlvbnM+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocHJvcHM/LmZsb3dMb2dDb25maWcgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChwcm9wcz8uZmxvd0xvZ0NvbmZpZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIXByb3BzPy5hY2NvdW50SWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtgJHtpZH1WcGNGbG93TG9nc2BdOiB7XG4gICAgICAgICAgZGVzdGluYXRpb246IGVjMi5GbG93TG9nRGVzdGluYXRpb24udG9DbG91ZFdhdGNoTG9ncyhcbiAgICAgICAgICAgIG5ldyBMb2dHcm91cChzY29wZSwgYCR7aWR9Rmxvd0xvZ0dyb3VwYCwge1xuICAgICAgICAgICAgICBsb2dHcm91cE5hbWU6IGAvdnBjL2Zsb3dsb2dzL3ZwYy0ke2lkfS9gLFxuICAgICAgICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHByb3BzLmZsb3dMb2dDb25maWc7XG4gICAgY29uc3QgdHJhZmZpY1R5cGUgPSBWcGMucmVzb2x2ZVRyYWZmaWNUeXBlKGNvbmZpZy50cmFmZmljVHlwZSk7XG5cbiAgICBpZiAoY29uZmlnLmRlc3RpbmF0aW9uID09PSBcInMzXCIpIHtcbiAgICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGAke2lkfUZsb3dMb2dCdWNrZXRgLCB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IGB2cGMtZmxvd2xvZ3MtJHtpZC50b0xvd2VyQ2FzZSgpfS0ke1N0YWNrLm9mKHNjb3BlKS5hY2NvdW50fWAsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBzMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICAgIGxpZmVjeWNsZVJ1bGVzOiBjb25maWcucmV0ZW50aW9uRGF5c1xuICAgICAgICAgID8gW3sgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cyhjb25maWcucmV0ZW50aW9uRGF5cyksIGVuYWJsZWQ6IHRydWUgfV1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtgJHtpZH1WcGNGbG93TG9nc2BdOiB7XG4gICAgICAgICAgZGVzdGluYXRpb246IGVjMi5GbG93TG9nRGVzdGluYXRpb24udG9TMyhidWNrZXQpLFxuICAgICAgICAgIHRyYWZmaWNUeXBlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmV0ZW50aW9uRGF5cyA9IGNvbmZpZy5yZXRlbnRpb25EYXlzID8/IDE0O1xuICAgIHJldHVybiB7XG4gICAgICBbYCR7aWR9VnBjRmxvd0xvZ3NgXToge1xuICAgICAgICBkZXN0aW5hdGlvbjogZWMyLkZsb3dMb2dEZXN0aW5hdGlvbi50b0Nsb3VkV2F0Y2hMb2dzKFxuICAgICAgICAgIG5ldyBMb2dHcm91cChzY29wZSwgYCR7aWR9Rmxvd0xvZ0dyb3VwYCwge1xuICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBgL3ZwYy9mbG93bG9ncy92cGMtJHtpZH0vYCxcbiAgICAgICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgICAgIHJldGVudGlvbjogVnBjLmRheXNUb1JldGVudGlvbihyZXRlbnRpb25EYXlzKVxuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIHRyYWZmaWNUeXBlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRheXNUb1JldGVudGlvbihkYXlzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbGlkUmV0ZW50aW9ucyA9IFtcbiAgICAgIDEsIDMsIDUsIDcsIDE0LCAzMCwgNjAsIDkwLCAxMjAsIDE1MCwgMTgwLCAzNjUsIDQwMCwgNTQ1LCA3MzEsIDEwOTYsIDE4MjcsXG4gICAgICAyMTkyLCAyNTU3LCAyOTIyLCAzMjg4LCAzNjUzXG4gICAgXTtcbiAgICByZXR1cm4gdmFsaWRSZXRlbnRpb25zLmZpbmQoKHIpID0+IHIgPj0gZGF5cykgPz8gMzY1MztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlc29sdmVUcmFmZmljVHlwZShcbiAgICB0cmFmZmljVHlwZT86IFwiQUxMXCIgfCBcIkFDQ0VQVFwiIHwgXCJSRUpFQ1RcIlxuICApOiBlYzIuRmxvd0xvZ1RyYWZmaWNUeXBlIHtcbiAgICBzd2l0Y2ggKHRyYWZmaWNUeXBlKSB7XG4gICAgICBjYXNlIFwiQUNDRVBUXCI6XG4gICAgICAgIHJldHVybiBlYzIuRmxvd0xvZ1RyYWZmaWNUeXBlLkFDQ0VQVDtcbiAgICAgIGNhc2UgXCJSRUpFQ1RcIjpcbiAgICAgICAgcmV0dXJuIGVjMi5GbG93TG9nVHJhZmZpY1R5cGUuUkVKRUNUO1xuICAgICAgY2FzZSBcIkFMTFwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGVjMi5GbG93TG9nVHJhZmZpY1R5cGUuQUxMO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpcEFkZHJlc3NlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFZwY1Byb3BzKSB7XG4gICAgaWYgKCFwcm9wcz8uYWNjb3VudElkIHx8ICFwcm9wcz8uaXB2NElwYW1Qb29sSWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgdnBjQ2lkck1hc2sgPSBwcm9wcy52cGNDaWRyTWFzayA/PyAyMDtcbiAgICBjb25zdCBzdWJuZXRDaWRyTWFzayA9IHByb3BzLnN1Ym5ldENpZHJNYXNrID8/IDIzO1xuXG4gICAgcmV0dXJuIGVjMi5JcEFkZHJlc3Nlcy5hd3NJcGFtQWxsb2NhdGlvbih7XG4gICAgICBpcHY0SXBhbVBvb2xJZDogcHJvcHMuaXB2NElwYW1Qb29sSWQsXG4gICAgICBpcHY0TmV0bWFza0xlbmd0aDogdnBjQ2lkck1hc2ssXG4gICAgICBkZWZhdWx0U3VibmV0SXB2NE5ldG1hc2tMZW5ndGg6IHN1Ym5ldENpZHJNYXNrXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoaWQ6IHN0cmluZywgcHJvcHM/OiBWcGNQcm9wcyk6IChzYjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3Qge1xuICAgIHJldHVybiAoc2I6IFN0YWNrQnVpbGRlcikgPT4ge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBwcm9wcyk7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBpbXBvcnQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2cGNTdGFja05hbWU6IHN0cmluZ1xuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIHJldHVybiBlYzIuVnBjLmZyb21Mb29rdXAoc2IuZ2V0U3RhY2soKSwgaWQsIHtcbiAgICAgICAgdnBjTmFtZTogYCR7dnBjU3RhY2tOYW1lfS8ke2lkfWBcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQTZEO0FBQzdELDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFFekMsa0RBQStDO0FBNkMvQyxNQUFhLEdBQUksU0FBUSxHQUFHLENBQUMsR0FBRztJQUs5QixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELE1BQU0sRUFDSixNQUFNLEVBQUUsZUFBZSxFQUN2QixPQUFPLEVBQUUsWUFBWSxFQUNyQixHQUFHLFNBQVMsRUFDYixHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDaEIsTUFBTSxNQUFNLEdBQUcsZUFBZSxJQUFJLENBQUMsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUVuQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDeEIsR0FBRyxTQUFTO1lBQ1osT0FBTztZQUNQLFdBQVc7WUFDWCxpQkFBaUIsRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUN2RCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztZQUN4QyxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztZQUM5QyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1NBQzlDLENBQUMsQ0FBQztRQXRCVyxxQkFBZ0IsR0FBNkIsRUFBRSxDQUFDO1FBQ2hELHVCQUFrQixHQUErQixFQUFFLENBQUM7UUF1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LGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztRQUVsRCxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7WUFDdkMsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3BDLGlCQUFpQixFQUFFLFdBQVc7WUFDOUIsOEJBQThCLEVBQUUsY0FBYztTQUMvQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEVBQWdCLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQ1gsRUFBVSxFQUNWLFlBQW9CO1FBRXBCLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxPQUFPLEVBQUUsR0FBRyxZQUFZLElBQUksRUFBRSxFQUFFO2FBQ2pDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTdTRCxrQkE2U0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgczMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgdHlwZSBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYmFzZS9hd3NTdGFja1wiO1xuaW1wb3J0IHsgTG9nR3JvdXAgfSBmcm9tIFwiLi4vbG9nZ2luZy9sb2dHcm91cFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZwY0Zsb3dMb2dDb25maWcge1xuICBkZXN0aW5hdGlvbj86IFwiY2xvdWR3YXRjaFwiIHwgXCJzM1wiO1xuICByZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICB0cmFmZmljVHlwZT86IFwiQUxMXCIgfCBcIkFDQ0VQVFwiIHwgXCJSRUpFQ1RcIjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWcGNOYXRDb25maWcge1xuICBjb3VudD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIEdhdGV3YXlFbmRwb2ludHMge1xuICBzMz86IGJvb2xlYW47XG4gIGR5bmFtb2RiPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEludGVyZmFjZUVuZHBvaW50cyB7XG4gIGVjcj86IGJvb2xlYW47XG4gIHNlY3JldHNNYW5hZ2VyPzogYm9vbGVhbjtcbiAga21zPzogYm9vbGVhbjtcbiAgY2xvdWR3YXRjaExvZ3M/OiBib29sZWFuO1xuICBzc20/OiBib29sZWFuO1xuICBzdHM/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRW5kcG9pbnRzQ29uZmlnIHtcbiAgZ2F0ZXdheT86IEdhdGV3YXlFbmRwb2ludHMgfCBmYWxzZTtcbiAgaW50ZXJmYWNlPzogSW50ZXJmYWNlRW5kcG9pbnRzIHwgZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVnBjUHJvcHMgZXh0ZW5kcyBlYzIuVnBjUHJvcHMge1xuICByZWdpb24/OiBzdHJpbmc7XG4gIGFjY291bnRJZD86IHN0cmluZztcbiAgYXZhaWxhYmlsaXR5Wm9uZXM/OiBzdHJpbmdbXTtcbiAgaXB2NElwYW1Qb29sSWQ/OiBzdHJpbmc7XG4gIG1heEF6cz86IG51bWJlcjtcbiAgbmF0R2F0ZXdheUNvbmZpZz86IFZwY05hdENvbmZpZyB8IGZhbHNlO1xuICBmbG93TG9nQ29uZmlnPzogVnBjRmxvd0xvZ0NvbmZpZyB8IGZhbHNlO1xuICBlbmRwb2ludHNDb25maWc/OiBFbmRwb2ludHNDb25maWcgfCBmYWxzZTtcbiAgdnBjQ2lkck1hc2s/OiBudW1iZXI7XG4gIHN1Ym5ldENpZHJNYXNrPzogbnVtYmVyO1xuICB2cGNOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVnBjIGV4dGVuZHMgZWMyLlZwYyB7XG4gIHB1YmxpYyByZWFkb25seSBnYXRld2F5RW5kcG9pbnRzOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50W10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IGludGVyZmFjZUVuZHBvaW50czogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50W10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IGhhc05hdEdhdGV3YXlzOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogVnBjUHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICBtYXhBenM6IG1heEF6c0Zyb21Qcm9wcyxcbiAgICAgIHZwY05hbWU6IGV4cGxpY2l0TmFtZSxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSBwcm9wcyA/PyB7fTtcbiAgICBjb25zdCBtYXhBenMgPSBtYXhBenNGcm9tUHJvcHMgPz8gMztcbiAgICBjb25zdCBuYXRHYXRld2F5cyA9IFZwYy5yZXNvbHZlTmF0R2F0ZXdheXMocHJvcHMpO1xuICAgIGNvbnN0IHZwY05hbWUgPSBleHBsaWNpdE5hbWUgPz8gaWQ7XG5cbiAgICBzdXBlcihzY29wZSwgYHZwYy0ke2lkfWAsIHtcbiAgICAgIC4uLnJlc3RQcm9wcyxcbiAgICAgIHZwY05hbWUsXG4gICAgICBuYXRHYXRld2F5cyxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBWcGMuYXZhaWxhYmlsaXR5Wm9uZXMoc2NvcGUsIG1heEF6cyksXG4gICAgICBmbG93TG9nczogVnBjLmZsb3dMb2dzKHNjb3BlLCBpZCwgcHJvcHMpLFxuICAgICAgaXBBZGRyZXNzZXM6IFZwYy5pcEFkZHJlc3NlcyhzY29wZSwgaWQsIHByb3BzKSxcbiAgICAgIGdhdGV3YXlFbmRwb2ludHM6IFZwYy5nYXRld2F5RW5kcG9pbnRzKHByb3BzKVxuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgd2hldGhlciBOQVQgZ2F0ZXdheXMgYXJlIHByZXNlbnQgZm9yIHVzZSBieSBvdGhlciBjb25zdHJ1Y3RzIChlLmcuLCBFQ1MpXG4gICAgdGhpcy5oYXNOYXRHYXRld2F5cyA9IG5hdEdhdGV3YXlzICE9PSAwO1xuICAgIHRoaXMuYWRkSW50ZXJmYWNlRW5kcG9pbnRzKGlkLCBwcm9wcywgdGhpcy5oYXNOYXRHYXRld2F5cyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnYXRld2F5RW5kcG9pbnRzKFxuICAgIHByb3BzPzogVnBjUHJvcHNcbiAgKTogUmVjb3JkPHN0cmluZywgZWMyLkdhdGV3YXlWcGNFbmRwb2ludE9wdGlvbnM+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocHJvcHM/LmVuZHBvaW50c0NvbmZpZyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZ2F0ZXdheUNvbmZpZyA9IHByb3BzPy5lbmRwb2ludHNDb25maWc/LmdhdGV3YXk7XG4gICAgaWYgKGdhdGV3YXlDb25maWcgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGVuYWJsZVMzID0gZ2F0ZXdheUNvbmZpZz8uczMgPz8gdHJ1ZTtcbiAgICBjb25zdCBlbmFibGVEeW5hbW9kYiA9IGdhdGV3YXlDb25maWc/LmR5bmFtb2RiID8/IHRydWU7XG5cbiAgICBpZiAoIWVuYWJsZVMzICYmICFlbmFibGVEeW5hbW9kYikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBlbmRwb2ludHM6IFJlY29yZDxzdHJpbmcsIGVjMi5HYXRld2F5VnBjRW5kcG9pbnRPcHRpb25zPiA9IHt9O1xuXG4gICAgaWYgKGVuYWJsZVMzKSB7XG4gICAgICBlbmRwb2ludHMuUzMgPSB7IHNlcnZpY2U6IGVjMi5HYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlMzIH07XG4gICAgfVxuICAgIGlmIChlbmFibGVEeW5hbW9kYikge1xuICAgICAgZW5kcG9pbnRzLkR5bmFtb0RCID0ge1xuICAgICAgICBzZXJ2aWNlOiBlYzIuR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5EWU5BTU9EQlxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW5kcG9pbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRJbnRlcmZhY2VFbmRwb2ludHMoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogVnBjUHJvcHMgfCB1bmRlZmluZWQsXG4gICAgaGFzTmF0R2F0ZXdheXM6IGJvb2xlYW5cbiAgKSB7XG4gICAgaWYgKHByb3BzPy5lbmRwb2ludHNDb25maWcgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW50ZXJmYWNlQ29uZmlnID0gcHJvcHM/LmVuZHBvaW50c0NvbmZpZz8uaW50ZXJmYWNlO1xuICAgIGlmIChpbnRlcmZhY2VDb25maWcgPT09IGZhbHNlIHx8IGludGVyZmFjZUNvbmZpZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVlBDIGVuZHBvaW50cyBtdXN0IGJlIGluIHRoZSBzYW1lIHN1Ym5ldCB0eXBlIGFzIHRoZSByZXNvdXJjZXMgdXNpbmcgdGhlbTpcbiAgICAvLyAtIFdpdGggTkFUOiBQUklWQVRFX1dJVEhfRUdSRVNTIChMYW1iZGEgdXNlcyB0aGVzZSB3aGVuIE5BVCBpcyBhdmFpbGFibGUpXG4gICAgLy8gLSBXaXRob3V0IE5BVDogUFJJVkFURV9JU09MQVRFRCAoTGFtYmRhIGZhbGxzIGJhY2sgdG8gdGhlc2Ugd2hlbiBubyBOQVQgZXhpc3RzKVxuICAgIGNvbnN0IHN1Ym5ldFR5cGUgPSBoYXNOYXRHYXRld2F5c1xuICAgICAgPyBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAgICA6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQ7XG4gICAgY29uc3Qgc3VibmV0U2VsZWN0aW9uID0geyBzdWJuZXRUeXBlIH07XG5cbiAgICBpZiAoaW50ZXJmYWNlQ29uZmlnLmVjcikge1xuICAgICAgdGhpcy5pbnRlcmZhY2VFbmRwb2ludHMucHVzaChcbiAgICAgICAgbmV3IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludCh0aGlzLCBgJHtpZH1FY3JEb2NrZXJgLCB7XG4gICAgICAgICAgdnBjOiB0aGlzLFxuICAgICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuRUNSX0RPQ0tFUixcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLmludGVyZmFjZUVuZHBvaW50cy5wdXNoKFxuICAgICAgICBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIGAke2lkfUVjckFwaWAsIHtcbiAgICAgICAgICB2cGM6IHRoaXMsXG4gICAgICAgICAgc2VydmljZTogZWMyLkludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FQ1IsXG4gICAgICAgICAgcHJpdmF0ZURuc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgc3VibmV0czogc3VibmV0U2VsZWN0aW9uXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpbnRlcmZhY2VDb25maWcuc2VjcmV0c01hbmFnZXIpIHtcbiAgICAgIHRoaXMuaW50ZXJmYWNlRW5kcG9pbnRzLnB1c2goXG4gICAgICAgIG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgYCR7aWR9U2VjcmV0c01hbmFnZXJgLCB7XG4gICAgICAgICAgdnBjOiB0aGlzLFxuICAgICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU0VDUkVUU19NQU5BR0VSLFxuICAgICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHN1Ym5ldHM6IHN1Ym5ldFNlbGVjdGlvblxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJmYWNlQ29uZmlnLmttcykge1xuICAgICAgdGhpcy5pbnRlcmZhY2VFbmRwb2ludHMucHVzaChcbiAgICAgICAgbmV3IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludCh0aGlzLCBgJHtpZH1LbXNgLCB7XG4gICAgICAgICAgdnBjOiB0aGlzLFxuICAgICAgICAgIHNlcnZpY2U6IGVjMi5JbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuS01TLFxuICAgICAgICAgIHByaXZhdGVEbnNFbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHN1Ym5ldHM6IHN1Ym5ldFNlbGVjdGlvblxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJmYWNlQ29uZmlnLmNsb3Vkd2F0Y2hMb2dzKSB7XG4gICAgICB0aGlzLmludGVyZmFjZUVuZHBvaW50cy5wdXNoKFxuICAgICAgICBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIGAke2lkfUNsb3VkV2F0Y2hMb2dzYCwge1xuICAgICAgICAgIHZwYzogdGhpcyxcbiAgICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkNMT1VEV0FUQ0hfTE9HUyxcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGludGVyZmFjZUNvbmZpZy5zc20pIHtcbiAgICAgIHRoaXMuaW50ZXJmYWNlRW5kcG9pbnRzLnB1c2goXG4gICAgICAgIG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgYCR7aWR9U3NtYCwge1xuICAgICAgICAgIHZwYzogdGhpcyxcbiAgICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNTTSxcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLmludGVyZmFjZUVuZHBvaW50cy5wdXNoKFxuICAgICAgICBuZXcgZWMyLkludGVyZmFjZVZwY0VuZHBvaW50KHRoaXMsIGAke2lkfVNzbU1lc3NhZ2VzYCwge1xuICAgICAgICAgIHZwYzogdGhpcyxcbiAgICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNTTV9NRVNTQUdFUyxcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGludGVyZmFjZUNvbmZpZy5zdHMpIHtcbiAgICAgIHRoaXMuaW50ZXJmYWNlRW5kcG9pbnRzLnB1c2goXG4gICAgICAgIG5ldyBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgYCR7aWR9U3RzYCwge1xuICAgICAgICAgIHZwYzogdGhpcyxcbiAgICAgICAgICBzZXJ2aWNlOiBlYzIuSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlNUUyxcbiAgICAgICAgICBwcml2YXRlRG5zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb25cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHJlc29sdmVOYXRHYXRld2F5cyhwcm9wcz86IFZwY1Byb3BzKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBuYXRDb25maWcgPSBwcm9wcz8ubmF0R2F0ZXdheUNvbmZpZztcblxuICAgIGlmIChuYXRDb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAobmF0Q29uZmlnID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hdENvbmZpZy5jb3VudCA/PyAxO1xuICB9XG5cbiAgc3RhdGljIGF2YWlsYWJpbGl0eVpvbmVzKHNjb3BlOiBDb25zdHJ1Y3QsIG1heEF6cyA9IDMpIHtcbiAgICByZXR1cm4gU3RhY2sub2Yoc2NvcGUpLmF2YWlsYWJpbGl0eVpvbmVzLnNsaWNlKDAsIG1heEF6cyk7XG4gIH1cblxuICBzdGF0aWMgZmxvd0xvZ3MoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogVnBjUHJvcHNcbiAgKTogUmVjb3JkPHN0cmluZywgZWMyLkZsb3dMb2dPcHRpb25zPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzPy5mbG93TG9nQ29uZmlnID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAocHJvcHM/LmZsb3dMb2dDb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCFwcm9wcz8uYWNjb3VudElkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbYCR7aWR9VnBjRmxvd0xvZ3NgXToge1xuICAgICAgICAgIGRlc3RpbmF0aW9uOiBlYzIuRmxvd0xvZ0Rlc3RpbmF0aW9uLnRvQ2xvdWRXYXRjaExvZ3MoXG4gICAgICAgICAgICBuZXcgTG9nR3JvdXAoc2NvcGUsIGAke2lkfUZsb3dMb2dHcm91cGAsIHtcbiAgICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBgL3ZwYy9mbG93bG9ncy92cGMtJHtpZH0vYCxcbiAgICAgICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWcgPSBwcm9wcy5mbG93TG9nQ29uZmlnO1xuICAgIGNvbnN0IHRyYWZmaWNUeXBlID0gVnBjLnJlc29sdmVUcmFmZmljVHlwZShjb25maWcudHJhZmZpY1R5cGUpO1xuXG4gICAgaWYgKGNvbmZpZy5kZXN0aW5hdGlvbiA9PT0gXCJzM1wiKSB7XG4gICAgICBjb25zdCBidWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBgJHtpZH1GbG93TG9nQnVja2V0YCwge1xuICAgICAgICBidWNrZXROYW1lOiBgdnBjLWZsb3dsb2dzLSR7aWQudG9Mb3dlckNhc2UoKX0tJHtTdGFjay5vZihzY29wZSkuYWNjb3VudH1gLFxuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgICBibG9ja1B1YmxpY0FjY2VzczogczMuQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgICBsaWZlY3ljbGVSdWxlczogY29uZmlnLnJldGVudGlvbkRheXNcbiAgICAgICAgICA/IFt7IGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoY29uZmlnLnJldGVudGlvbkRheXMpLCBlbmFibGVkOiB0cnVlIH1dXG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBbYCR7aWR9VnBjRmxvd0xvZ3NgXToge1xuICAgICAgICAgIGRlc3RpbmF0aW9uOiBlYzIuRmxvd0xvZ0Rlc3RpbmF0aW9uLnRvUzMoYnVja2V0KSxcbiAgICAgICAgICB0cmFmZmljVHlwZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJldGVudGlvbkRheXMgPSBjb25maWcucmV0ZW50aW9uRGF5cyA/PyAxNDtcbiAgICByZXR1cm4ge1xuICAgICAgW2Ake2lkfVZwY0Zsb3dMb2dzYF06IHtcbiAgICAgICAgZGVzdGluYXRpb246IGVjMi5GbG93TG9nRGVzdGluYXRpb24udG9DbG91ZFdhdGNoTG9ncyhcbiAgICAgICAgICBuZXcgTG9nR3JvdXAoc2NvcGUsIGAke2lkfUZsb3dMb2dHcm91cGAsIHtcbiAgICAgICAgICAgIGxvZ0dyb3VwTmFtZTogYC92cGMvZmxvd2xvZ3MvdnBjLSR7aWR9L2AsXG4gICAgICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgICAgICByZXRlbnRpb246IFZwYy5kYXlzVG9SZXRlbnRpb24ocmV0ZW50aW9uRGF5cylcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICB0cmFmZmljVHlwZVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBkYXlzVG9SZXRlbnRpb24oZGF5czogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB2YWxpZFJldGVudGlvbnMgPSBbXG4gICAgICAxLCAzLCA1LCA3LCAxNCwgMzAsIDYwLCA5MCwgMTIwLCAxNTAsIDE4MCwgMzY1LCA0MDAsIDU0NSwgNzMxLCAxMDk2LCAxODI3LFxuICAgICAgMjE5MiwgMjU1NywgMjkyMiwgMzI4OCwgMzY1M1xuICAgIF07XG4gICAgcmV0dXJuIHZhbGlkUmV0ZW50aW9ucy5maW5kKChyKSA9PiByID49IGRheXMpID8/IDM2NTM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlVHJhZmZpY1R5cGUoXG4gICAgdHJhZmZpY1R5cGU/OiBcIkFMTFwiIHwgXCJBQ0NFUFRcIiB8IFwiUkVKRUNUXCJcbiAgKTogZWMyLkZsb3dMb2dUcmFmZmljVHlwZSB7XG4gICAgc3dpdGNoICh0cmFmZmljVHlwZSkge1xuICAgICAgY2FzZSBcIkFDQ0VQVFwiOlxuICAgICAgICByZXR1cm4gZWMyLkZsb3dMb2dUcmFmZmljVHlwZS5BQ0NFUFQ7XG4gICAgICBjYXNlIFwiUkVKRUNUXCI6XG4gICAgICAgIHJldHVybiBlYzIuRmxvd0xvZ1RyYWZmaWNUeXBlLlJFSkVDVDtcbiAgICAgIGNhc2UgXCJBTExcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBlYzIuRmxvd0xvZ1RyYWZmaWNUeXBlLkFMTDtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXBBZGRyZXNzZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBWcGNQcm9wcykge1xuICAgIGlmICghcHJvcHM/LmFjY291bnRJZCB8fCAhcHJvcHM/LmlwdjRJcGFtUG9vbElkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHZwY0NpZHJNYXNrID0gcHJvcHMudnBjQ2lkck1hc2sgPz8gMjA7XG4gICAgY29uc3Qgc3VibmV0Q2lkck1hc2sgPSBwcm9wcy5zdWJuZXRDaWRyTWFzayA/PyAyMztcblxuICAgIHJldHVybiBlYzIuSXBBZGRyZXNzZXMuYXdzSXBhbUFsbG9jYXRpb24oe1xuICAgICAgaXB2NElwYW1Qb29sSWQ6IHByb3BzLmlwdjRJcGFtUG9vbElkLFxuICAgICAgaXB2NE5ldG1hc2tMZW5ndGg6IHZwY0NpZHJNYXNrLFxuICAgICAgZGVmYXVsdFN1Ym5ldElwdjROZXRtYXNrTGVuZ3RoOiBzdWJuZXRDaWRyTWFza1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzPzogVnBjUHJvcHMpOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhzYi5nZXRTdGFjaygpLCBpZCwgcHJvcHMpO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgaW1wb3J0KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgdnBjU3RhY2tOYW1lOiBzdHJpbmdcbiAgKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICByZXR1cm4gZWMyLlZwYy5mcm9tTG9va3VwKHNiLmdldFN0YWNrKCksIGlkLCB7XG4gICAgICAgIHZwY05hbWU6IGAke3ZwY1N0YWNrTmFtZX0vJHtpZH1gXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { Stack, type StackProps } from "aws-cdk-lib";
|
|
3
|
+
import { type KeyValue } from "../../../types";
|
|
4
|
+
interface VpcEndpointProps extends StackProps {
|
|
5
|
+
vpcId: string;
|
|
6
|
+
service: string;
|
|
7
|
+
tags: KeyValue;
|
|
8
|
+
}
|
|
9
|
+
export declare class VpcEndpoint extends Construct {
|
|
10
|
+
private vpc;
|
|
11
|
+
private securityGroups;
|
|
12
|
+
constructor(scope: Construct, id: string, props: VpcEndpointProps);
|
|
13
|
+
addVpc(vpcId: string): void;
|
|
14
|
+
addSecurityGroup(service: string): void;
|
|
15
|
+
addEntrypoint(props: VpcEndpointProps): void;
|
|
16
|
+
}
|
|
17
|
+
export declare class VpcEndpointStack extends Stack {
|
|
18
|
+
constructor(scope: Construct, id: string, props: VpcEndpointProps);
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VpcEndpointStack = exports.VpcEndpoint = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
6
|
+
const securityGroup_1 = require("../iam/securityGroup");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
+
const vpc_1 = require("./vpc");
|
|
9
|
+
class VpcEndpoint extends constructs_1.Construct {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id);
|
|
12
|
+
this.securityGroups = [];
|
|
13
|
+
this.addVpc(props.vpcId);
|
|
14
|
+
this.addSecurityGroup(props.service);
|
|
15
|
+
this.addEntrypoint(props);
|
|
16
|
+
}
|
|
17
|
+
addVpc(vpcId) {
|
|
18
|
+
this.vpc = vpc_1.Vpc.fromLookup(this, `Vpc`, {
|
|
19
|
+
vpcId: vpcId
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
addSecurityGroup(service) {
|
|
23
|
+
const securityGroup = new securityGroup_1.SecurityGroup(this, `securityGroup`, {
|
|
24
|
+
vpc: this.vpc,
|
|
25
|
+
description: `Security group for the ${this.vpc.vpcId} VPC endpoint`
|
|
26
|
+
});
|
|
27
|
+
if (service === "com.amazonaws.us-east-1.datasync") {
|
|
28
|
+
const ports = [80, 443, 22, { fromPort: 1024, toPort: 1064 }];
|
|
29
|
+
ports.forEach((port) => {
|
|
30
|
+
if (typeof port === "number") {
|
|
31
|
+
securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.tcp(port), `Allow traffic on port ${port} from the VPC endpoint`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.tcpRange(port.fromPort, port.toPort), `Allow traffic on port range ${port.fromPort}-${port.toPort} from the VPC endpoint`);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
this.securityGroups.push(securityGroup);
|
|
39
|
+
}
|
|
40
|
+
addEntrypoint(props) {
|
|
41
|
+
new aws_ec2_1.InterfaceVpcEndpoint(this, "VpcEndpoint", {
|
|
42
|
+
vpc: this.vpc,
|
|
43
|
+
service: new aws_ec2_1.InterfaceVpcEndpointService(props.service),
|
|
44
|
+
lookupSupportedAzs: true,
|
|
45
|
+
securityGroups: this.securityGroups
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.VpcEndpoint = VpcEndpoint;
|
|
50
|
+
class VpcEndpointStack extends aws_cdk_lib_1.Stack {
|
|
51
|
+
constructor(scope, id, props) {
|
|
52
|
+
super(scope, id, props);
|
|
53
|
+
new VpcEndpoint(this, "VpcEndpoint", {
|
|
54
|
+
...props
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.VpcEndpointStack = VpcEndpointStack;
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjRW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL3ZwY0VuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QyxpREFPNkI7QUFDN0Isd0RBQXFEO0FBQ3JELDZDQUFxRDtBQUVyRCwrQkFBNEI7QUFRNUIsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFJeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSFgsbUJBQWMsR0FBcUIsRUFBRSxDQUFDO1FBSzVDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDckMsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixNQUFNLGFBQWEsR0FBRyxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUM3RCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixXQUFXLEVBQUUsMEJBQTBCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxlQUFlO1NBQ3JFLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxLQUFLLGtDQUFrQyxFQUFFLENBQUM7WUFDbkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFOUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUM3QixhQUFhLENBQUMsY0FBYyxDQUMxQixjQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsY0FBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFDZCx5QkFBeUIsSUFBSSx3QkFBd0IsQ0FDdEQsQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sYUFBYSxDQUFDLGNBQWMsQ0FDMUIsY0FBSSxDQUFDLE9BQU8sRUFBRSxFQUNkLGNBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQ3pDLCtCQUErQixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLHdCQUF3QixDQUNwRixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXVCO1FBQ25DLElBQUksOEJBQW9CLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUM1QyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixPQUFPLEVBQUUsSUFBSSxxQ0FBMkIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3ZELGtCQUFrQixFQUFFLElBQUk7WUFDeEIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRERCxrQ0FzREM7QUFFRCxNQUFhLGdCQUFpQixTQUFRLG1CQUFLO0lBQ3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNuQyxHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFSRCw0Q0FRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBJbnRlcmZhY2VWcGNFbmRwb2ludCxcbiAgSW50ZXJmYWNlVnBjRW5kcG9pbnRTZXJ2aWNlLFxuICB0eXBlIElTZWN1cml0eUdyb3VwLFxuICB0eXBlIElWcGMsXG4gIFBlZXIsXG4gIFBvcnRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IFNlY3VyaXR5R3JvdXAgfSBmcm9tIFwiLi4vaWFtL3NlY3VyaXR5R3JvdXBcIjtcbmltcG9ydCB7IFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHR5cGUgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCIuL3ZwY1wiO1xuXG5pbnRlcmZhY2UgVnBjRW5kcG9pbnRQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICB2cGNJZDogc3RyaW5nO1xuICBzZXJ2aWNlOiBzdHJpbmc7XG4gIHRhZ3M6IEtleVZhbHVlO1xufVxuXG5leHBvcnQgY2xhc3MgVnBjRW5kcG9pbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIHZwYzogSVZwYztcbiAgcHJpdmF0ZSBzZWN1cml0eUdyb3VwczogSVNlY3VyaXR5R3JvdXBbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWcGNFbmRwb2ludFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWRkVnBjKHByb3BzLnZwY0lkKTtcbiAgICB0aGlzLmFkZFNlY3VyaXR5R3JvdXAocHJvcHMuc2VydmljZSk7XG4gICAgdGhpcy5hZGRFbnRyeXBvaW50KHByb3BzKTtcbiAgfVxuXG4gIGFkZFZwYyh2cGNJZDogc3RyaW5nKSB7XG4gICAgdGhpcy52cGMgPSBWcGMuZnJvbUxvb2t1cCh0aGlzLCBgVnBjYCwge1xuICAgICAgdnBjSWQ6IHZwY0lkXG4gICAgfSk7XG4gIH1cblxuICBhZGRTZWN1cml0eUdyb3VwKHNlcnZpY2U6IHN0cmluZykge1xuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cCh0aGlzLCBgc2VjdXJpdHlHcm91cGAsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciB0aGUgJHt0aGlzLnZwYy52cGNJZH0gVlBDIGVuZHBvaW50YFxuICAgIH0pO1xuXG4gICAgaWYgKHNlcnZpY2UgPT09IFwiY29tLmFtYXpvbmF3cy51cy1lYXN0LTEuZGF0YXN5bmNcIikge1xuICAgICAgY29uc3QgcG9ydHMgPSBbODAsIDQ0MywgMjIsIHsgZnJvbVBvcnQ6IDEwMjQsIHRvUG9ydDogMTA2NCB9XTtcblxuICAgICAgcG9ydHMuZm9yRWFjaCgocG9ydCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHBvcnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBzZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICAgICAgUGVlci5hbnlJcHY0KCksXG4gICAgICAgICAgICBQb3J0LnRjcChwb3J0KSxcbiAgICAgICAgICAgIGBBbGxvdyB0cmFmZmljIG9uIHBvcnQgJHtwb3J0fSBmcm9tIHRoZSBWUEMgZW5kcG9pbnRgXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICAgICAgUGVlci5hbnlJcHY0KCksXG4gICAgICAgICAgICBQb3J0LnRjcFJhbmdlKHBvcnQuZnJvbVBvcnQsIHBvcnQudG9Qb3J0KSxcbiAgICAgICAgICAgIGBBbGxvdyB0cmFmZmljIG9uIHBvcnQgcmFuZ2UgJHtwb3J0LmZyb21Qb3J0fS0ke3BvcnQudG9Qb3J0fSBmcm9tIHRoZSBWUEMgZW5kcG9pbnRgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VjdXJpdHlHcm91cHMucHVzaChzZWN1cml0eUdyb3VwKTtcbiAgfVxuXG4gIGFkZEVudHJ5cG9pbnQocHJvcHM6IFZwY0VuZHBvaW50UHJvcHMpIHtcbiAgICBuZXcgSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgXCJWcGNFbmRwb2ludFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgc2VydmljZTogbmV3IEludGVyZmFjZVZwY0VuZHBvaW50U2VydmljZShwcm9wcy5zZXJ2aWNlKSxcbiAgICAgIGxvb2t1cFN1cHBvcnRlZEF6czogdHJ1ZSxcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiB0aGlzLnNlY3VyaXR5R3JvdXBzXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZwY0VuZHBvaW50U3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWcGNFbmRwb2ludFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBuZXcgVnBjRW5kcG9pbnQodGhpcywgXCJWcGNFbmRwb2ludFwiLCB7XG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|