terraconstructs 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +6323 -4796
- package/lib/aws/arn.js +1 -1
- package/lib/aws/aws-construct.js +1 -1
- package/lib/aws/aws-stack.js +1 -1
- package/lib/aws/aws-tags.js +2 -2
- package/lib/aws/cloudwatch/actions/ec2.js +1 -1
- package/lib/aws/cloudwatch/actions/lambda.js +1 -1
- package/lib/aws/cloudwatch/alarm-base.js +1 -1
- package/lib/aws/cloudwatch/alarm-rule.js +1 -1
- package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
- package/lib/aws/cloudwatch/alarm.js +1 -1
- package/lib/aws/cloudwatch/composite-alarm.js +1 -1
- package/lib/aws/cloudwatch/dashboard.js +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
- package/lib/aws/cloudwatch/graph.js +8 -8
- package/lib/aws/cloudwatch/layout.js +3 -3
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
- package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
- package/lib/aws/cloudwatch/log-group.js +1 -1
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.js +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +1 -1
- package/lib/aws/cloudwatch/metric.js +2 -2
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.js +1 -1
- package/lib/aws/cloudwatch/query-definition.js +2 -2
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +1 -1
- package/lib/aws/cloudwatch/text.js +1 -1
- package/lib/aws/cloudwatch/variable.js +3 -3
- package/lib/aws/cloudwatch/widget.js +1 -1
- package/lib/aws/compute/activity.js +1 -1
- package/lib/aws/compute/alb/application-listener-action.js +1 -1
- package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
- package/lib/aws/compute/alb/application-listener-rule.js +1 -1
- package/lib/aws/compute/alb/application-listener.js +1 -1
- package/lib/aws/compute/alb/application-load-balancer.js +1 -1
- package/lib/aws/compute/alb/application-target-group.js +1 -1
- package/lib/aws/compute/alb/conditions.js +1 -1
- package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
- package/lib/aws/compute/alb/trust-store.js +1 -1
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
- package/lib/aws/compute/bastion-host.js +1 -1
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
- package/lib/aws/compute/client-vpn-endpoint.js +2 -2
- package/lib/aws/compute/client-vpn-route.js +2 -2
- package/lib/aws/compute/condition.js +1 -1
- package/lib/aws/compute/connections.js +1 -1
- package/lib/aws/compute/event-invoke-config.js +1 -1
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.js +1 -1
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
- package/lib/aws/compute/event-sources/s3.js +1 -1
- package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
- package/lib/aws/compute/event-sources/sqs.js +1 -1
- package/lib/aws/compute/fields.js +4 -4
- package/lib/aws/compute/function-alias.js +1 -1
- package/lib/aws/compute/function-base.js +2 -2
- package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
- package/lib/aws/compute/function-destinations/function.js +1 -1
- package/lib/aws/compute/function-destinations/sqs.js +1 -1
- package/lib/aws/compute/function-nodejs.js +1 -1
- package/lib/aws/compute/function-url.js +1 -1
- package/lib/aws/compute/function.js +1 -1
- package/lib/aws/compute/instance-types.js +1 -1
- package/lib/aws/compute/instance.js +3 -3
- package/lib/aws/compute/ip-addresses.js +2 -2
- package/lib/aws/compute/ipam.js +1 -1
- package/lib/aws/compute/key-pair.js +1 -1
- package/lib/aws/compute/launch-template.js +2 -2
- package/lib/aws/compute/lb-shared/base-listener.js +1 -1
- package/lib/aws/compute/lb-shared/base-load-balancer.js +1 -1
- package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
- package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
- package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
- package/lib/aws/compute/lb-targets/alb-target.js +3 -3
- package/lib/aws/compute/lb-targets/instance-target.js +2 -2
- package/lib/aws/compute/lb-targets/ip-target.js +1 -1
- package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
- package/lib/aws/compute/load-balancer.js +3 -3
- package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
- package/lib/aws/compute/machine-image/common.js +1 -1
- package/lib/aws/compute/machine-image/machine-image.js +8 -8
- package/lib/aws/compute/nat.js +5 -5
- package/lib/aws/compute/network-acl-types.js +2 -2
- package/lib/aws/compute/network-acl.js +3 -3
- package/lib/aws/compute/nlb/network-listener-action.js +1 -1
- package/lib/aws/compute/nlb/network-listener.js +1 -1
- package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
- package/lib/aws/compute/nlb/network-target-group.js +1 -1
- package/lib/aws/compute/peer.js +1 -1
- package/lib/aws/compute/placement-group.js +1 -1
- package/lib/aws/compute/port.js +1 -1
- package/lib/aws/compute/prefix-list.js +1 -1
- package/lib/aws/compute/route.js +8 -8
- package/lib/aws/compute/security-group.js +1 -1
- package/lib/aws/compute/state-graph.js +1 -1
- package/lib/aws/compute/state-machine-fragment.js +1 -1
- package/lib/aws/compute/state-machine.js +4 -4
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
- package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
- package/lib/aws/compute/states/distributed-map.js +1 -1
- package/lib/aws/compute/states/fail.js +1 -1
- package/lib/aws/compute/states/map-base.js +1 -1
- package/lib/aws/compute/states/map.js +1 -1
- package/lib/aws/compute/states/parallel.js +1 -1
- package/lib/aws/compute/states/pass.js +2 -2
- package/lib/aws/compute/states/state.js +1 -1
- package/lib/aws/compute/states/succeed.js +1 -1
- package/lib/aws/compute/states/task-base.js +2 -2
- package/lib/aws/compute/states/task.js +1 -1
- package/lib/aws/compute/states/wait.js +2 -2
- package/lib/aws/compute/subnet-v2.js +2 -2
- package/lib/aws/compute/subnet.js +1 -1
- package/lib/aws/compute/task-credentials.js +1 -1
- package/lib/aws/compute/task-input.js +1 -1
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
- package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
- package/lib/aws/compute/tasks/http/invoke.js +1 -1
- package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
- package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
- package/lib/aws/compute/types.js +1 -1
- package/lib/aws/compute/user-data.js +3 -3
- package/lib/aws/compute/volume.js +2 -2
- package/lib/aws/compute/vpc-endpoint-service.js +1 -1
- package/lib/aws/compute/vpc-endpoint.js +6 -6
- package/lib/aws/compute/vpc-flow-logs.js +4 -4
- package/lib/aws/compute/vpc-v2-base.js +1 -1
- package/lib/aws/compute/vpc-v2.js +2 -2
- package/lib/aws/compute/vpc.js +4 -4
- package/lib/aws/compute/vpn.js +3 -3
- package/lib/aws/edge/certificate.js +1 -1
- package/lib/aws/edge/distribution.js +3 -3
- package/lib/aws/edge/dns-alias-record-targets.js +2 -2
- package/lib/aws/edge/dns-record.js +13 -13
- package/lib/aws/edge/dns-zone.js +1 -1
- package/lib/aws/edge/function.js +2 -2
- package/lib/aws/edge/key-value-store.js +4 -4
- package/lib/aws/edge/origin.js +3 -3
- package/lib/aws/edge/response-headers-policy.js +1 -1
- package/lib/aws/encryption/alias.js +1 -1
- package/lib/aws/encryption/key.js +1 -1
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +2 -2
- package/lib/aws/iam/group.d.ts +146 -0
- package/lib/aws/iam/group.js +199 -0
- package/lib/aws/iam/index.d.ts +2 -0
- package/lib/aws/iam/index.js +3 -1
- package/lib/aws/iam/instance-profile.js +1 -1
- package/lib/aws/iam/managed-policy.js +1 -1
- package/lib/aws/iam/oidc-provider.js +1 -1
- package/lib/aws/iam/policy-document.js +1 -1
- package/lib/aws/iam/policy-statement.js +1 -1
- package/lib/aws/iam/policy.d.ts +26 -0
- package/lib/aws/iam/policy.js +65 -4
- package/lib/aws/iam/principals.js +20 -20
- package/lib/aws/iam/role.js +1 -1
- package/lib/aws/iam/saml-provider.js +2 -2
- package/lib/aws/iam/unknown-principal.js +1 -1
- package/lib/aws/iam/user.d.ts +174 -0
- package/lib/aws/iam/user.js +236 -0
- package/lib/aws/network/simple-ipv4-vpc.js +1 -1
- package/lib/aws/network/subnet-group.js +3 -3
- package/lib/aws/network/subnet.js +4 -4
- package/lib/aws/notify/archive.js +1 -1
- package/lib/aws/notify/connection.js +3 -3
- package/lib/aws/notify/event-bus.js +3 -3
- package/lib/aws/notify/event-pattern.js +1 -1
- package/lib/aws/notify/input.js +2 -2
- package/lib/aws/notify/kinesis-stream.js +1 -1
- package/lib/aws/notify/queue-policy.js +1 -1
- package/lib/aws/notify/queue.js +1 -1
- package/lib/aws/notify/resource-policy.js +1 -1
- package/lib/aws/notify/rule.js +1 -1
- package/lib/aws/notify/schedule.js +1 -1
- package/lib/aws/notify/targets/event-bus.js +1 -1
- package/lib/aws/notify/targets/function.js +1 -1
- package/lib/aws/notify/targets/log-group.js +2 -2
- package/lib/aws/notify/targets/sqs.js +1 -1
- package/lib/aws/notify/targets/state-machine.js +1 -1
- package/lib/aws/storage/bucket-notifications.js +1 -1
- package/lib/aws/storage/bucket-policy.js +1 -1
- package/lib/aws/storage/bucket-source.js +1 -1
- package/lib/aws/storage/bucket.js +2 -2
- package/lib/aws/storage/notification-targets/function.js +1 -1
- package/lib/aws/storage/notification-targets/queue.js +1 -1
- package/lib/aws/storage/origin-access-identity.js +1 -1
- package/lib/aws/storage/parameter.js +2 -2
- package/lib/construct-base.js +2 -2
- package/lib/duration.js +1 -1
- package/lib/expiration.js +1 -1
- package/lib/size.js +1 -1
- package/lib/stack-base.js +1 -1
- package/lib/terra-func.js +1 -1
- package/package.json +1 -1
package/lib/aws/iam/policy.js
CHANGED
|
@@ -41,6 +41,8 @@ class Policy extends aws_construct_1.AwsConstructBase {
|
|
|
41
41
|
constructor(scope, id, props = {}) {
|
|
42
42
|
super(scope, id, props);
|
|
43
43
|
this.roles = new Array();
|
|
44
|
+
this.users = new Array();
|
|
45
|
+
this.groups = new Array();
|
|
44
46
|
this.referenceTaken = false; // TODO: do we actually use this?
|
|
45
47
|
this.document = props.document ?? new policy_document_1.PolicyDocument(this, "Resource");
|
|
46
48
|
// TODO: This is a logical ID within a resource, no need to use GridUUID
|
|
@@ -53,6 +55,12 @@ class Policy extends aws_construct_1.AwsConstructBase {
|
|
|
53
55
|
if (props.roles) {
|
|
54
56
|
props.roles.forEach((r) => this.attachToRole(r));
|
|
55
57
|
}
|
|
58
|
+
if (props.users) {
|
|
59
|
+
props.users.forEach((u) => this.attachToUser(u));
|
|
60
|
+
}
|
|
61
|
+
if (props.groups) {
|
|
62
|
+
props.groups.forEach((g) => this.attachToGroup(g));
|
|
63
|
+
}
|
|
56
64
|
if (props.statements) {
|
|
57
65
|
props.statements.forEach((s) => this.addStatements(s));
|
|
58
66
|
}
|
|
@@ -65,6 +73,16 @@ class Policy extends aws_construct_1.AwsConstructBase {
|
|
|
65
73
|
addStatements(...statement) {
|
|
66
74
|
this.document.addStatements(...statement);
|
|
67
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Attaches this policy to a user.
|
|
78
|
+
*/
|
|
79
|
+
attachToUser(user) {
|
|
80
|
+
if (this.users.find((u) => u.userArn === user.userArn)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.users.push(user);
|
|
84
|
+
user.attachInlinePolicy(this);
|
|
85
|
+
}
|
|
68
86
|
/**
|
|
69
87
|
* Attaches this policy to a role.
|
|
70
88
|
*
|
|
@@ -81,6 +99,16 @@ class Policy extends aws_construct_1.AwsConstructBase {
|
|
|
81
99
|
this.roles.push(role);
|
|
82
100
|
role.attachInlinePolicy(this);
|
|
83
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Attaches this policy to a group.
|
|
104
|
+
*/
|
|
105
|
+
attachToGroup(group) {
|
|
106
|
+
if (this.groups.find((g) => g.groupArn === group.groupArn)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.groups.push(group);
|
|
110
|
+
group.attachInlinePolicy(this);
|
|
111
|
+
}
|
|
84
112
|
/**
|
|
85
113
|
* The name of this policy.
|
|
86
114
|
*
|
|
@@ -117,8 +145,7 @@ class Policy extends aws_construct_1.AwsConstructBase {
|
|
|
117
145
|
* Whether the policy resource has been attached to any identity
|
|
118
146
|
*/
|
|
119
147
|
get isAttached() {
|
|
120
|
-
|
|
121
|
-
return this.roles.length > 0;
|
|
148
|
+
return this.groups.length + this.users.length + this.roles.length > 0;
|
|
122
149
|
}
|
|
123
150
|
/**
|
|
124
151
|
* Adds resource to the terraform JSON output.
|
|
@@ -160,12 +187,46 @@ class Policy extends aws_construct_1.AwsConstructBase {
|
|
|
160
187
|
policyDocument.addOverride(key, value);
|
|
161
188
|
}
|
|
162
189
|
}
|
|
190
|
+
for (let i = 0; i < this.users.length; i++) {
|
|
191
|
+
const id = `ResourceUsers${i}`;
|
|
192
|
+
if (this.node.tryFindChild(id))
|
|
193
|
+
continue; // ignore if already generated
|
|
194
|
+
const userPolicy = new provider_aws_1.iamUserPolicy.IamUserPolicy(this, id, {
|
|
195
|
+
policy: this.document.json,
|
|
196
|
+
user: this.users[i].userName,
|
|
197
|
+
name: this.policyName,
|
|
198
|
+
});
|
|
199
|
+
// copy any overrides to the underlying L0 resources
|
|
200
|
+
for (const [key, value] of Object.entries(this.rawOverrides)) {
|
|
201
|
+
userPolicy.addOverride(key, value);
|
|
202
|
+
const policyDocument = this.document.node
|
|
203
|
+
.defaultChild;
|
|
204
|
+
policyDocument.addOverride(key, value);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
for (let i = 0; i < this.groups.length; i++) {
|
|
208
|
+
const id = `ResourceGroups${i}`;
|
|
209
|
+
if (this.node.tryFindChild(id))
|
|
210
|
+
continue; // ignore if already generated
|
|
211
|
+
const groupPolicy = new provider_aws_1.iamGroupPolicy.IamGroupPolicy(this, id, {
|
|
212
|
+
policy: this.document.json,
|
|
213
|
+
group: this.groups[i].groupName,
|
|
214
|
+
name: this.policyName,
|
|
215
|
+
});
|
|
216
|
+
// copy any overrides to the underlying L0 resources
|
|
217
|
+
for (const [key, value] of Object.entries(this.rawOverrides)) {
|
|
218
|
+
groupPolicy.addOverride(key, value);
|
|
219
|
+
const policyDocument = this.document.node
|
|
220
|
+
.defaultChild;
|
|
221
|
+
policyDocument.addOverride(key, value);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
163
224
|
return {};
|
|
164
225
|
}
|
|
165
226
|
}
|
|
166
227
|
exports.Policy = Policy;
|
|
167
228
|
_a = JSII_RTTI_SYMBOL_1;
|
|
168
|
-
Policy[_a] = { fqn: "terraconstructs.aws.iam.Policy", version: "0.0.
|
|
229
|
+
Policy[_a] = { fqn: "terraconstructs.aws.iam.Policy", version: "0.0.16" };
|
|
169
230
|
class PolicyGrantPrincipal {
|
|
170
231
|
constructor(_policy) {
|
|
171
232
|
this._policy = _policy;
|
|
@@ -189,4 +250,4 @@ class PolicyGrantPrincipal {
|
|
|
189
250
|
return { statementAdded: true, policyDependable: this._policy };
|
|
190
251
|
}
|
|
191
252
|
}
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9pYW0vcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQW9EO0FBR3BELG9EQUkwQjtBQUMxQix1REFBb0U7QUFVdkQsUUFBQSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFpRXZDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsTUFBTyxTQUFRLGdDQUFnQjtJQUMxQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQzFCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixVQUFrQjtRQUVsQixNQUFNLE1BQU8sU0FBUSxnQ0FBZ0I7WUFBckM7O2dCQUNrQixlQUFVLEdBQUcsVUFBVSxDQUFDO1lBSzFDLENBQUM7WUFKQyxJQUFXLE9BQU87Z0JBQ2hCLG1DQUFtQztnQkFDbkMsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1NBQ0Y7UUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBUUQsSUFBVyxPQUFPO1FBQ2hCLG1DQUFtQztRQUNuQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFPRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXFCLEVBQUU7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFMVCxVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVMsQ0FBQztRQUVwQyxtQkFBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLGlDQUFpQztRQUkvRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN2RSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLFdBQVc7WUFDZCxLQUFLLENBQUMsVUFBVTtnQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxr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QUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7cUJBQ3RDLFlBQWdDLENBQUM7Z0JBQ3BDLGNBQWMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOztBQXBMSCx3QkFxTEM7OztBQUVELE1BQU0sb0JBQW9CO0lBS3hCLFlBQW9CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBSm5CLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBS2xELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLG1GQUFtRjtRQUNuRixzRkFBc0Y7UUFDdEYsdUhBQXVIO1FBQ3ZILE1BQU0sSUFBSSxLQUFLLENBQ2Isd0JBQXdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUkseURBQXlELENBQ3hHLENBQUM7SUFDSixDQUFDO0lBRU0sV0FBVyxDQUFDLFNBQTBCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sb0JBQW9CLENBQ3pCLFNBQTBCO1FBRTFCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLHlDQUF5QztRQUN6Qyw4RkFBOEY7UUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlhbVJvbGVQb2xpY3kgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtRWxlbWVudCB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgSVBvbGljeURvY3VtZW50LCBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCIuL3BvbGljeS1kb2N1bWVudFwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcIi4vcG9saWN5LXN0YXRlbWVudFwiO1xuaW1wb3J0IHtcbiAgQWRkVG9QcmluY2lwYWxQb2xpY3lSZXN1bHQsXG4gIElHcmFudGFibGUsXG4gIElQcmluY2lwYWwsXG4gIFByaW5jaXBhbFBvbGljeUZyYWdtZW50LFxufSBmcm9tIFwiLi9wcmluY2lwYWxzXCI7XG5pbXBvcnQgeyBJUm9sZSB9IGZyb20gXCIuL3JvbGVcIjtcblxuZXhwb3J0IGNvbnN0IE1BWF9QT0xJQ1lfTkFNRV9MRU4gPSAxMjg7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBJQU0gUG9saWN5XG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvYWNjZXNzX3BvbGljaWVzX21hbmFnZS5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBvbGljeSBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBwb2xpY3kuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBJQU0gaW5saW5lIHBvbGljeSBkb2N1bWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvbGljeVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBvbGljeS4gSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgcG9saWNpZXMgZm9yIGFuIGVudGl0eSxcbiAgICogc3BlY2lmeSB1bmlxdWUgbmFtZXMuIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSBhIGxpc3Qgb2YgcG9saWNpZXMgZm9yXG4gICAqIGFuIElBTSByb2xlLCBlYWNoIHBvbGljeSBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBsb2dpY2FsIElEIG9mIHRoZSBwb2xpY3kgcmVzb3VyY2UsIHdoaWNoIGlzIGVuc3VyZWRcbiAgICogdG8gYmUgdW5pcXVlIHdpdGhpbiB0aGUgc3RhY2suXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSb2xlcyB0byBhdHRhY2ggdGhpcyBwb2xpY3kgdG8uXG4gICAqIFlvdSBjYW4gYWxzbyB1c2UgYGF0dGFjaFRvUm9sZShyb2xlKWAgdG8gYXR0YWNoIHRoaXMgcG9saWN5IHRvIGEgcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVzPzogSVJvbGVbXTtcblxuICAvKipcbiAgICogSW5pdGlhbCBzZXQgb2YgcGVybWlzc2lvbnMgdG8gYWRkIHRvIHRoaXMgcG9saWN5IGRvY3VtZW50LlxuICAgKiBZb3UgY2FuIGFsc28gdXNlIGBhZGRTdGF0ZW1lbnRzKC4uLnN0YXRlbWVudClgIHRvIGFkZCBwZXJtaXNzaW9ucyBsYXRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVtZW50cz86IFBvbGljeVN0YXRlbWVudFtdO1xuXG4gIC8qKlxuICAgKiBJbiBjYXNlcyB3aGVyZSB5b3Uga25vdyB0aGUgcG9saWN5IG11c3QgYmUgY3JlYXRlZCBhbmQgaXQgaXMgYWN0dWFsbHlcbiAgICogYW4gZXJyb3IgaWYgbm8gc3RhdGVtZW50cyBoYXZlIGJlZW4gYWRkZWQgdG8gaXQgb3IgaXQgcmVtYWlucyB1bmF0dGFjaGVkIHRvXG4gICAqIGFuIElBTSBpZGVudGl0eSwgeW91IGNhbiBzZXQgdGhpcyB0byBgdHJ1ZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgUG9saWN5RG9jdW1lbnQgdG8gdXNlIGZvciB0aGlzIFBvbGljeS4gSWYgb21pdGVkLCBhbnlcbiAgICogYFBvbGljeVN0YXRlbWVudGAgcHJvdmlkZWQgaW4gdGhlIGBzdGF0ZW1lbnRzYCBwcm9wZXJ0eSB3aWxsIGJlIGFwcGxpZWRcbiAgICogYWdhaW5zdCB0aGUgZW1wdHkgZGVmYXVsdCBgUG9saWN5RG9jdW1lbnRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFuIGVtcHR5IHBvbGljeS5cbiAgICovXG4gIHJlYWRvbmx5IGRvY3VtZW50PzogSVBvbGljeURvY3VtZW50O1xufVxuXG4vKipcbiAqIFRoZSBQb2xpY3kgcmVzb3VyY2UgYXNzb2NpYXRlcyBhbiBbaW5saW5lXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvYWNjZXNzX3BvbGljaWVzLmh0bWwjaW5saW5lKVxuICogSUFNIHBvbGljeSB3aXRoIElBTSB1c2Vycywgcm9sZXMsIG9yIGdyb3Vwcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgSUFNIHBvbGljaWVzLCBzZWVcbiAqIFtPdmVydmlldyBvZiBJQU0gUG9saWNpZXNdKGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3BvbGljaWVzX292ZXJ2aWV3Lmh0bWwpXG4gKiBpbiB0aGUgSUFNIFVzZXIgR3VpZGUgZ3VpZGUuXG4gKlxuICogQWxzbyByZWZlciB0bzpcbiAqIC0gW0lhbSBSb2xlIFBvbGljeV0oaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvbGF0ZXN0L2RvY3MvcmVzb3VyY2VzL2lhbV9yb2xlX3BvbGljeSlcbiAqIC0gW0lhbSBHcm91cCBQb2xpY3ldKGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzL2xhdGVzdC9kb2NzL3Jlc291cmNlcy9pYW1fZ3JvdXBfcG9saWN5KVxuICovXG5leHBvcnQgY2xhc3MgUG9saWN5IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElQb2xpY3ksIElHcmFudGFibGUge1xuICAvKipcbiAgICogSW1wb3J0IGEgcG9saWN5IGluIHRoaXMgYXBwIGJhc2VkIG9uIGl0cyBuYW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Qb2xpY3lOYW1lKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwb2xpY3lOYW1lOiBzdHJpbmcsXG4gICk6IElQb2xpY3kge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJUG9saWN5IHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwb2xpY3lOYW1lID0gcG9saWN5TmFtZTtcbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgLy8gVE9ETzogU3VwcG9ydCB1bmRlZmluZWQgb3V0cHV0cz9cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBvbGljeSBkb2N1bWVudC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudDogSVBvbGljeURvY3VtZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IElQcmluY2lwYWw7XG5cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIC8vIFRPRE86IFN1cHBvcnQgdW5kZWZpbmVkIG91dHB1dHM/XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcG9saWN5TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvbGVzID0gbmV3IEFycmF5PElSb2xlPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZvcmNlOiBib29sZWFuO1xuICBwcml2YXRlIHJlZmVyZW5jZVRha2VuID0gZmFsc2U7IC8vIFRPRE86IGRvIHdlIGFjdHVhbGx5IHVzZSB0aGlzP1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQb2xpY3lQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5kb2N1bWVudCA9IHByb3BzLmRvY3VtZW50ID8/IG5ldyBQb2xpY3lEb2N1bWVudCh0aGlzLCBcIlJlc291cmNlXCIpO1xuICAgIC8vIFRPRE86IFRoaXMgaXMgYSBsb2dpY2FsIElEIHdpdGhpbiBhIHJlc291cmNlLCBubyBuZWVkIHRvIHVzZSBHcmlkVVVJRFxuICAgIHRoaXMuX3BvbGljeU5hbWUgPVxuICAgICAgcHJvcHMucG9saWN5TmFtZSB8fFxuICAgICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICBtYXhMZW5ndGg6IE1BWF9QT0xJQ1lfTkFNRV9MRU4sXG4gICAgICB9KTtcbiAgICB0aGlzLmZvcmNlID0gcHJvcHMuZm9yY2UgPz8gZmFsc2U7XG5cbiAgICBpZiAocHJvcHMucm9sZXMpIHtcbiAgICAgIHByb3BzLnJvbGVzLmZvckVhY2goKHIpID0+IHRoaXMuYXR0YWNoVG9Sb2xlKHIpKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc3RhdGVtZW50cykge1xuICAgICAgcHJvcHMuc3RhdGVtZW50cy5mb3JFYWNoKChzKSA9PiB0aGlzLmFkZFN0YXRlbWVudHMocykpO1xuICAgIH1cblxuICAgIHRoaXMuZ3JhbnRQcmluY2lwYWwgPSBuZXcgUG9saWN5R3JhbnRQcmluY2lwYWwodGhpcyk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7IHZhbGlkYXRlOiAoKSA9PiB0aGlzLnZhbGlkYXRlUG9saWN5KCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcG9saWN5IGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIGFkZFN0YXRlbWVudHMoLi4uc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnRbXSkge1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyguLi5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoaXMgcG9saWN5IHRvIGEgcm9sZS5cbiAgICpcbiAgICogTk9URTogVXNpbmcgdGhpcyBtZXRob2Qgd2lsbCBjb25mbGljdCB3aXRoIGEgcm9sZSB0aGF0IGhhc1xuICAgKiBleGNsdXNpdmUgbWFuYWdlbWVudCBvZiB0aGUgcm9sZSdzIHBvbGljeSBhdHRhY2htZW50cy5cbiAgICpcbiAgICogSWYgeW91IGF0dGVtcHQgdG8gbWFuYWdlIGEgcm9sZSdzIHBvbGljaWVzIGJ5IG11bHRpcGxlIG1lYW5zLFxuICAgKiB5b3Ugd2lsbCBnZXQgcmVzb3VyY2UgY3ljbGluZyBhbmQvb3IgZXJyb3JzLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaFRvUm9sZShyb2xlOiBJUm9sZSkge1xuICAgIGlmICh0aGlzLnJvbGVzLmZpbmQoKHIpID0+IHIucm9sZUFybiA9PT0gcm9sZS5yb2xlQXJuKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJvbGVzLnB1c2gocm9sZSk7XG4gICAgcm9sZS5hdHRhY2hJbmxpbmVQb2xpY3kodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBwb2xpY3kuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBnZXQgcG9saWN5TmFtZSgpOiBzdHJpbmcge1xuICAgIHRoaXMucmVmZXJlbmNlVGFrZW4gPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLl9wb2xpY3lOYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBvbGljeSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIC8vIHZhbGlkYXRlIHRoYXQgdGhlIHBvbGljeSBkb2N1bWVudCBpcyBub3QgZW1wdHlcbiAgICBpZiAodGhpcy5kb2N1bWVudC5pc0VtcHR5KSB7XG4gICAgICBpZiAodGhpcy5mb3JjZSkge1xuICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICBcIlBvbGljeSBjcmVhdGVkIHdpdGggZm9yY2U9dHJ1ZSBpcyBlbXB0eS4gWW91IG11c3QgYWRkIHN0YXRlbWVudHMgdG8gdGhlIHBvbGljeVwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmZvcmNlICYmIHRoaXMucmVmZXJlbmNlVGFrZW4pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgXCJUaGlzIFBvbGljeSBoYXMgYmVlbiByZWZlcmVuY2VkIGJ5IGEgcmVzb3VyY2UsIHNvIGl0IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgc3RhdGVtZW50LlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHZhbGlkYXRlIHRoYXQgdGhlIHBvbGljeSBpcyBhdHRhY2hlZCB0byBhdCBsZWFzdCBvbmUgcHJpbmNpcGFsIChyb2xlLCB1c2VyIG9yIGdyb3VwKS5cbiAgICBpZiAoIXRoaXMuaXNBdHRhY2hlZCkge1xuICAgICAgaWYgKHRoaXMuZm9yY2UpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgXCJQb2xpY3kgY3JlYXRlZCB3aXRoIGZvcmNlPXRydWUgbXVzdCBiZSBhdHRhY2hlZCB0byBhdCBsZWFzdCBvbmUgcHJpbmNpcGFsOiB1c2VyLCBncm91cCBvciByb2xlXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZm9yY2UgJiYgdGhpcy5yZWZlcmVuY2VUYWtlbikge1xuICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICBcIlRoaXMgUG9saWN5IGhhcyBiZWVuIHJlZmVyZW5jZWQgYnkgYSByZXNvdXJjZSwgc28gaXQgbXVzdCBiZSBhdHRhY2hlZCB0byBhdCBsZWFzdCBvbmUgdXNlciwgZ3JvdXAgb3Igcm9sZS5cIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXN1bHQucHVzaCguLi50aGlzLmRvY3VtZW50LnZhbGlkYXRlRm9ySWRlbnRpdHlQb2xpY3koKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBvbGljeSByZXNvdXJjZSBoYXMgYmVlbiBhdHRhY2hlZCB0byBhbnkgaWRlbnRpdHlcbiAgICovXG4gIHByaXZhdGUgZ2V0IGlzQXR0YWNoZWQoKSB7XG4gICAgLy8gcmV0dXJuIHRoaXMuZ3JvdXBzLmxlbmd0aCArIHRoaXMudXNlcnMubGVuZ3RoICsgdGhpcy5yb2xlcy5sZW5ndGggPiAwO1xuICAgIHJldHVybiB0aGlzLnJvbGVzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKlxuICAgKiBjYWxsZWQgYnkgVGVycmFmb3JtU3RhY2sucHJlcGFyZVN0YWNrKClcbiAgICovXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIC8qKlxuICAgICAqIEEgcHJlcGFyaW5nIHJlc29sdmUgcnVuIG1pZ2h0IGFkZCBuZXcgcmVzb3VyY2VzIHRvIHRoZSBzdGFja1xuICAgICAqXG4gICAgICogc2hvdWxkIG5vdCBhZGQgcmVzb3VyY2VzIGlmIGBmb3JjZWAgaXMgYGZhbHNlYCBhbmQgdGhlIHBvbGljeVxuICAgICAqIGRvY3VtZW50IGlzIGVtcHR5IG9yIG5vdCBhdHRhY2hlZFxuICAgICAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTQzLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWlhbS9saWIvcG9saWN5LnRzI0wxNDlcbiAgICAgKi9cbiAgICBpZiAoIXRoaXMuZm9yY2UgJiYgKHRoaXMuZG9jdW1lbnQuaXNFbXB0eSB8fCAhdGhpcy5pc0F0dGFjaGVkKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8vIGFkZCBpYW1Sb2xlUG9saWN5IHJlc291cmNlIGZvciBlYWNoIHJlZmVyZW5jZWQgcm9sZVxuICAgIC8vIE5PVEU6IFRoZSBUZXJyYWZvcm1EZXBlbmRlbmRhYmxlQXNwZWN0IHdpbGwgcHJvcGdhdGUgY29uc3RydWN0IGRlcGVuZGVuY2llcyBvbiB0aGlzIHBvbGljeSB0byBpdHMgSWFtUm9sZVBvbGljeSByZXNvdXJjZXNcbiAgICAvLyBub3Qgc3VyZSBpZiB0aW1lLnNsZWVwIGlzIHN0aWxsIG5lY2Vzc2FyeT9cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcHVsdW1pL3B1bHVtaS1hd3MvaXNzdWVzLzIyNjAjaXNzdWVjb21tZW50LTE5Nzc2MDY1MDlcbiAgICAvLyBlbHNlIG5lZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9pc3N1ZXMvMjk4MjgjaXNzdWVjb21tZW50LTE2OTMzMDc1MDBcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm9sZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGlkID0gYFJlc291cmNlUm9sZXMke2l9YDtcbiAgICAgIC8vIFRPRE86IElkZWFsbHkgd2Ugc2hvdWxkIGhhdmUgdXNlZCBJUmVzb2x2YWJsZS5yZXNvbHZlIGFuZCB1c2UgdGhlIElSZXNvbHZlQ29udGV4dC5wcmVwYXJpbmcgZmxhZ1xuICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtaWFtL2xpYi9wb2xpY3ktZG9jdW1lbnQudHMjTDQ4XG4gICAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIGNvbnRpbnVlOyAvLyBpZ25vcmUgaWYgYWxyZWFkeSBnZW5lcmF0ZWRcblxuICAgICAgY29uc3Qgcm9sZVBvbGljeSA9IG5ldyBpYW1Sb2xlUG9saWN5LklhbVJvbGVQb2xpY3kodGhpcywgaWQsIHtcbiAgICAgICAgcG9saWN5OiB0aGlzLmRvY3VtZW50Lmpzb24sXG4gICAgICAgIHJvbGU6IHRoaXMucm9sZXNbaV0ucm9sZU5hbWUsXG4gICAgICAgIG5hbWU6IHRoaXMucG9saWN5TmFtZSxcbiAgICAgIH0pO1xuICAgICAgLy8gY29weSBhbnkgb3ZlcnJpZGVzIHRvIHRoZSB1bmRlcmx5aW5nIEwwIHJlc291cmNlc1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yYXdPdmVycmlkZXMpKSB7XG4gICAgICAgIHJvbGVQb2xpY3kuYWRkT3ZlcnJpZGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHBvbGljeURvY3VtZW50ID0gdGhpcy5kb2N1bWVudC5ub2RlXG4gICAgICAgICAgLmRlZmF1bHRDaGlsZCBhcyBUZXJyYWZvcm1FbGVtZW50O1xuICAgICAgICBwb2xpY3lEb2N1bWVudC5hZGRPdmVycmlkZShrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmNsYXNzIFBvbGljeUdyYW50UHJpbmNpcGFsIGltcGxlbWVudHMgSVByaW5jaXBhbCB7XG4gIHB1YmxpYyByZWFkb25seSBhc3N1bWVSb2xlQWN0aW9uID0gXCJzdHM6QXNzdW1lUm9sZVwiO1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IElQcmluY2lwYWw7XG4gIHB1YmxpYyByZWFkb25seSBwcmluY2lwYWxBY2NvdW50Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BvbGljeTogUG9saWN5KSB7XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXM7XG4gICAgdGhpcy5wcmluY2lwYWxBY2NvdW50ID0gX3BvbGljeS5lbnYuYWNjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9saWN5RnJhZ21lbnQoKTogUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQge1xuICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgcmVmZXJlbmNlZCB0byBhZGQgcG9saWN5IHN0YXRlbWVudHMgYXMgYSByZXNvdXJjZS1iYXNlZCBwb2xpY3kuXG4gICAgLy8gV2Ugc2hvdWxkIGZhaWwgYmVjYXVzZSBhIHBvbGljeSBjYW5ub3QgYmUgdXNlZCBhcyBhIHByaW5jaXBhbCBvZiBhIHBvbGljeSBkb2N1bWVudC5cbiAgICAvLyBjZi4gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19wcmluY2lwYWwuaHRtbCNQcmluY2lwYWxfc3BlY2lmeWluZ1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgdXNlIGEgUG9saWN5ICcke3RoaXMuX3BvbGljeS5ub2RlLnBhdGh9JyBhcyB0aGUgJ1ByaW5jaXBhbCcgb3IgJ05vdFByaW5jaXBhbCcgaW4gYW4gSUFNIFBvbGljeWAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BvbGljeShzdGF0ZW1lbnQ6IFBvbGljeVN0YXRlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCkuc3RhdGVtZW50QWRkZWQ7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQsXG4gICk6IEFkZFRvUHJpbmNpcGFsUG9saWN5UmVzdWx0IHtcbiAgICB0aGlzLl9wb2xpY3kuYWRkU3RhdGVtZW50cyhzdGF0ZW1lbnQpO1xuICAgIC8vIFRPRE86IEhvdyB0byBzdXBwb3J0IGRlcGVuZGVuY3kgZ3JvdXA/XG4gICAgLy8gVE9ETzogRGVwZW5kYWJsZSBzaG91bGQgYmUgSVJlc29sdmFibGUgZm9yIHRoZSBncm91cCBvZiBwb2xpY3kgYXR0YWNobWVudHMgY3JlYXRlZCAoaWYgYW55KVxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiB0cnVlLCBwb2xpY3lEZXBlbmRhYmxlOiB0aGlzLl9wb2xpY3kgfTtcbiAgfVxufVxuIl19
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9pYW0vcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBSTZCO0FBRzdCLG9EQUkwQjtBQUUxQix1REFBb0U7QUFXdkQsUUFBQSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFpRnZDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsTUFBTyxTQUFRLGdDQUFnQjtJQUMxQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQzFCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixVQUFrQjtRQUVsQixNQUFNLE1BQU8sU0FBUSxnQ0FBZ0I7WUFBckM7O2dCQUNrQixlQUFVLEdBQUcsVUFBVSxDQUFDO1lBSzFDLENBQUM7WUFKQyxJQUFXLE9BQU87Z0JBQ2hCLG1DQUFtQztnQkFDbkMsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1NBQ0Y7UUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBUUQsSUFBVyxPQUFPO1FBQ2hCLG1DQUFtQztRQUNuQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFTRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXFCLEVBQUU7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFQVCxVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVMsQ0FBQztRQUMzQixVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVMsQ0FBQztRQUMzQixXQUFNLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUV0QyxtQkFBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLGlDQUFpQztRQUkvRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN2RSx3RUFB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bEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsbUZBQW1GO1FBQ25GLHNGQUFzRjtRQUN0Rix1SEFBdUg7UUFDdkgsTUFBTSxJQUFJLEtBQUssQ0FDYix3QkFBd0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSx5REFBeUQsQ0FDeEcsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXLENBQUMsU0FBMEI7UUFDM0MsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQzdELENBQUM7SUFFTSxvQkFBb0IsQ0FDekIsU0FBMEI7UUFFMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMseUNBQXlDO1FBQ3pDLDhGQUE4RjtRQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaWFtR3JvdXBQb2xpY3ksXG4gIGlhbVJvbGVQb2xpY3ksXG4gIGlhbVVzZXJQb2xpY3ksXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1FbGVtZW50IH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBJR3JvdXAgfSBmcm9tIFwiLi9ncm91cFwiO1xuaW1wb3J0IHsgSVBvbGljeURvY3VtZW50LCBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCIuL3BvbGljeS1kb2N1bWVudFwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcIi4vcG9saWN5LXN0YXRlbWVudFwiO1xuaW1wb3J0IHtcbiAgQWRkVG9QcmluY2lwYWxQb2xpY3lSZXN1bHQsXG4gIElHcmFudGFibGUsXG4gIElQcmluY2lwYWwsXG4gIFByaW5jaXBhbFBvbGljeUZyYWdtZW50LFxufSBmcm9tIFwiLi9wcmluY2lwYWxzXCI7XG5pbXBvcnQgeyBJUm9sZSB9IGZyb20gXCIuL3JvbGVcIjtcbmltcG9ydCB7IElVc2VyIH0gZnJvbSBcIi4vdXNlclwiO1xuXG5leHBvcnQgY29uc3QgTUFYX1BPTElDWV9OQU1FX0xFTiA9IDEyODtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElBTSBQb2xpY3lcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9hY2Nlc3NfcG9saWNpZXNfbWFuYWdlLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUG9saWN5IGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHBvbGljeS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGFuIElBTSBpbmxpbmUgcG9saWN5IGRvY3VtZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5UHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LiBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBwb2xpY2llcyBmb3IgYW4gZW50aXR5LFxuICAgKiBzcGVjaWZ5IHVuaXF1ZSBuYW1lcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGEgbGlzdCBvZiBwb2xpY2llcyBmb3JcbiAgICogYW4gSUFNIHJvbGUsIGVhY2ggcG9saWN5IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFVzZXMgdGhlIGxvZ2ljYWwgSUQgb2YgdGhlIHBvbGljeSByZXNvdXJjZSwgd2hpY2ggaXMgZW5zdXJlZFxuICAgKiB0byBiZSB1bmlxdWUgd2l0aGluIHRoZSBzdGFjay5cbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZXJzIHRvIGF0dGFjaCB0aGlzIHBvbGljeSB0by5cbiAgICogWW91IGNhbiBhbHNvIHVzZSBgYXR0YWNoVG9Vc2VyKHVzZXIpYCB0byBhdHRhY2ggdGhpcyBwb2xpY3kgdG8gYSB1c2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHVzZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuXG4gIC8qKlxuICAgKiBSb2xlcyB0byBhdHRhY2ggdGhpcyBwb2xpY3kgdG8uXG4gICAqIFlvdSBjYW4gYWxzbyB1c2UgYGF0dGFjaFRvUm9sZShyb2xlKWAgdG8gYXR0YWNoIHRoaXMgcG9saWN5IHRvIGEgcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVzPzogSVJvbGVbXTtcblxuICAvKipcbiAgICogR3JvdXBzIHRvIGF0dGFjaCB0aGlzIHBvbGljeSB0by5cbiAgICogWW91IGNhbiBhbHNvIHVzZSBgYXR0YWNoVG9Hcm91cChncm91cClgIHRvIGF0dGFjaCB0aGlzIHBvbGljeSB0byBhIGdyb3VwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGdyb3Vwcy5cbiAgICovXG4gIHJlYWRvbmx5IGdyb3Vwcz86IElHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNldCBvZiBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhpcyBwb2xpY3kgZG9jdW1lbnQuXG4gICAqIFlvdSBjYW4gYWxzbyB1c2UgYGFkZFN0YXRlbWVudHMoLi4uc3RhdGVtZW50KWAgdG8gYWRkIHBlcm1pc3Npb25zIGxhdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHN0YXRlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBzdGF0ZW1lbnRzPzogUG9saWN5U3RhdGVtZW50W107XG5cbiAgLyoqXG4gICAqIEluIGNhc2VzIHdoZXJlIHlvdSBrbm93IHRoZSBwb2xpY3kgbXVzdCBiZSBjcmVhdGVkIGFuZCBpdCBpcyBhY3R1YWxseVxuICAgKiBhbiBlcnJvciBpZiBubyBzdGF0ZW1lbnRzIGhhdmUgYmVlbiBhZGRlZCB0byBpdCBvciBpdCByZW1haW5zIHVuYXR0YWNoZWQgdG9cbiAgICogYW4gSUFNIGlkZW50aXR5LCB5b3UgY2FuIHNldCB0aGlzIHRvIGB0cnVlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5pdGlhbCBQb2xpY3lEb2N1bWVudCB0byB1c2UgZm9yIHRoaXMgUG9saWN5LiBJZiBvbWl0ZWQsIGFueVxuICAgKiBgUG9saWN5U3RhdGVtZW50YCBwcm92aWRlZCBpbiB0aGUgYHN0YXRlbWVudHNgIHByb3BlcnR5IHdpbGwgYmUgYXBwbGllZFxuICAgKiBhZ2FpbnN0IHRoZSBlbXB0eSBkZWZhdWx0IGBQb2xpY3lEb2N1bWVudGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQW4gZW1wdHkgcG9saWN5LlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnQ/OiBJUG9saWN5RG9jdW1lbnQ7XG59XG5cbi8qKlxuICogVGhlIFBvbGljeSByZXNvdXJjZSBhc3NvY2lhdGVzIGFuIFtpbmxpbmVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9hY2Nlc3NfcG9saWNpZXMuaHRtbCNpbmxpbmUpXG4gKiBJQU0gcG9saWN5IHdpdGggSUFNIHVzZXJzLCByb2xlcywgb3IgZ3JvdXBzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBJQU0gcG9saWNpZXMsIHNlZVxuICogW092ZXJ2aWV3IG9mIElBTSBQb2xpY2llc10oaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcG9saWNpZXNfb3ZlcnZpZXcuaHRtbClcbiAqIGluIHRoZSBJQU0gVXNlciBHdWlkZSBndWlkZS5cbiAqXG4gKiBBbHNvIHJlZmVyIHRvOlxuICogLSBbSWFtIFJvbGUgUG9saWN5XShodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy9sYXRlc3QvZG9jcy9yZXNvdXJjZXMvaWFtX3JvbGVfcG9saWN5KVxuICogLSBbSWFtIEdyb3VwIFBvbGljeV0oaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvbGF0ZXN0L2RvY3MvcmVzb3VyY2VzL2lhbV9ncm91cF9wb2xpY3kpXG4gKi9cbmV4cG9ydCBjbGFzcyBQb2xpY3kgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVBvbGljeSwgSUdyYW50YWJsZSB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYSBwb2xpY3kgaW4gdGhpcyBhcHAgYmFzZWQgb24gaXRzIG5hbWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBvbGljeU5hbWUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHBvbGljeU5hbWU6IHN0cmluZyxcbiAgKTogSVBvbGljeSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElQb2xpY3kge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHBvbGljeU5hbWUgPSBwb2xpY3lOYW1lO1xuICAgICAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgICAgICAvLyBUT0RPOiBTdXBwb3J0IHVuZGVmaW5lZCBvdXRwdXRzP1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcG9saWN5IGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50OiBJUG9saWN5RG9jdW1lbnQ7XG4gIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbDogSVByaW5jaXBhbDtcblxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgLy8gVE9ETzogU3VwcG9ydCB1bmRlZmluZWQgb3V0cHV0cz9cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9wb2xpY3lOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9sZXMgPSBuZXcgQXJyYXk8SVJvbGU+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcnMgPSBuZXcgQXJyYXk8SVVzZXI+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXBzID0gbmV3IEFycmF5PElHcm91cD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JjZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWZlcmVuY2VUYWtlbiA9IGZhbHNlOyAvLyBUT0RPOiBkbyB3ZSBhY3R1YWxseSB1c2UgdGhpcz9cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUG9saWN5UHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMuZG9jdW1lbnQgPSBwcm9wcy5kb2N1bWVudCA/PyBuZXcgUG9saWN5RG9jdW1lbnQodGhpcywgXCJSZXNvdXJjZVwiKTtcbiAgICAvLyBUT0RPOiBUaGlzIGlzIGEgbG9naWNhbCBJRCB3aXRoaW4gYSByZXNvdXJjZSwgbm8gbmVlZCB0byB1c2UgR3JpZFVVSURcbiAgICB0aGlzLl9wb2xpY3lOYW1lID1cbiAgICAgIHByb3BzLnBvbGljeU5hbWUgfHxcbiAgICAgIHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgbWF4TGVuZ3RoOiBNQVhfUE9MSUNZX05BTUVfTEVOLFxuICAgICAgfSk7XG4gICAgdGhpcy5mb3JjZSA9IHByb3BzLmZvcmNlID8/IGZhbHNlO1xuXG4gICAgaWYgKHByb3BzLnJvbGVzKSB7XG4gICAgICBwcm9wcy5yb2xlcy5mb3JFYWNoKChyKSA9PiB0aGlzLmF0dGFjaFRvUm9sZShyKSk7XG4gICAgfVxuICAgIGlmIChwcm9wcy51c2Vycykge1xuICAgICAgcHJvcHMudXNlcnMuZm9yRWFjaCgodSkgPT4gdGhpcy5hdHRhY2hUb1VzZXIodSkpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuZ3JvdXBzKSB7XG4gICAgICBwcm9wcy5ncm91cHMuZm9yRWFjaCgoZykgPT4gdGhpcy5hdHRhY2hUb0dyb3VwKGcpKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc3RhdGVtZW50cykge1xuICAgICAgcHJvcHMuc3RhdGVtZW50cy5mb3JFYWNoKChzKSA9PiB0aGlzLmFkZFN0YXRlbWVudHMocykpO1xuICAgIH1cblxuICAgIHRoaXMuZ3JhbnRQcmluY2lwYWwgPSBuZXcgUG9saWN5R3JhbnRQcmluY2lwYWwodGhpcyk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7IHZhbGlkYXRlOiAoKSA9PiB0aGlzLnZhbGlkYXRlUG9saWN5KCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcG9saWN5IGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIGFkZFN0YXRlbWVudHMoLi4uc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnRbXSkge1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyguLi5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoaXMgcG9saWN5IHRvIGEgdXNlci5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hUb1VzZXIodXNlcjogSVVzZXIpIHtcbiAgICBpZiAodGhpcy51c2Vycy5maW5kKCh1KSA9PiB1LnVzZXJBcm4gPT09IHVzZXIudXNlckFybikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51c2Vycy5wdXNoKHVzZXIpO1xuICAgIHVzZXIuYXR0YWNoSW5saW5lUG9saWN5KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoaXMgcG9saWN5IHRvIGEgcm9sZS5cbiAgICpcbiAgICogTk9URTogVXNpbmcgdGhpcyBtZXRob2Qgd2lsbCBjb25mbGljdCB3aXRoIGEgcm9sZSB0aGF0IGhhc1xuICAgKiBleGNsdXNpdmUgbWFuYWdlbWVudCBvZiB0aGUgcm9sZSdzIHBvbGljeSBhdHRhY2htZW50cy5cbiAgICpcbiAgICogSWYgeW91IGF0dGVtcHQgdG8gbWFuYWdlIGEgcm9sZSdzIHBvbGljaWVzIGJ5IG11bHRpcGxlIG1lYW5zLFxuICAgKiB5b3Ugd2lsbCBnZXQgcmVzb3VyY2UgY3ljbGluZyBhbmQvb3IgZXJyb3JzLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaFRvUm9sZShyb2xlOiBJUm9sZSkge1xuICAgIGlmICh0aGlzLnJvbGVzLmZpbmQoKHIpID0+IHIucm9sZUFybiA9PT0gcm9sZS5yb2xlQXJuKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJvbGVzLnB1c2gocm9sZSk7XG4gICAgcm9sZS5hdHRhY2hJbmxpbmVQb2xpY3kodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgdGhpcyBwb2xpY3kgdG8gYSBncm91cC5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hUb0dyb3VwKGdyb3VwOiBJR3JvdXApIHtcbiAgICBpZiAodGhpcy5ncm91cHMuZmluZCgoZykgPT4gZy5ncm91cEFybiA9PT0gZ3JvdXAuZ3JvdXBBcm4pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZ3JvdXBzLnB1c2goZ3JvdXApO1xuICAgIGdyb3VwLmF0dGFjaElubGluZVBvbGljeSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHBvbGljeS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGdldCBwb2xpY3lOYW1lKCk6IHN0cmluZyB7XG4gICAgdGhpcy5yZWZlcmVuY2VUYWtlbiA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuX3BvbGljeU5hbWU7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUG9saWN5KCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhhdCB0aGUgcG9saWN5IGRvY3VtZW50IGlzIG5vdCBlbXB0eVxuICAgIGlmICh0aGlzLmRvY3VtZW50LmlzRW1wdHkpIHtcbiAgICAgIGlmICh0aGlzLmZvcmNlKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgIFwiUG9saWN5IGNyZWF0ZWQgd2l0aCBmb3JjZT10cnVlIGlzIGVtcHR5LiBZb3UgbXVzdCBhZGQgc3RhdGVtZW50cyB0byB0aGUgcG9saWN5XCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZm9yY2UgJiYgdGhpcy5yZWZlcmVuY2VUYWtlbikge1xuICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICBcIlRoaXMgUG9saWN5IGhhcyBiZWVuIHJlZmVyZW5jZWQgYnkgYSByZXNvdXJjZSwgc28gaXQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBzdGF0ZW1lbnQuXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdmFsaWRhdGUgdGhhdCB0aGUgcG9saWN5IGlzIGF0dGFjaGVkIHRvIGF0IGxlYXN0IG9uZSBwcmluY2lwYWwgKHJvbGUsIHVzZXIgb3IgZ3JvdXApLlxuICAgIGlmICghdGhpcy5pc0F0dGFjaGVkKSB7XG4gICAgICBpZiAodGhpcy5mb3JjZSkge1xuICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICBcIlBvbGljeSBjcmVhdGVkIHdpdGggZm9yY2U9dHJ1ZSBtdXN0IGJlIGF0dGFjaGVkIHRvIGF0IGxlYXN0IG9uZSBwcmluY2lwYWw6IHVzZXIsIGdyb3VwIG9yIHJvbGVcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5mb3JjZSAmJiB0aGlzLnJlZmVyZW5jZVRha2VuKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgIFwiVGhpcyBQb2xpY3kgaGFzIGJlZW4gcmVmZXJlbmNlZCBieSBhIHJlc291cmNlLCBzbyBpdCBtdXN0IGJlIGF0dGFjaGVkIHRvIGF0IGxlYXN0IG9uZSB1c2VyLCBncm91cCBvciByb2xlLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZG9jdW1lbnQudmFsaWRhdGVGb3JJZGVudGl0eVBvbGljeSgpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcG9saWN5IHJlc291cmNlIGhhcyBiZWVuIGF0dGFjaGVkIHRvIGFueSBpZGVudGl0eVxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgaXNBdHRhY2hlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cHMubGVuZ3RoICsgdGhpcy51c2Vycy5sZW5ndGggKyB0aGlzLnJvbGVzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKlxuICAgKiBjYWxsZWQgYnkgVGVycmFmb3JtU3RhY2sucHJlcGFyZVN0YWNrKClcbiAgICovXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIC8qKlxuICAgICAqIEEgcHJlcGFyaW5nIHJlc29sdmUgcnVuIG1pZ2h0IGFkZCBuZXcgcmVzb3VyY2VzIHRvIHRoZSBzdGFja1xuICAgICAqXG4gICAgICogc2hvdWxkIG5vdCBhZGQgcmVzb3VyY2VzIGlmIGBmb3JjZWAgaXMgYGZhbHNlYCBhbmQgdGhlIHBvbGljeVxuICAgICAqIGRvY3VtZW50IGlzIGVtcHR5IG9yIG5vdCBhdHRhY2hlZFxuICAgICAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTQzLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWlhbS9saWIvcG9saWN5LnRzI0wxNDlcbiAgICAgKi9cbiAgICBpZiAoIXRoaXMuZm9yY2UgJiYgKHRoaXMuZG9jdW1lbnQuaXNFbXB0eSB8fCAhdGhpcy5pc0F0dGFjaGVkKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8vIGFkZCBpYW1Sb2xlUG9saWN5IHJlc291cmNlIGZvciBlYWNoIHJlZmVyZW5jZWQgcm9sZVxuICAgIC8vIE5PVEU6IFRoZSBUZXJyYWZvcm1EZXBlbmRlbmRhYmxlQXNwZWN0IHdpbGwgcHJvcGdhdGUgY29uc3RydWN0IGRlcGVuZGVuY2llcyBvbiB0aGlzIHBvbGljeSB0byBpdHMgSWFtUm9sZVBvbGljeSByZXNvdXJjZXNcbiAgICAvLyBub3Qgc3VyZSBpZiB0aW1lLnNsZWVwIGlzIHN0aWxsIG5lY2Vzc2FyeT9cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcHVsdW1pL3B1bHVtaS1hd3MvaXNzdWVzLzIyNjAjaXNzdWVjb21tZW50LTE5Nzc2MDY1MDlcbiAgICAvLyBlbHNlIG5lZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9pc3N1ZXMvMjk4MjgjaXNzdWVjb21tZW50LTE2OTMzMDc1MDBcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm9sZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGlkID0gYFJlc291cmNlUm9sZXMke2l9YDtcbiAgICAgIC8vIFRPRE86IElkZWFsbHkgd2Ugc2hvdWxkIGhhdmUgdXNlZCBJUmVzb2x2YWJsZS5yZXNvbHZlIGFuZCB1c2UgdGhlIElSZXNvbHZlQ29udGV4dC5wcmVwYXJpbmcgZmxhZ1xuICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtaWFtL2xpYi9wb2xpY3ktZG9jdW1lbnQudHMjTDQ4XG4gICAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIGNvbnRpbnVlOyAvLyBpZ25vcmUgaWYgYWxyZWFkeSBnZW5lcmF0ZWRcblxuICAgICAgY29uc3Qgcm9sZVBvbGljeSA9IG5ldyBpYW1Sb2xlUG9saWN5LklhbVJvbGVQb2xpY3kodGhpcywgaWQsIHtcbiAgICAgICAgcG9saWN5OiB0aGlzLmRvY3VtZW50Lmpzb24sXG4gICAgICAgIHJvbGU6IHRoaXMucm9sZXNbaV0ucm9sZU5hbWUsXG4gICAgICAgIG5hbWU6IHRoaXMucG9saWN5TmFtZSxcbiAgICAgIH0pO1xuICAgICAgLy8gY29weSBhbnkgb3ZlcnJpZGVzIHRvIHRoZSB1bmRlcmx5aW5nIEwwIHJlc291cmNlc1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yYXdPdmVycmlkZXMpKSB7XG4gICAgICAgIHJvbGVQb2xpY3kuYWRkT3ZlcnJpZGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHBvbGljeURvY3VtZW50ID0gdGhpcy5kb2N1bWVudC5ub2RlXG4gICAgICAgICAgLmRlZmF1bHRDaGlsZCBhcyBUZXJyYWZvcm1FbGVtZW50O1xuICAgICAgICBwb2xpY3lEb2N1bWVudC5hZGRPdmVycmlkZShrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpZCA9IGBSZXNvdXJjZVVzZXJzJHtpfWA7XG4gICAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIGNvbnRpbnVlOyAvLyBpZ25vcmUgaWYgYWxyZWFkeSBnZW5lcmF0ZWRcblxuICAgICAgY29uc3QgdXNlclBvbGljeSA9IG5ldyBpYW1Vc2VyUG9saWN5LklhbVVzZXJQb2xpY3kodGhpcywgaWQsIHtcbiAgICAgICAgcG9saWN5OiB0aGlzLmRvY3VtZW50Lmpzb24sXG4gICAgICAgIHVzZXI6IHRoaXMudXNlcnNbaV0udXNlck5hbWUsXG4gICAgICAgIG5hbWU6IHRoaXMucG9saWN5TmFtZSxcbiAgICAgIH0pO1xuICAgICAgLy8gY29weSBhbnkgb3ZlcnJpZGVzIHRvIHRoZSB1bmRlcmx5aW5nIEwwIHJlc291cmNlc1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yYXdPdmVycmlkZXMpKSB7XG4gICAgICAgIHVzZXJQb2xpY3kuYWRkT3ZlcnJpZGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHBvbGljeURvY3VtZW50ID0gdGhpcy5kb2N1bWVudC5ub2RlXG4gICAgICAgICAgLmRlZmF1bHRDaGlsZCBhcyBUZXJyYWZvcm1FbGVtZW50O1xuICAgICAgICBwb2xpY3lEb2N1bWVudC5hZGRPdmVycmlkZShrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaWQgPSBgUmVzb3VyY2VHcm91cHMke2l9YDtcbiAgICAgIGlmICh0aGlzLm5vZGUudHJ5RmluZENoaWxkKGlkKSkgY29udGludWU7IC8vIGlnbm9yZSBpZiBhbHJlYWR5IGdlbmVyYXRlZFxuXG4gICAgICBjb25zdCBncm91cFBvbGljeSA9IG5ldyBpYW1Hcm91cFBvbGljeS5JYW1Hcm91cFBvbGljeSh0aGlzLCBpZCwge1xuICAgICAgICBwb2xpY3k6IHRoaXMuZG9jdW1lbnQuanNvbixcbiAgICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXBzW2ldLmdyb3VwTmFtZSxcbiAgICAgICAgbmFtZTogdGhpcy5wb2xpY3lOYW1lLFxuICAgICAgfSk7XG4gICAgICAvLyBjb3B5IGFueSBvdmVycmlkZXMgdG8gdGhlIHVuZGVybHlpbmcgTDAgcmVzb3VyY2VzXG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJhd092ZXJyaWRlcykpIHtcbiAgICAgICAgZ3JvdXBQb2xpY3kuYWRkT3ZlcnJpZGUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHBvbGljeURvY3VtZW50ID0gdGhpcy5kb2N1bWVudC5ub2RlXG4gICAgICAgICAgLmRlZmF1bHRDaGlsZCBhcyBUZXJyYWZvcm1FbGVtZW50O1xuICAgICAgICBwb2xpY3lEb2N1bWVudC5hZGRPdmVycmlkZShrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmNsYXNzIFBvbGljeUdyYW50UHJpbmNpcGFsIGltcGxlbWVudHMgSVByaW5jaXBhbCB7XG4gIHB1YmxpYyByZWFkb25seSBhc3N1bWVSb2xlQWN0aW9uID0gXCJzdHM6QXNzdW1lUm9sZVwiO1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IElQcmluY2lwYWw7XG4gIHB1YmxpYyByZWFkb25seSBwcmluY2lwYWxBY2NvdW50Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BvbGljeTogUG9saWN5KSB7XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXM7XG4gICAgdGhpcy5wcmluY2lwYWxBY2NvdW50ID0gX3BvbGljeS5lbnYuYWNjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9saWN5RnJhZ21lbnQoKTogUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQge1xuICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgcmVmZXJlbmNlZCB0byBhZGQgcG9saWN5IHN0YXRlbWVudHMgYXMgYSByZXNvdXJjZS1iYXNlZCBwb2xpY3kuXG4gICAgLy8gV2Ugc2hvdWxkIGZhaWwgYmVjYXVzZSBhIHBvbGljeSBjYW5ub3QgYmUgdXNlZCBhcyBhIHByaW5jaXBhbCBvZiBhIHBvbGljeSBkb2N1bWVudC5cbiAgICAvLyBjZi4gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19wcmluY2lwYWwuaHRtbCNQcmluY2lwYWxfc3BlY2lmeWluZ1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgdXNlIGEgUG9saWN5ICcke3RoaXMuX3BvbGljeS5ub2RlLnBhdGh9JyBhcyB0aGUgJ1ByaW5jaXBhbCcgb3IgJ05vdFByaW5jaXBhbCcgaW4gYW4gSUFNIFBvbGljeWAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BvbGljeShzdGF0ZW1lbnQ6IFBvbGljeVN0YXRlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCkuc3RhdGVtZW50QWRkZWQ7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQsXG4gICk6IEFkZFRvUHJpbmNpcGFsUG9saWN5UmVzdWx0IHtcbiAgICB0aGlzLl9wb2xpY3kuYWRkU3RhdGVtZW50cyhzdGF0ZW1lbnQpO1xuICAgIC8vIFRPRE86IEhvdyB0byBzdXBwb3J0IGRlcGVuZGVuY3kgZ3JvdXA/XG4gICAgLy8gVE9ETzogRGVwZW5kYWJsZSBzaG91bGQgYmUgSVJlc29sdmFibGUgZm9yIHRoZSBncm91cCBvZiBwb2xpY3kgYXR0YWNobWVudHMgY3JlYXRlZCAoaWYgYW55KVxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiB0cnVlLCBwb2xpY3lEZXBlbmRhYmxlOiB0aGlzLl9wb2xpY3kgfTtcbiAgfVxufVxuIl19
|
|
@@ -74,7 +74,7 @@ class PrincipalPolicyFragment {
|
|
|
74
74
|
}
|
|
75
75
|
exports.PrincipalPolicyFragment = PrincipalPolicyFragment;
|
|
76
76
|
_a = JSII_RTTI_SYMBOL_1;
|
|
77
|
-
PrincipalPolicyFragment[_a] = { fqn: "terraconstructs.aws.iam.PrincipalPolicyFragment", version: "0.0.
|
|
77
|
+
PrincipalPolicyFragment[_a] = { fqn: "terraconstructs.aws.iam.PrincipalPolicyFragment", version: "0.0.16" };
|
|
78
78
|
/**
|
|
79
79
|
* Read from AWS Principal JSON to Terraform principals block(s)
|
|
80
80
|
*
|
|
@@ -193,7 +193,7 @@ class PrincipalBase {
|
|
|
193
193
|
}
|
|
194
194
|
exports.PrincipalBase = PrincipalBase;
|
|
195
195
|
_b = JSII_RTTI_SYMBOL_1;
|
|
196
|
-
PrincipalBase[_b] = { fqn: "terraconstructs.aws.iam.PrincipalBase", version: "0.0.
|
|
196
|
+
PrincipalBase[_b] = { fqn: "terraconstructs.aws.iam.PrincipalBase", version: "0.0.16" };
|
|
197
197
|
/**
|
|
198
198
|
* Specify a principal by the Amazon Resource Name (ARN).
|
|
199
199
|
* You can specify AWS accounts, IAM users, Federated SAML users, IAM roles, and specific assumed-role sessions.
|
|
@@ -238,7 +238,7 @@ class ArnPrincipal extends PrincipalBase {
|
|
|
238
238
|
}
|
|
239
239
|
exports.ArnPrincipal = ArnPrincipal;
|
|
240
240
|
_c = JSII_RTTI_SYMBOL_1;
|
|
241
|
-
ArnPrincipal[_c] = { fqn: "terraconstructs.aws.iam.ArnPrincipal", version: "0.0.
|
|
241
|
+
ArnPrincipal[_c] = { fqn: "terraconstructs.aws.iam.ArnPrincipal", version: "0.0.16" };
|
|
242
242
|
/**
|
|
243
243
|
* Specify AWS account ID as the principal entity in a policy to delegate authority to the account.
|
|
244
244
|
*/
|
|
@@ -261,7 +261,7 @@ class AccountPrincipal extends ArnPrincipal {
|
|
|
261
261
|
}
|
|
262
262
|
exports.AccountPrincipal = AccountPrincipal;
|
|
263
263
|
_d = JSII_RTTI_SYMBOL_1;
|
|
264
|
-
AccountPrincipal[_d] = { fqn: "terraconstructs.aws.iam.AccountPrincipal", version: "0.0.
|
|
264
|
+
AccountPrincipal[_d] = { fqn: "terraconstructs.aws.iam.AccountPrincipal", version: "0.0.16" };
|
|
265
265
|
/**
|
|
266
266
|
* An IAM principal that represents an AWS service (i.e. `sqs.amazonaws.com`).
|
|
267
267
|
*/
|
|
@@ -318,7 +318,7 @@ class ServicePrincipal extends PrincipalBase {
|
|
|
318
318
|
}
|
|
319
319
|
exports.ServicePrincipal = ServicePrincipal;
|
|
320
320
|
_e = JSII_RTTI_SYMBOL_1;
|
|
321
|
-
ServicePrincipal[_e] = { fqn: "terraconstructs.aws.iam.ServicePrincipal", version: "0.0.
|
|
321
|
+
ServicePrincipal[_e] = { fqn: "terraconstructs.aws.iam.ServicePrincipal", version: "0.0.16" };
|
|
322
322
|
/**
|
|
323
323
|
* A principal that represents an AWS Organization
|
|
324
324
|
*/
|
|
@@ -349,7 +349,7 @@ class OrganizationPrincipal extends PrincipalBase {
|
|
|
349
349
|
}
|
|
350
350
|
exports.OrganizationPrincipal = OrganizationPrincipal;
|
|
351
351
|
_f = JSII_RTTI_SYMBOL_1;
|
|
352
|
-
OrganizationPrincipal[_f] = { fqn: "terraconstructs.aws.iam.OrganizationPrincipal", version: "0.0.
|
|
352
|
+
OrganizationPrincipal[_f] = { fqn: "terraconstructs.aws.iam.OrganizationPrincipal", version: "0.0.16" };
|
|
353
353
|
/**
|
|
354
354
|
* A policy principal for canonicalUserIds - useful for S3 bucket policies that use
|
|
355
355
|
* Origin Access identities.
|
|
@@ -391,7 +391,7 @@ class CanonicalUserPrincipal extends PrincipalBase {
|
|
|
391
391
|
}
|
|
392
392
|
exports.CanonicalUserPrincipal = CanonicalUserPrincipal;
|
|
393
393
|
_g = JSII_RTTI_SYMBOL_1;
|
|
394
|
-
CanonicalUserPrincipal[_g] = { fqn: "terraconstructs.aws.iam.CanonicalUserPrincipal", version: "0.0.
|
|
394
|
+
CanonicalUserPrincipal[_g] = { fqn: "terraconstructs.aws.iam.CanonicalUserPrincipal", version: "0.0.16" };
|
|
395
395
|
/**
|
|
396
396
|
* Principal entity that represents a federated identity provider such as Amazon Cognito,
|
|
397
397
|
* that can be used to provide temporary security credentials to users who have been authenticated.
|
|
@@ -424,7 +424,7 @@ class FederatedPrincipal extends PrincipalBase {
|
|
|
424
424
|
}
|
|
425
425
|
exports.FederatedPrincipal = FederatedPrincipal;
|
|
426
426
|
_h = JSII_RTTI_SYMBOL_1;
|
|
427
|
-
FederatedPrincipal[_h] = { fqn: "terraconstructs.aws.iam.FederatedPrincipal", version: "0.0.
|
|
427
|
+
FederatedPrincipal[_h] = { fqn: "terraconstructs.aws.iam.FederatedPrincipal", version: "0.0.16" };
|
|
428
428
|
/**
|
|
429
429
|
* A principal that represents a federated identity provider as Web Identity such as Cognito, Amazon,
|
|
430
430
|
* Facebook, Google, etc.
|
|
@@ -449,7 +449,7 @@ class WebIdentityPrincipal extends FederatedPrincipal {
|
|
|
449
449
|
}
|
|
450
450
|
exports.WebIdentityPrincipal = WebIdentityPrincipal;
|
|
451
451
|
_j = JSII_RTTI_SYMBOL_1;
|
|
452
|
-
WebIdentityPrincipal[_j] = { fqn: "terraconstructs.aws.iam.WebIdentityPrincipal", version: "0.0.
|
|
452
|
+
WebIdentityPrincipal[_j] = { fqn: "terraconstructs.aws.iam.WebIdentityPrincipal", version: "0.0.16" };
|
|
453
453
|
/**
|
|
454
454
|
* A principal that represents a federated identity provider as from a OpenID Connect provider.
|
|
455
455
|
*/
|
|
@@ -472,7 +472,7 @@ class OpenIdConnectPrincipal extends WebIdentityPrincipal {
|
|
|
472
472
|
}
|
|
473
473
|
exports.OpenIdConnectPrincipal = OpenIdConnectPrincipal;
|
|
474
474
|
_k = JSII_RTTI_SYMBOL_1;
|
|
475
|
-
OpenIdConnectPrincipal[_k] = { fqn: "terraconstructs.aws.iam.OpenIdConnectPrincipal", version: "0.0.
|
|
475
|
+
OpenIdConnectPrincipal[_k] = { fqn: "terraconstructs.aws.iam.OpenIdConnectPrincipal", version: "0.0.16" };
|
|
476
476
|
/**
|
|
477
477
|
* Principal entity that represents a SAML federated identity provider
|
|
478
478
|
*/
|
|
@@ -486,7 +486,7 @@ class SamlPrincipal extends FederatedPrincipal {
|
|
|
486
486
|
}
|
|
487
487
|
exports.SamlPrincipal = SamlPrincipal;
|
|
488
488
|
_l = JSII_RTTI_SYMBOL_1;
|
|
489
|
-
SamlPrincipal[_l] = { fqn: "terraconstructs.aws.iam.SamlPrincipal", version: "0.0.
|
|
489
|
+
SamlPrincipal[_l] = { fqn: "terraconstructs.aws.iam.SamlPrincipal", version: "0.0.16" };
|
|
490
490
|
/**
|
|
491
491
|
* Principal entity that represents a SAML federated identity provider for
|
|
492
492
|
* programmatic and AWS Management Console access.
|
|
@@ -529,7 +529,7 @@ class SamlConsolePrincipal extends SamlPrincipal {
|
|
|
529
529
|
}
|
|
530
530
|
exports.SamlConsolePrincipal = SamlConsolePrincipal;
|
|
531
531
|
_m = JSII_RTTI_SYMBOL_1;
|
|
532
|
-
SamlConsolePrincipal[_m] = { fqn: "terraconstructs.aws.iam.SamlConsolePrincipal", version: "0.0.
|
|
532
|
+
SamlConsolePrincipal[_m] = { fqn: "terraconstructs.aws.iam.SamlConsolePrincipal", version: "0.0.16" };
|
|
533
533
|
/**
|
|
534
534
|
* Use the AWS account into which a stack is deployed as the principal entity in a policy
|
|
535
535
|
*/
|
|
@@ -543,7 +543,7 @@ class AccountRootPrincipal extends AccountPrincipal {
|
|
|
543
543
|
}
|
|
544
544
|
exports.AccountRootPrincipal = AccountRootPrincipal;
|
|
545
545
|
_o = JSII_RTTI_SYMBOL_1;
|
|
546
|
-
AccountRootPrincipal[_o] = { fqn: "terraconstructs.aws.iam.AccountRootPrincipal", version: "0.0.
|
|
546
|
+
AccountRootPrincipal[_o] = { fqn: "terraconstructs.aws.iam.AccountRootPrincipal", version: "0.0.16" };
|
|
547
547
|
/**
|
|
548
548
|
* A principal representing all AWS identities in all accounts
|
|
549
549
|
*
|
|
@@ -564,7 +564,7 @@ class AnyPrincipal extends ArnPrincipal {
|
|
|
564
564
|
}
|
|
565
565
|
exports.AnyPrincipal = AnyPrincipal;
|
|
566
566
|
_p = JSII_RTTI_SYMBOL_1;
|
|
567
|
-
AnyPrincipal[_p] = { fqn: "terraconstructs.aws.iam.AnyPrincipal", version: "0.0.
|
|
567
|
+
AnyPrincipal[_p] = { fqn: "terraconstructs.aws.iam.AnyPrincipal", version: "0.0.16" };
|
|
568
568
|
/**
|
|
569
569
|
* A principal representing all identities in all accounts
|
|
570
570
|
* @deprecated use `AnyPrincipal`
|
|
@@ -573,7 +573,7 @@ class Anyone extends AnyPrincipal {
|
|
|
573
573
|
}
|
|
574
574
|
exports.Anyone = Anyone;
|
|
575
575
|
_q = JSII_RTTI_SYMBOL_1;
|
|
576
|
-
Anyone[_q] = { fqn: "terraconstructs.aws.iam.Anyone", version: "0.0.
|
|
576
|
+
Anyone[_q] = { fqn: "terraconstructs.aws.iam.Anyone", version: "0.0.16" };
|
|
577
577
|
/**
|
|
578
578
|
* A principal that uses a literal '*' in the IAM JSON language
|
|
579
579
|
*
|
|
@@ -602,7 +602,7 @@ class StarPrincipal extends PrincipalBase {
|
|
|
602
602
|
}
|
|
603
603
|
exports.StarPrincipal = StarPrincipal;
|
|
604
604
|
_r = JSII_RTTI_SYMBOL_1;
|
|
605
|
-
StarPrincipal[_r] = { fqn: "terraconstructs.aws.iam.StarPrincipal", version: "0.0.
|
|
605
|
+
StarPrincipal[_r] = { fqn: "terraconstructs.aws.iam.StarPrincipal", version: "0.0.16" };
|
|
606
606
|
/**
|
|
607
607
|
* Represents a principal that has multiple types of principals. A composite principal cannot
|
|
608
608
|
* have conditions. i.e. multiple ServicePrincipals that form a composite principal
|
|
@@ -667,7 +667,7 @@ class CompositePrincipal extends PrincipalBase {
|
|
|
667
667
|
}
|
|
668
668
|
exports.CompositePrincipal = CompositePrincipal;
|
|
669
669
|
_s = JSII_RTTI_SYMBOL_1;
|
|
670
|
-
CompositePrincipal[_s] = { fqn: "terraconstructs.aws.iam.CompositePrincipal", version: "0.0.
|
|
670
|
+
CompositePrincipal[_s] = { fqn: "terraconstructs.aws.iam.CompositePrincipal", version: "0.0.16" };
|
|
671
671
|
/**
|
|
672
672
|
* Base class for Principals that wrap other principals
|
|
673
673
|
*/
|
|
@@ -715,7 +715,7 @@ class ComparablePrincipal {
|
|
|
715
715
|
}
|
|
716
716
|
exports.ComparablePrincipal = ComparablePrincipal;
|
|
717
717
|
_t = JSII_RTTI_SYMBOL_1;
|
|
718
|
-
ComparablePrincipal[_t] = { fqn: "terraconstructs.aws.iam.ComparablePrincipal", version: "0.0.
|
|
718
|
+
ComparablePrincipal[_t] = { fqn: "terraconstructs.aws.iam.ComparablePrincipal", version: "0.0.16" };
|
|
719
719
|
/**
|
|
720
720
|
* An IAM principal with additional conditions specifying when the policy is in effect.
|
|
721
721
|
*
|
|
@@ -870,7 +870,7 @@ class PrincipalWithConditions extends PrincipalAdapter {
|
|
|
870
870
|
}
|
|
871
871
|
exports.PrincipalWithConditions = PrincipalWithConditions;
|
|
872
872
|
_u = JSII_RTTI_SYMBOL_1;
|
|
873
|
-
PrincipalWithConditions[_u] = { fqn: "terraconstructs.aws.iam.PrincipalWithConditions", version: "0.0.
|
|
873
|
+
PrincipalWithConditions[_u] = { fqn: "terraconstructs.aws.iam.PrincipalWithConditions", version: "0.0.16" };
|
|
874
874
|
/**
|
|
875
875
|
* Enables session tags on role assumptions from a principal
|
|
876
876
|
*
|
|
@@ -897,7 +897,7 @@ class SessionTagsPrincipal extends PrincipalAdapter {
|
|
|
897
897
|
}
|
|
898
898
|
exports.SessionTagsPrincipal = SessionTagsPrincipal;
|
|
899
899
|
_v = JSII_RTTI_SYMBOL_1;
|
|
900
|
-
SessionTagsPrincipal[_v] = { fqn: "terraconstructs.aws.iam.SessionTagsPrincipal", version: "0.0.
|
|
900
|
+
SessionTagsPrincipal[_v] = { fqn: "terraconstructs.aws.iam.SessionTagsPrincipal", version: "0.0.16" };
|
|
901
901
|
/**
|
|
902
902
|
* Add a principal to an AssumeRolePolicyDocument in the right way
|
|
903
903
|
*
|
package/lib/aws/iam/role.js
CHANGED
|
@@ -361,7 +361,7 @@ class Role extends aws_construct_1.AwsConstructBase {
|
|
|
361
361
|
}
|
|
362
362
|
exports.Role = Role;
|
|
363
363
|
_a = JSII_RTTI_SYMBOL_1;
|
|
364
|
-
Role[_a] = { fqn: "terraconstructs.aws.iam.Role", version: "0.0.
|
|
364
|
+
Role[_a] = { fqn: "terraconstructs.aws.iam.Role", version: "0.0.16" };
|
|
365
365
|
function createAssumeRolePolicy(scope, id, principal, externalIds) {
|
|
366
366
|
const actualDoc = new policy_document_1.PolicyDocument(scope, id);
|
|
367
367
|
// If requested, add externalIds to every statement added to this doc
|
|
@@ -26,7 +26,7 @@ class SamlMetadataDocument {
|
|
|
26
26
|
}
|
|
27
27
|
exports.SamlMetadataDocument = SamlMetadataDocument;
|
|
28
28
|
_a = JSII_RTTI_SYMBOL_1;
|
|
29
|
-
SamlMetadataDocument[_a] = { fqn: "terraconstructs.aws.iam.SamlMetadataDocument", version: "0.0.
|
|
29
|
+
SamlMetadataDocument[_a] = { fqn: "terraconstructs.aws.iam.SamlMetadataDocument", version: "0.0.16" };
|
|
30
30
|
/**
|
|
31
31
|
* A SAML provider
|
|
32
32
|
*/
|
|
@@ -75,5 +75,5 @@ class SamlProvider extends aws_construct_1.AwsConstructBase {
|
|
|
75
75
|
}
|
|
76
76
|
exports.SamlProvider = SamlProvider;
|
|
77
77
|
_b = JSII_RTTI_SYMBOL_1;
|
|
78
|
-
SamlProvider[_b] = { fqn: "terraconstructs.aws.iam.SamlProvider", version: "0.0.
|
|
78
|
+
SamlProvider[_b] = { fqn: "terraconstructs.aws.iam.SamlProvider", version: "0.0.16" };
|
|
79
79
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvaWFtL3NhbWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsc0RBQXNEO0FBQ3RELGlDQUE4QjtBQUU5QixvREFJMEI7QUFxRDFCOztHQUVHO0FBQ0gsTUFBc0Isb0JBQW9CO0lBQ3hDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQy9CLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDakMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7O0FBYkgsb0RBbUJDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLGdDQUFnQjtJQUNoRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FDL0IsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGVBQXVCO1FBRXZCLE1BQU0sTUFBTyxTQUFRLGdDQUFnQjtZQUFyQzs7Z0JBQ2tCLG9CQUFlLEdBQUcsZUFBZSxDQUFDO2dCQUNsQyx3QkFBbUIsR0FBRztvQkFDcEMsR0FBRyxFQUFFLGVBQWU7aUJBQ3JCLENBQUM7WUFJSixDQUFDO1lBSEMsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNsQyxDQUFDO1NBQ0Y7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBS0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUNFLEtBQUssQ0FBQyxJQUFJO1lBQ1YsQ0FBQyxhQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDL0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUN2QyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwyUEFBMlAsQ0FDNVAsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksOEJBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNwRSxJQUFJLEVBQ0YsS0FBSyxDQUFDLElBQUk7Z0JBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7b0JBQ2xDLHdCQUF3QixFQUFFLFNBQVM7b0JBQ25DLFNBQVMsRUFBRSxHQUFHO2lCQUNmLENBQUM7WUFDSixvQkFBb0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRztTQUNqRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRztZQUN6QixHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDMUIsQ0FBQztJQUNKLENBQUM7O0FBdkRILG9DQXdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgaWFtU2FtbFByb3ZpZGVyIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FtbFByb3ZpZGVyT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIFNBTUwgcHJvdmlkZXIuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIFNBTUwgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2FtbFByb3ZpZGVyIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8vIHN0cm9uZ2x5IHR5cGVkIG91dHB1dHNcbiAgcmVhZG9ubHkgc2FtbFByb3ZpZGVyT3V0cHV0czogU2FtbFByb3ZpZGVyT3V0cHV0cztcblxuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBwcm92aWRlclxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzYW1sUHJvdmlkZXJBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFNBTUwgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW1sUHJvdmlkZXJQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwcm92aWRlciB0byBjcmVhdGUuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIGFsbG93cyBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGNvbnNpc3Rpbmcgb2YgdXBwZXIgYW5kXG4gICAqIGxvd2VyY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIG5vIHNwYWNlcy4gWW91IGNhbiBhbHNvIGluY2x1ZGVcbiAgICogYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogXys9LC5ALVxuICAgKlxuICAgKiBMZW5ndGggbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEyOCBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgdW5pcXVlIG5hbWUgYmFzZWQgb24gcGF0aCB3aXRoaW4gc3RhY2tcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgYW4gaWRlbnRpdHkgcHJvdmlkZXIgKElkUCkgdGhhdCBzdXBwb3J0c1xuICAgKiBTQU1MIDIuMC4gVGhlIGRvY3VtZW50IGluY2x1ZGVzIHRoZSBpc3N1ZXIncyBuYW1lLCBleHBpcmF0aW9uIGluZm9ybWF0aW9uLFxuICAgKiBhbmQga2V5cyB0aGF0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBTQU1MIGF1dGhlbnRpY2F0aW9uIHJlc3BvbnNlXG4gICAqIChhc3NlcnRpb25zKSB0aGF0IGFyZSByZWNlaXZlZCBmcm9tIHRoZSBJZFAuIFlvdSBtdXN0IGdlbmVyYXRlIHRoZSBtZXRhZGF0YVxuICAgKiBkb2N1bWVudCB1c2luZyB0aGUgaWRlbnRpdHkgbWFuYWdlbWVudCBzb2Z0d2FyZSB0aGF0IGlzIHVzZWQgYXMgeW91clxuICAgKiBvcmdhbml6YXRpb24ncyBJZFAuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YURvY3VtZW50OiBTYW1sTWV0YWRhdGFEb2N1bWVudDtcbn1cblxuLyoqXG4gKiBBIFNBTUwgbWV0YWRhdGEgZG9jdW1lbnRcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhbWxNZXRhZGF0YURvY3VtZW50IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIFNBTUwgbWV0YWRhdGEgZG9jdW1lbnQgZnJvbSBhIFhNTCBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVhtbCh4bWw6IHN0cmluZyk6IFNhbWxNZXRhZGF0YURvY3VtZW50IHtcbiAgICByZXR1cm4geyB4bWwgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBTQU1MIG1ldGFkYXRhIGRvY3VtZW50IGZyb20gYSBYTUwgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShwYXRoOiBzdHJpbmcpOiBTYW1sTWV0YWRhdGFEb2N1bWVudCB7XG4gICAgcmV0dXJuIHsgeG1sOiBmcy5yZWFkRmlsZVN5bmMocGF0aCwgXCJ1dGYtOFwiKSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBYTUwgY29udGVudCBvZiB0aGUgbWV0YWRhdGEgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB4bWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIFNBTUwgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGNsYXNzIFNhbWxQcm92aWRlciBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJU2FtbFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBwcm92aWRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2FtbFByb3ZpZGVyQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBzYW1sUHJvdmlkZXJBcm46IHN0cmluZyxcbiAgKTogSVNhbWxQcm92aWRlciB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElTYW1sUHJvdmlkZXIge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNhbWxQcm92aWRlckFybiA9IHNhbWxQcm92aWRlckFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzYW1sUHJvdmlkZXJPdXRwdXRzID0ge1xuICAgICAgICBhcm46IHNhbWxQcm92aWRlckFybixcbiAgICAgIH07XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhbWxQcm92aWRlck91dHB1dHM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCwge30pO1xuICB9XG4gIHB1YmxpYyByZWFkb25seSBzYW1sUHJvdmlkZXJPdXRwdXRzOiBTYW1sUHJvdmlkZXJPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2FtbFByb3ZpZGVyT3V0cHV0cztcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogaWFtU2FtbFByb3ZpZGVyLklhbVNhbWxQcm92aWRlcjtcbiAgcHVibGljIHJlYWRvbmx5IHNhbWxQcm92aWRlckFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTYW1sUHJvdmlkZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMubmFtZSAmJlxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5uYW1lKSAmJlxuICAgICAgIS9eW1xcdys9LC5ALV17MSwxMjh9JC8udGVzdChwcm9wcy5uYW1lKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkludmFsaWQgU0FNTCBwcm92aWRlciBuYW1lLiBUaGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgY29uc2lzdGluZyBvZiB1cHBlciBhbmQgbG93ZXJjYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggbm8gc3BhY2VzLiBZb3UgY2FuIGFsc28gaW5jbHVkZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiBfKz0sLkAtLiBMZW5ndGggbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEyOCBjaGFyYWN0ZXJzLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGlhbVNhbWxQcm92aWRlci5JYW1TYW1sUHJvdmlkZXIodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuYW1lOlxuICAgICAgICBwcm9wcy5uYW1lID8/XG4gICAgICAgIHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IFwiXys9LC5ALVwiLFxuICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICB9KSxcbiAgICAgIHNhbWxNZXRhZGF0YURvY3VtZW50OiBwcm9wcy5tZXRhZGF0YURvY3VtZW50LnhtbCxcbiAgICB9KTtcblxuICAgIHRoaXMuc2FtbFByb3ZpZGVyQXJuID0gdGhpcy5yZXNvdXJjZS5hcm47XG4gICAgdGhpcy5zYW1sUHJvdmlkZXJPdXRwdXRzID0ge1xuICAgICAgYXJuOiB0aGlzLnNhbWxQcm92aWRlckFybixcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -41,5 +41,5 @@ class UnknownPrincipal {
|
|
|
41
41
|
}
|
|
42
42
|
exports.UnknownPrincipal = UnknownPrincipal;
|
|
43
43
|
_a = JSII_RTTI_SYMBOL_1;
|
|
44
|
-
UnknownPrincipal[_a] = { fqn: "terraconstructs.aws.iam.UnknownPrincipal", version: "0.0.
|
|
44
|
+
UnknownPrincipal[_a] = { fqn: "terraconstructs.aws.iam.UnknownPrincipal", version: "0.0.16" };
|
|
45
45
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5rbm93bi1wcmluY2lwYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2lhbS91bmtub3duLXByaW5jaXBhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFHQUFxRztBQUNyRyxpQ0FBb0M7QUFDcEMsMkNBQStEO0FBQy9ELDRDQUF3QztBQWtCeEM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEsZ0JBQWdCO0lBSzNCLFlBQVksS0FBNEI7UUFKeEIscUJBQWdCLEdBQVcsZ0JBQWdCLENBQUM7UUFLMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FDYixpQ0FBaUMsaUJBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksb0NBQW9DLENBQ2pHLENBQUM7SUFDSixDQUFDO0lBRU0sb0JBQW9CLENBQ3pCLFNBQTBCO1FBRTFCLE1BQU0sS0FBSyxHQUFHLG9CQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0RCx5REFBeUQ7UUFDekQsbUJBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FDdEMsMENBQTBDLElBQUksRUFBRSxDQUNqRCxDQUFDO1FBQ0Ysb0VBQW9FO1FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksNEJBQWUsRUFBRSxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVNLFdBQVcsQ0FBQyxTQUEwQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDN0QsQ0FBQzs7QUEvQkgsNENBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWlhbS9saWIvdW5rbm93bi1wcmluY2lwYWwudHNcbmltcG9ydCB7IEFubm90YXRpb25zIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5R3JvdXAsIElDb25zdHJ1Y3QsIE5vZGUgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vYXdzLXN0YWNrXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiLi9wb2xpY3ktc3RhdGVtZW50XCI7XG5pbXBvcnQge1xuICBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCxcbiAgSVByaW5jaXBhbCxcbiAgUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQsXG59IGZyb20gXCIuL3ByaW5jaXBhbHNcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBVbmtub3duUHJpbmNpcGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5rbm93blByaW5jaXBhbFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSB0aGUgcm9sZSBwcm94eSBpcyBmb3JcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlOiBJQ29uc3RydWN0O1xufVxuXG4vKipcbiAqIEEgcHJpbmNpcGFsIGZvciB1c2UgaW4gcmVzb3VyY2VzIHRoYXQgbmVlZCB0byBoYXZlIGEgcm9sZSBidXQgaXQncyB1bmtub3duXG4gKlxuICogU29tZSByZXNvdXJjZXMgaGF2ZSByb2xlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSB3aGljaCB0aGV5IGFzc3VtZSwgc3VjaCBhc1xuICogTGFtYmRhIEZ1bmN0aW9ucywgQ29kZUJ1aWxkIHByb2plY3RzLCBTdGVwRnVuY3Rpb25zIG1hY2hpbmVzLCBldGMuXG4gKlxuICogV2hlbiB0aG9zZSByZXNvdXJjZXMgYXJlIGltcG9ydGVkLCB0aGVpciBhY3R1YWwgcm9sZXMgYXJlIG5vdCBhbHdheXNcbiAqIGltcG9ydGVkIHdpdGggdGhlbS4gV2hlbiB0aGF0IGhhcHBlbnMsIHdlIHVzZSBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzXG4gKiBpbnN0ZWFkLCB3aGljaCB3aWxsIGFkZCB1c2VyIHdhcm5pbmdzIHdoZW4gc3RhdGVtZW50cyBhcmUgYXR0ZW1wdGVkIHRvIGJlXG4gKiBhZGRlZCB0byBpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFVua25vd25QcmluY2lwYWwgaW1wbGVtZW50cyBJUHJpbmNpcGFsIHtcbiAgcHVibGljIHJlYWRvbmx5IGFzc3VtZVJvbGVBY3Rpb246IHN0cmluZyA9IFwic3RzOkFzc3VtZVJvbGVcIjtcbiAgcHVibGljIHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBJUHJpbmNpcGFsO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBJQ29uc3RydWN0O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBVbmtub3duUHJpbmNpcGFsUHJvcHMpIHtcbiAgICB0aGlzLnJlc291cmNlID0gcHJvcHMucmVzb3VyY2U7XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBvbGljeUZyYWdtZW50KCk6IFByaW5jaXBhbFBvbGljeUZyYWdtZW50IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IGdldCBwb2xpY3kgZnJhZ21lbnQgb2YgJHtOb2RlLm9mKHRoaXMucmVzb3VyY2UpLnBhdGh9LCByZXNvdXJjZSBpbXBvcnRlZCB3aXRob3V0IGEgcm9sZWAsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICBzdGF0ZW1lbnQ6IFBvbGljeVN0YXRlbWVudCxcbiAgKTogQWRkVG9QcmluY2lwYWxQb2xpY3lSZXN1bHQge1xuICAgIGNvbnN0IHN0YWNrID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcy5yZXNvdXJjZSk7XG4gICAgY29uc3QgcmVwciA9IEpTT04uc3RyaW5naWZ5KHN0YWNrLnJlc29sdmUoc3RhdGVtZW50KSk7XG4gICAgLy8gXCJAYXdzLWNkay9hd3MtaWFtOnVua25vd25QcmluY2lwYWxBZGRTdGF0ZW1lbnRUb1JvbGVcIixcbiAgICBBbm5vdGF0aW9ucy5vZih0aGlzLnJlc291cmNlKS5hZGRXYXJuaW5nKFxuICAgICAgYEFkZCBzdGF0ZW1lbnQgdG8gdGhpcyByZXNvdXJjZSdzIHJvbGU6ICR7cmVwcn1gLFxuICAgICk7XG4gICAgLy8gUHJldGVuZCB3ZSBkaWQgdGhlIHdvcmsuIFRoZSBodW1hbiB3aWxsIGRvIGl0IGZvciB1cywgZXZlbnR1YWxseS5cbiAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogbmV3IERlcGVuZGVuY3lHcm91cCgpIH07XG4gIH1cblxuICBwdWJsaWMgYWRkVG9Qb2xpY3koc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpLnN0YXRlbWVudEFkZGVkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import * as iam from ".";
|
|
3
|
+
import { AwsConstructBase, AwsConstructProps } from "../aws-construct";
|
|
4
|
+
import { IGroup } from "./group";
|
|
5
|
+
import { IManagedPolicy } from "./managed-policy";
|
|
6
|
+
import { Policy } from "./policy";
|
|
7
|
+
import { PolicyStatement } from "./policy-statement";
|
|
8
|
+
import { AddToPrincipalPolicyResult, IPrincipal, PrincipalPolicyFragment } from "./principals";
|
|
9
|
+
/**
|
|
10
|
+
* Outputs which may be registered for output via the Grid.
|
|
11
|
+
*/
|
|
12
|
+
export interface UserOutputs {
|
|
13
|
+
readonly arn: string;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Represents an IAM user.
|
|
18
|
+
*/
|
|
19
|
+
export interface IUser extends iam.IIdentity {
|
|
20
|
+
/**
|
|
21
|
+
* strongly typed roleOutputs
|
|
22
|
+
*
|
|
23
|
+
* @attribute
|
|
24
|
+
*/
|
|
25
|
+
readonly userOutputs: UserOutputs;
|
|
26
|
+
/**
|
|
27
|
+
* The user's name.
|
|
28
|
+
*
|
|
29
|
+
* @attribute
|
|
30
|
+
*/
|
|
31
|
+
readonly userName: string;
|
|
32
|
+
/**
|
|
33
|
+
* The user's ARN.
|
|
34
|
+
*
|
|
35
|
+
* @attribute
|
|
36
|
+
*/
|
|
37
|
+
readonly userArn: string;
|
|
38
|
+
/**
|
|
39
|
+
* Adds this user to a group.
|
|
40
|
+
*/
|
|
41
|
+
addToGroup(group: IGroup): void;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Properties for defining an IAM user.
|
|
45
|
+
*/
|
|
46
|
+
export interface UserProps extends AwsConstructProps {
|
|
47
|
+
/**
|
|
48
|
+
* Groups to add this user to.
|
|
49
|
+
*
|
|
50
|
+
* @default - No groups.
|
|
51
|
+
*/
|
|
52
|
+
readonly groups?: IGroup[];
|
|
53
|
+
/**
|
|
54
|
+
* Managed policies to attach to this user.
|
|
55
|
+
*
|
|
56
|
+
* @default - No managed policies.
|
|
57
|
+
*/
|
|
58
|
+
readonly managedPolicies?: IManagedPolicy[];
|
|
59
|
+
/**
|
|
60
|
+
* The path for the user name.
|
|
61
|
+
*
|
|
62
|
+
* @default "/"
|
|
63
|
+
*/
|
|
64
|
+
readonly path?: string;
|
|
65
|
+
/**
|
|
66
|
+
* The managed policy to use as the permissions boundary.
|
|
67
|
+
*
|
|
68
|
+
* @default - No permissions boundary.
|
|
69
|
+
*/
|
|
70
|
+
readonly permissionsBoundary?: IManagedPolicy;
|
|
71
|
+
/**
|
|
72
|
+
* A name for the IAM user.
|
|
73
|
+
*
|
|
74
|
+
* @default - Generated by CloudFormation.
|
|
75
|
+
*/
|
|
76
|
+
readonly userName?: string;
|
|
77
|
+
/**
|
|
78
|
+
* Whether to create a login profile for the User
|
|
79
|
+
*
|
|
80
|
+
* @default - No console access.
|
|
81
|
+
*/
|
|
82
|
+
readonly createLoginProfile?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* The password for the user.
|
|
85
|
+
*
|
|
86
|
+
* @default - 20
|
|
87
|
+
*/
|
|
88
|
+
readonly passwordLength?: number;
|
|
89
|
+
/**
|
|
90
|
+
* If true, the user must reset the password upon first sign–in.
|
|
91
|
+
*
|
|
92
|
+
* @default false
|
|
93
|
+
*/
|
|
94
|
+
readonly passwordResetRequired?: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Attributes for importing an existing IAM user.
|
|
98
|
+
*/
|
|
99
|
+
export interface UserAttributes {
|
|
100
|
+
/**
|
|
101
|
+
* The ARN of the user.
|
|
102
|
+
*
|
|
103
|
+
* Format: arn:<partition>:iam::<account-id>:user/<user-name-with-path>
|
|
104
|
+
*/
|
|
105
|
+
readonly userArn: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Defines a new IAM user.
|
|
109
|
+
*/
|
|
110
|
+
export declare class User extends AwsConstructBase implements IUser {
|
|
111
|
+
/**
|
|
112
|
+
* Import an existing user given a username.
|
|
113
|
+
*/
|
|
114
|
+
static fromUserName(scope: Construct, id: string, userName: string): IUser;
|
|
115
|
+
/**
|
|
116
|
+
* Import an existing user given a user ARN.
|
|
117
|
+
*/
|
|
118
|
+
static fromUserArn(scope: Construct, id: string, userArn: string): IUser;
|
|
119
|
+
/**
|
|
120
|
+
* Import an existing user given user attributes.
|
|
121
|
+
*/
|
|
122
|
+
static fromUserAttributes(scope: Construct, id: string, attrs: UserAttributes): IUser;
|
|
123
|
+
readonly grantPrincipal: IPrincipal;
|
|
124
|
+
readonly principalAccount: string | undefined;
|
|
125
|
+
readonly assumeRoleAction: string;
|
|
126
|
+
get userOutputs(): UserOutputs;
|
|
127
|
+
get outputs(): Record<string, any>;
|
|
128
|
+
/**
|
|
129
|
+
* The IAM user's name.
|
|
130
|
+
* @attribute
|
|
131
|
+
*/
|
|
132
|
+
readonly userName: string;
|
|
133
|
+
/**
|
|
134
|
+
* The IAM user's ARN.
|
|
135
|
+
* @attribute
|
|
136
|
+
*/
|
|
137
|
+
readonly userArn: string;
|
|
138
|
+
/**
|
|
139
|
+
* The permissions boundary assigned to this user.
|
|
140
|
+
*/
|
|
141
|
+
readonly permissionsBoundary?: IManagedPolicy;
|
|
142
|
+
readonly policyFragment: PrincipalPolicyFragment;
|
|
143
|
+
private readonly groups;
|
|
144
|
+
private readonly managedPolicies;
|
|
145
|
+
private readonly attachedPolicies;
|
|
146
|
+
private defaultPolicy?;
|
|
147
|
+
private groupId;
|
|
148
|
+
constructor(scope: Construct, id: string, props?: UserProps);
|
|
149
|
+
/**
|
|
150
|
+
* Adds this user to the specified group.
|
|
151
|
+
*/
|
|
152
|
+
addToGroup(group: IGroup): void;
|
|
153
|
+
/**
|
|
154
|
+
* Attaches a managed policy to the user.
|
|
155
|
+
*/
|
|
156
|
+
addManagedPolicy(policy: IManagedPolicy): void;
|
|
157
|
+
/**
|
|
158
|
+
* Attaches an inline policy to the user.
|
|
159
|
+
*/
|
|
160
|
+
attachInlinePolicy(policy: Policy): void;
|
|
161
|
+
/**
|
|
162
|
+
* Adds an IAM statement to the default inline policy.
|
|
163
|
+
*
|
|
164
|
+
* If no default policy exists yet, one is created.
|
|
165
|
+
*/
|
|
166
|
+
addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult;
|
|
167
|
+
addToPolicy(statement: PolicyStatement): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Adds resource to the terraform JSON output.
|
|
170
|
+
*
|
|
171
|
+
* called by TerraformStack.prepareStack()
|
|
172
|
+
*/
|
|
173
|
+
toTerraform(): any;
|
|
174
|
+
}
|