@fjall/components-infrastructure 0.1.25 → 0.1.27

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.
@@ -0,0 +1,16 @@
1
+ import { Construct } from "constructs";
2
+ import { Group } from "../../resources/aws/iam/identityCenter/group";
3
+ export interface User {
4
+ email: string;
5
+ firstName: string;
6
+ lastName: string;
7
+ groups: string[];
8
+ }
9
+ interface IdentityCenterUserProps {
10
+ identityStoreId: string;
11
+ identityCenterGroups: Group[];
12
+ }
13
+ export declare class IdentityCenterUser extends Construct {
14
+ constructor(scope: Construct, id: string, props: IdentityCenterUserProps);
15
+ }
16
+ export {};
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdentityCenterUser = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const customResources = require("aws-cdk-lib/custom-resources");
6
+ const constructs_1 = require("constructs");
7
+ const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
8
+ const usersConfig_1 = require("../../utils/usersConfig");
9
+ const capitalizeString_1 = require("../../utils/capitalizeString");
10
+ class IdentityCenterUser extends constructs_1.Construct {
11
+ constructor(scope, id, props) {
12
+ super(scope, id);
13
+ const users = new usersConfig_1.default().getUsers();
14
+ const identityStoreId = props.identityStoreId;
15
+ const userCount = users.length;
16
+ for (let i = 0; i < userCount; i++) {
17
+ const user = users[i];
18
+ const givenName = (0, capitalizeString_1.capitalizeString)(user.firstName);
19
+ const familyName = (0, capitalizeString_1.capitalizeString)(user.lastName);
20
+ const userParams = {
21
+ IdentityStoreId: identityStoreId,
22
+ UserName: user.email,
23
+ DisplayName: `${givenName} ${familyName}`,
24
+ Name: {
25
+ FamilyName: user.lastName,
26
+ GivenName: user.firstName
27
+ },
28
+ Emails: [
29
+ {
30
+ Primary: true,
31
+ Value: user.email
32
+ }
33
+ ]
34
+ };
35
+ const createUser = new awsCustomResource_1.AwsCustomResource(this, `createUser${givenName}${familyName}`, {
36
+ functionName: "createUsers",
37
+ onCreate: {
38
+ service: "IdentityStore",
39
+ action: "createUser",
40
+ parameters: userParams,
41
+ physicalResourceId: customResources.PhysicalResourceId.of("createUsers")
42
+ },
43
+ onUpdate: {
44
+ service: "IdentityStore",
45
+ action: "updateUser",
46
+ parameters: userParams,
47
+ physicalResourceId: customResources.PhysicalResourceId.of("updateUsers")
48
+ },
49
+ resourceType: "Custom::IdentityCenterUsers"
50
+ });
51
+ new awsCustomResource_1.AwsCustomResource(this, `deleteUser${givenName}${familyName}`, {
52
+ functionName: "deleteUsers",
53
+ onDelete: {
54
+ service: "IdentityStore",
55
+ action: "deleteUser",
56
+ parameters: {
57
+ IdentityStoreId: identityStoreId,
58
+ UserId: createUser.getResponseField("UserId")
59
+ }
60
+ },
61
+ resourceType: "Custom::IdentityCenterUsers"
62
+ });
63
+ new aws_cdk_lib_1.CfnOutput(this, `UserId${givenName}${familyName}`, {
64
+ key: `UserId${givenName}${familyName}`,
65
+ value: createUser.getResponseField("UserId"),
66
+ exportName: `UserId${givenName}${familyName}`
67
+ });
68
+ // props.identityCenterGroups.forEach((identityCenterGroup))
69
+ user.groups.forEach((group) => {
70
+ const identityCenterGroup = props.identityCenterGroups.find((identityCenterGroup) => identityCenterGroup.displayName === group);
71
+ if (!identityCenterGroup) {
72
+ throw new Error(`Group ${group} does not exist in Identity Center Groups`);
73
+ }
74
+ const groupId = identityCenterGroup.attrGroupId;
75
+ const groupName = identityCenterGroup.displayName;
76
+ const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `createGroupMembership${givenName}${familyName}To${groupName}`, {
77
+ functionName: "createGroupMembership",
78
+ onCreate: {
79
+ service: "IdentityStore",
80
+ action: "createGroupMembership",
81
+ parameters: {
82
+ GroupId: groupId,
83
+ IdentityStoreId: identityStoreId,
84
+ MemberId: {
85
+ UserId: createUser.getResponseField("UserId")
86
+ }
87
+ },
88
+ physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${groupName}`)
89
+ },
90
+ onUpdate: {
91
+ service: "IdentityStore",
92
+ action: "createGroupMembership",
93
+ parameters: {
94
+ GroupId: groupId,
95
+ IdentityStoreId: identityStoreId,
96
+ MemberId: {
97
+ UserId: createUser.getResponseField("UserId")
98
+ }
99
+ },
100
+ physicalResourceId: customResources.PhysicalResourceId.of(`updateGroupMembership${groupName}`)
101
+ }
102
+ });
103
+ new awsCustomResource_1.AwsCustomResource(this, `deleteGroupMembership${givenName}${familyName}From${groupName}`, {
104
+ functionName: "deleteGroupMembership",
105
+ onDelete: {
106
+ service: "IdentityStore",
107
+ action: "deleteGroupMembership",
108
+ parameters: {
109
+ IdentityStoreId: identityStoreId,
110
+ MembershipId: groupMembershipId.getResponseField("MembershipId")
111
+ }
112
+ },
113
+ resourceType: "Custom::IdentityCenterUsers"
114
+ });
115
+ new aws_cdk_lib_1.CfnOutput(this, `GroupMembershipId${givenName}${familyName}${groupName}`, {
116
+ key: `GroupMembershipId${givenName}${familyName}${groupName}`,
117
+ value: groupMembershipId.getResponseField("MembershipId"),
118
+ exportName: `GroupMembershipId${givenName}${familyName}${groupName}`
119
+ });
120
+ });
121
+ }
122
+ }
123
+ }
124
+ exports.IdentityCenterUser = IdentityCenterUser;
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJVc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJVc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QyxnRUFBZ0U7QUFDaEUsMkNBQXVDO0FBQ3ZDLHVGQUFvRjtBQUNwRix5REFBa0Q7QUFFbEQsbUVBQWdFO0FBNEJoRSxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBQy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEtBQUssR0FBVyxJQUFJLHFCQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBRTlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQXlCO2dCQUN2QyxlQUFlLEVBQUUsZUFBZTtnQkFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNwQixXQUFXLEVBQUUsR0FBRyxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUN6QyxJQUFJLEVBQUU7b0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN6QixTQUFTLEVBQUUs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Q0FDRjtBQXZKRCxnREF1SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgVXNlcnNDb25maWcgZnJvbSBcIi4uLy4uL3V0aWxzL3VzZXJzQ29uZmlnXCI7XG5pbXBvcnQgeyBHcm91cCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9ncm91cFwiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZVN0cmluZyB9IGZyb20gXCIuLi8uLi91dGlscy9jYXBpdGFsaXplU3RyaW5nXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGZpcnN0TmFtZTogc3RyaW5nO1xuICBsYXN0TmFtZTogc3RyaW5nO1xuICBncm91cHM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgY3JlYXRlVXNlclBhcmFtZXRlcnMge1xuICBJZGVudGl0eVN0b3JlSWQ6IHN0cmluZztcbiAgVXNlck5hbWU6IHN0cmluZztcbiAgRGlzcGxheU5hbWU6IHN0cmluZztcbiAgTmFtZToge1xuICAgIEZhbWlseU5hbWU6IHN0cmluZztcbiAgICBHaXZlbk5hbWU6IHN0cmluZztcbiAgfTtcbiAgRW1haWxzOiB7XG4gICAgUHJpbWFyeTogYm9vbGVhbjtcbiAgICBWYWx1ZTogc3RyaW5nO1xuICB9W107XG59XG5cbmludGVyZmFjZSBJZGVudGl0eUNlbnRlclVzZXJQcm9wcyB7XG4gIGlkZW50aXR5U3RvcmVJZDogc3RyaW5nO1xuICBpZGVudGl0eUNlbnRlckdyb3VwczogR3JvdXBbXTtcbn1cblxuZXhwb3J0IGNsYXNzIElkZW50aXR5Q2VudGVyVXNlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJZGVudGl0eUNlbnRlclVzZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB1c2VyczogVXNlcltdID0gbmV3IFVzZXJzQ29uZmlnKCkuZ2V0VXNlcnMoKTtcbiAgICBjb25zdCBpZGVudGl0eVN0b3JlSWQgPSBwcm9wcy5pZGVudGl0eVN0b3JlSWQ7XG5cbiAgICBjb25zdCB1c2VyQ291bnQgPSB1c2Vycy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1c2VyQ291bnQ7IGkrKykge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJzW2ldO1xuICAgICAgY29uc3QgZ2l2ZW5OYW1lID0gY2FwaXRhbGl6ZVN0cmluZyh1c2VyLmZpcnN0TmFtZSk7XG4gICAgICBjb25zdCBmYW1pbHlOYW1lID0gY2FwaXRhbGl6ZVN0cmluZyh1c2VyLmxhc3ROYW1lKTtcbiAgICAgIGNvbnN0IHVzZXJQYXJhbXM6IGNyZWF0ZVVzZXJQYXJhbWV0ZXJzID0ge1xuICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgVXNlck5hbWU6IHVzZXIuZW1haWwsXG4gICAgICAgIERpc3BsYXlOYW1lOiBgJHtnaXZlbk5hbWV9ICR7ZmFtaWx5TmFtZX1gLFxuICAgICAgICBOYW1lOiB7XG4gICAgICAgICAgRmFtaWx5TmFtZTogdXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBHaXZlbk5hbWU6IHVzZXIuZmlyc3ROYW1lXG4gICAgICAgIH0sXG4gICAgICAgIEVtYWlsczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBWYWx1ZTogdXNlci5lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcblxuICAgICAgY29uc3QgY3JlYXRlVXNlciA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYGNyZWF0ZVVzZXIke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCxcbiAgICAgICAge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJjcmVhdGVVc2Vyc1wiLFxuICAgICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVVc2VyXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2NyZWF0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHVzZXJQYXJhbXMsXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJjcmVhdGVVc2Vyc1wiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcInVwZGF0ZVVzZXJcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHVzZXJQYXJhbXMsXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6XG4gICAgICAgICAgICAgIGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXCJ1cGRhdGVVc2Vyc1wiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBgZGVsZXRlVXNlciR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1gLCB7XG4gICAgICAgIGZ1bmN0aW9uTmFtZTogXCJkZWxldGVVc2Vyc1wiLFxuICAgICAgICBvbkRlbGV0ZToge1xuICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVVc2VyXCIsIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvSWRlbnRpdHlTdG9yZS5odG1sI2RlbGV0ZVVzZXItcHJvcGVydHlcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgIFVzZXJJZDogY3JlYXRlVXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcklkXCIpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCwge1xuICAgICAgICBrZXk6IGBVc2VySWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9YCxcbiAgICAgICAgdmFsdWU6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKSxcbiAgICAgICAgZXhwb3J0TmFtZTogYFVzZXJJZCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX1gXG4gICAgICB9KTtcblxuICAgICAgLy8gcHJvcHMuaWRlbnRpdHlDZW50ZXJHcm91cHMuZm9yRWFjaCgoaWRlbnRpdHlDZW50ZXJHcm91cCkpXG5cbiAgICAgIHVzZXIuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkZW50aXR5Q2VudGVyR3JvdXAgPSBwcm9wcy5pZGVudGl0eUNlbnRlckdyb3Vwcy5maW5kKFxuICAgICAgICAgIChpZGVudGl0eUNlbnRlckdyb3VwKSA9PiBpZGVudGl0eUNlbnRlckdyb3VwLmRpc3BsYXlOYW1lID09PSBncm91cFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghaWRlbnRpdHlDZW50ZXJHcm91cCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBHcm91cCAke2dyb3VwfSBkb2VzIG5vdCBleGlzdCBpbiBJZGVudGl0eSBDZW50ZXIgR3JvdXBzYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cElkID0gaWRlbnRpdHlDZW50ZXJHcm91cC5hdHRyR3JvdXBJZDtcbiAgICAgICAgY29uc3QgZ3JvdXBOYW1lID0gaWRlbnRpdHlDZW50ZXJHcm91cC5kaXNwbGF5TmFtZTtcblxuICAgICAgICBjb25zdCBncm91cE1lbWJlcnNoaXBJZCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9VG8ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IFwiSWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICBHcm91cElkOiBncm91cElkLFxuICAgICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICAgIE1lbWJlcklkOiB7XG4gICAgICAgICAgICAgICAgICBVc2VySWQ6IGNyZWF0ZVVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJJZFwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke2dyb3VwTmFtZX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgICAgICBzZXJ2aWNlOiBcIklkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgR3JvdXBJZDogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgICAgVXNlcklkOiBjcmVhdGVVc2VyLmdldFJlc3BvbnNlRmllbGQoXCJVc2VySWRcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgICBgdXBkYXRlR3JvdXBNZW1iZXJzaGlwJHtncm91cE5hbWV9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBkZWxldGVHcm91cE1lbWJlcnNoaXAke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9RnJvbSR7Z3JvdXBOYW1lfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBcImRlbGV0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICAgICAgc2VydmljZTogXCJJZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICAgIGFjdGlvbjogXCJkZWxldGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICAgIE1lbWJlcnNoaXBJZDogZ3JvdXBNZW1iZXJzaGlwSWQuZ2V0UmVzcG9uc2VGaWVsZChcIk1lbWJlcnNoaXBJZFwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6SWRlbnRpdHlDZW50ZXJVc2Vyc1wiXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIG5ldyBDZm5PdXRwdXQoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGBHcm91cE1lbWJlcnNoaXBJZCR7Z2l2ZW5OYW1lfSR7ZmFtaWx5TmFtZX0ke2dyb3VwTmFtZX1gLFxuICAgICAgICAgICAgdmFsdWU6IGdyb3VwTWVtYmVyc2hpcElkLmdldFJlc3BvbnNlRmllbGQoXCJNZW1iZXJzaGlwSWRcIiksXG4gICAgICAgICAgICBleHBvcnROYW1lOiBgR3JvdXBNZW1iZXJzaGlwSWQke2dpdmVuTmFtZX0ke2ZhbWlseU5hbWV9JHtncm91cE5hbWV9YFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -15,6 +15,7 @@ const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
15
15
  const aws_route53_1 = require("aws-cdk-lib/aws-route53");
16
16
  const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
17
17
  const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
18
+ const cfnOutput_1 = require("../utilities/cfnOutput");
18
19
  var Protocol;
19
20
  (function (Protocol) {
20
21
  Protocol[Protocol["HTTP"] = 0] = "HTTP";
@@ -209,6 +210,11 @@ class FargateCluster extends constructs_1.Construct {
209
210
  }
210
211
  });
211
212
  (0, tagResource_1.default)(this.loadBalancer, props.tags);
213
+ new cfnOutput_1.CfnOutput(this, `${props.clusterName}LoadBalancerDnsName`, {
214
+ key: `${props.clusterName}LoadBalancerDnsName`,
215
+ exportName: `${props.clusterName}LoadBalancerDnsName`,
216
+ value: this.loadBalancer.loadBalancerDnsName
217
+ });
212
218
  }
213
219
  addLoadBalancerListener(props) {
214
220
  if (!!this.certificate) {
@@ -264,4 +270,4 @@ class FargateCluster extends constructs_1.Construct {
264
270
  }
265
271
  }
266
272
  exports.default = FargateCluster;
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBVTZCO0FBQzdCLGlEQU02QjtBQUM3QiwyQ0FBdUM7QUFFdkMsNkNBQXdEO0FBQ3hELHVGQUlnRDtBQUNoRCw0REFBcUQ7QUFDckQsaURBUTZCO0FBQzdCLHVGQUtnRDtBQUNoRCxpREFBMEQ7QUFDMUQsdUVBQXdEO0FBQ3hELCtFQUc0QztBQUM1Qyx5REFLaUM7QUFDakMseUVBQXFFO0FBQ3JFLGlEQUFpRDtBQUdqRCxJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIsdUNBQUksQ0FBQTtJQUNKLHlDQUFLLENBQUE7QUFDUCxDQUFDLEVBSFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFHbkI7QUFFRCxJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsc0RBQTBELENBQUE7SUFDMUQsNERBQWdFLENBQUE7QUFDbEUsQ0FBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCO0FBZ0NELE1BQXFCLGNBQWUsU0FBUSxzQkFBUztJQW1CbkQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTFgsWUFBTyxHQUVYLEVBQUUsQ0FBQztRQUtMLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMs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QkFBaUIsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyx3QkFBYyxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUNWLEVBQVUsRUFDVixLQUEwQjtRQUUxQixPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUF3QjtnQkFDcEMsR0FBRyxLQUFLO2dCQUNSLEdBQUc7b0JBQ0QsR0FBRyxFQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQVcsSUFBSSxLQUFLLENBQUMsR0FBRztpQkFDNUM7YUFDRixDQUFDO1lBQ0YsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTdVRCxpQ0E2VUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBd3NMb2dEcml2ZXIsXG4gIENsdXN0ZXIgYXMgQ2RrQ2x1c3RlcixcbiAgQ29udGFpbmVySW1hZ2UsXG4gIEZhcmdhdGVTZXJ2aWNlLFxuICBGYXJnYXRlVGFza0RlZmluaXRpb24sXG4gIExpc3RlbmVyQ29uZmlnLFxuICBQcm9wYWdhdGVkVGFnU291cmNlLFxuICBSZXBvc2l0b3J5SW1hZ2UsXG4gIENvbnRhaW5lckRlZmluaXRpb25cbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25zLFxuICBJQ29ubmVjdGFibGUsXG4gIElWcGMsXG4gIFBvcnQsXG4gIFN1Ym5ldFR5cGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYXdzU3RhY2tcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBGbiwgU2VjcmV0VmFsdWUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uTGlzdGVuZXIsXG4gIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxuICBBcHBsaWNhdGlvblByb3RvY29sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHRhZ1Jlc291cmNlIGZyb20gXCIuLi8uLi8uLi91dGlscy90YWdSZXNvdXJjZVwiO1xuaW1wb3J0IHtcbiAgQ29tcG9zaXRlUHJpbmNpcGFsLFxuICBFZmZlY3QsXG4gIElNYW5hZ2VkUG9saWN5LFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBQcmVkZWZpbmVkTWV0cmljLFxuICBTY2FsYWJsZVRhcmdldCxcbiAgU2VydmljZU5hbWVzcGFjZSxcbiAgVGFyZ2V0VHJhY2tpbmdTY2FsaW5nUG9saWN5XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBwbGljYXRpb25hdXRvc2NhbGluZ1wiO1xuaW1wb3J0IHsgU2VjcmV0IGFzIEVjc1NlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQge1xuICBDZXJ0aWZpY2F0ZSxcbiAgQ2VydGlmaWNhdGVWYWxpZGF0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICBIb3N0ZWRab25lLFxuICBSZWNvcmRUYXJnZXQsXG4gIElIb3N0ZWRab25lXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgTG9hZEJhbGFuY2VyVGFyZ2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcblxuZXhwb3J0IGVudW0gUHJvdG9jb2wge1xuICBIVFRQLFxuICBIVFRQU1xufVxuXG5leHBvcnQgZW51bSBTY2FsaW5nVHlwZSB7XG4gIENQVSA9IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9DUFVfVVRJTElaQVRJT04sXG4gIE1FTU9SWSA9IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9NRU1PUllfVVRJTElaQVRJT05cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJTZWNyZXQge1xuICBba2V5OiBzdHJpbmddOiBTZWNyZXRWYWx1ZTtcbn1cblxudHlwZSBGYXJnYXRlQ2x1c3RlclByb3BzID0ge1xuICBlY3JSZXBvc2l0b3J5OiBSZXBvc2l0b3J5IHwgUmVwb3NpdG9yeUltYWdlO1xuICBjbHVzdGVyTmFtZTogc3RyaW5nO1xuICBjb250YWluZXJDb21tYW5kPzogc3RyaW5nW107XG4gIGNvbnRhaW5lckVudmlyb25tZW50PzogS2V5VmFsdWU7XG4gIGNvbnRhaW5lclNlY3JldHM/OiBDb250YWluZXJTZWNyZXQ7XG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG4gIGNwdT86IG51bWJlcjtcbiAgZGF0YWJhc2VDb25uZWN0aW9uOiBJQ29ubmVjdGFibGU7XG4gIHBhcmVudERvbWFpbj86IHN0cmluZzsgLy8gVE9ETzogQnJlYWsgb3V0IGEgSFRUUCBhbmQgSFRUUFMgc2VydmljZSB3aGVyZSB0aGlzIGlzIG9wdGlvbmFsXG4gIGRlc2lyZWRDb3VudD86IG51bWJlcjtcbiAgaGVhbHRoQ2hlY2tQYXRoPzogc3RyaW5nO1xuICBsaXN0ZW5lclBvcnQ/OiBudW1iZXI7XG4gIG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuICBwdWJsaWNMb2FkQmFsYW5jZXI/OiBib29sZWFuO1xuICBwcm90b2NvbDogUHJvdG9jb2w7XG4gIHNjYWxpbmdUeXBlPzogU2NhbGluZ1R5cGU7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHRhZ3M6IEtleVZhbHVlO1xuICB0YXNrUm9sZUlubGluZVBvbGljaWVzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBQb2xpY3lEb2N1bWVudDtcbiAgfTtcbiAgdGFza1JvbGVNYW5hZ2VkUG9saWNpZXM/OiBJTWFuYWdlZFBvbGljeVtdO1xuICB2cGM/OiBJVnBjO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmFyZ2F0ZUNsdXN0ZXIgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgY2x1c3RlcjogQ2RrQ2x1c3RlcjtcbiAgcHJpdmF0ZSBsb2FkQmFsYW5jZXI6IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyO1xuICBwcml2YXRlIGV4ZWN1dGlvblJvbGU6IFJvbGU7XG4gIHByaXZhdGUgdGFza0RlZmluaXRpb246IEZhcmdhdGVUYXNrRGVmaW5pdGlvbjtcbiAgcHJpdmF0ZSBjb250YWluZXJEZWZpbml0aW9uOiBDb250YWluZXJEZWZpbml0aW9uO1xuICBwcml2YXRlIGZhcmdhdGVTZXJ2aWNlOiBGYXJnYXRlU2VydmljZTtcbiAgcHJpdmF0ZSBzY2FsaW5nUG9saWN5OiBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3k7XG4gIHByaXZhdGUgaG9zdGVkWm9uZTogSUhvc3RlZFpvbmU7XG4gIHByaXZhdGUgY2VydGlmaWNhdGU6IENlcnRpZmljYXRlO1xuICBwcml2YXRlIGFSZWNvcmQ6IEFSZWNvcmQ7XG4gIHByaXZhdGUgbG9hZEJhbGFuY2VyTGlzdGVuZXI6IEFwcGxpY2F0aW9uTGlzdGVuZXI7XG5cbiAgcHJpdmF0ZSBzZWNyZXRzOiB7XG4gICAgW2tleTogc3RyaW5nXTogRWNzU2VjcmV0O1xuICB9ID0ge307XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hZGRDbHVzdGVyKHByb3BzKTtcbiAgICB0aGlzLmFkZFNlY3JldHMocHJvcHMpO1xuICAgIHRoaXMuYWRkRXhlY3V0aW9uUm9sZShwcm9wcyk7XG4gICAgdGhpcy5hZGRUYXNrRGVmaW5pdGlvbihwcm9wcyk7XG4gICAgdGhpcy5hZGRDb250YWluZXJEZWZpbml0aW9uKHByb3BzKTtcbiAgICB0aGlzLmFkZEZhcmdhdGVTZXJ2aWNlKHByb3BzKTtcbiAgICB0aGlzLmFkZExvYWRCYWxhbmNlcihwcm9wcyk7XG5cbiAgICBpZiAoISFwcm9wcy5wYXJlbnREb21haW4pIHRoaXMuYWRkSG9zdGVkWm9uZShwcm9wcyk7XG5cbiAgICB0aGlzLmFkZExvYWRCYWxhbmNlckxpc3RlbmVyKHByb3BzKTtcbiAgICB0aGlzLnJlZ2lzdGVyTG9hZEJhbGFuY2VyVGFyZ2V0cyhwcm9wcyk7XG5cbiAgICAvL3RvZG86IGZpeCBjb25uZWN0aW9ucyBub3Qgd29ya2luZyBhdXRvbWF0aWNhbGx5XG4gICAgaWYgKHByb3BzLmRhdGFiYXNlQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5mYXJnYXRlU2VydmljZS5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgICBwcm9wcy5kYXRhYmFzZUNvbm5lY3Rpb24sXG4gICAgICAgIFBvcnQuUE9TVEdSRVNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2x1c3Rlcihwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuY2x1c3RlciA9IG5ldyBDZGtDbHVzdGVyKHRoaXMsIGAke3Byb3BzLmNsdXN0ZXJOYW1lfWAsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgY2x1c3Rlck5hbWU6IHByb3BzLmNsdXN0ZXJOYW1lLFxuICAgICAgY29udGFpbmVySW5zaWdodHM6IHRydWUsXG4gICAgICBlbmFibGVGYXJnYXRlQ2FwYWNpdHlQcm92aWRlcnM6IHRydWVcbiAgICB9KTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmNsdXN0ZXIsIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkU2VjcmV0cyhwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIC8vIENvbnRhaW5lciBTZWNyZXRzXG4gICAgY29uc3QgY29udGFpbmVyU2VjcmV0ID0gU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuY2x1c3Rlck5hbWV9U2VjcmV0YCxcbiAgICAgIGAvJHtwcm9wcy5jbHVzdGVyTmFtZX0vJHtwcm9wcy5zZXJ2aWNlTmFtZX1gXG4gICAgKTtcblxuICAgIGZvciAoY29uc3Qgc2VjcmV0RmllbGQgaW4gcHJvcHMuY29udGFpbmVyU2VjcmV0cykge1xuICAgICAgdGhpcy5zZWNyZXRzW3NlY3JldEZpZWxkXSA9IEVjc1NlY3JldC5mcm9tU2VjcmV0c01hbmFnZXIoXG4gICAgICAgIGNvbnRhaW5lclNlY3JldCxcbiAgICAgICAgc2VjcmV0RmllbGRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXhlY3V0aW9uUm9sZShwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke3Byb3BzLnNlcnZpY2VOYW1lfUV4ZWN1dGlvblJvbGVgLCB7XG4gICAgICByb2xlTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9RXhlY3V0aW9uUm9sZWAsXG4gICAgICBkZXNjcmlwdGlvbjogYCR7cHJvcHMuc2VydmljZU5hbWV9IEV4ZWN1dGlvbiBSb2xlYCxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICB7XG4gICAgICAgICAgbWFuYWdlZFBvbGljeUFybjpcbiAgICAgICAgICAgIFwiYXJuOmF3czppYW06OmF3czpwb2xpY3kvc2VydmljZS1yb2xlL0FtYXpvbkVDU1Rhc2tFeGVjdXRpb25Sb2xlUG9saWN5XCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFtcInJlYWRTZWNyZXRzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZVwiLFxuICAgICAgICAgICAgICAgIFwic2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXRcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0gLy8gVE9ETzogU2V0IHRoaXMgdG8gdGhlIHNlY3JldCBBUk5cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wiZGVjcnlwdFNlY3JldHNcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcImttczpEZWNyeXB0XCJdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0gLy8gVE9ETzogU2V0IHRoaXMgdG8gdGhlIEtNUyBBcm5cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wiZWNzRXhlY3V0ZUNvbW1hbmRcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZUNvbnRyb2xDaGFubmVsXCIsXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpDcmVhdGVEYXRhQ2hhbm5lbFwiLFxuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6T3BlbkNvbnRyb2xDaGFubmVsXCIsXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpPcGVuRGF0YUNoYW5uZWxcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICBhc3N1bWVkQnk6IG5ldyBDb21wb3NpdGVQcmluY2lwYWwoXG4gICAgICAgIG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiZWNzLXRhc2tzLmFtYXpvbmF3cy5jb21cIilcbiAgICAgIClcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFRhc2tEZWZpbml0aW9uKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBGYXJnYXRlVGFza0RlZmluaXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9VGFza0RlZmluaXRpb25gLFxuICAgICAge1xuICAgICAgICBjcHU6IHByb3BzLmNwdSB8fCAyNTYsXG4gICAgICAgIGV4ZWN1dGlvblJvbGU6IHRoaXMuZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgdGFza1JvbGU6IG5ldyBSb2xlKHRoaXMsIGAke3Byb3BzLnNlcnZpY2VOYW1lfVRhc2tSb2xlYCwge1xuICAgICAgICAgIHJvbGVOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXNrUm9sZWAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGAke3Byb3BzLnNlcnZpY2VOYW1lfSBUYXNrIFJvbGVgLFxuICAgICAgICAgIGlubGluZVBvbGljaWVzOiBwcm9wcy50YXNrUm9sZUlubGluZVBvbGljaWVzLFxuICAgICAgICAgIG1hbmFnZWRQb2xpY2llczogcHJvcHMudGFza1JvbGVNYW5hZ2VkUG9saWNpZXMsXG4gICAgICAgICAgYXNzdW1lZEJ5OiBuZXcgQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICAgICAgbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJlY3MtdGFza3MuYW1hem9uYXdzLmNvbVwiKVxuICAgICAgICAgIClcbiAgICAgICAgfSksXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBwcm9wcy5tZW1vcnlMaW1pdE1pQiB8fCA1MTJcbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMudGFza0RlZmluaXRpb24sIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkQ29udGFpbmVyRGVmaW5pdGlvbihwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9Q29udGFpbmVyRGVmaW5pdGlvbmAsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlKHByb3BzKSxcbiAgICAgICAgY29udGFpbmVyTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgLi4ucHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnRcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWFuZDogcHJvcHMuY29udGFpbmVyQ29tbWFuZCxcbiAgICAgICAgc2VjcmV0czoge1xuICAgICAgICAgIC4uLnRoaXMuc2VjcmV0c1xuICAgICAgICB9LFxuICAgICAgICAvL3RvZG86IHByb3ZpZGUgaGVhbHRoIGNoZWNrIG9wdGlvbnNcbiAgICAgICAgLy8gaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgLy8gICBjb21tYW5kOiBbXG4gICAgICAgIC8vICAgICBcIkNNRC1TSEVMTFwiLFxuICAgICAgICAvLyAgICAgYHRpbWVvdXQgMTBzIC9iaW4vc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS8ke3Byb3BzLmNvbnRhaW5lclBvcnR9JyB8fCBleGl0IDFgXG4gICAgICAgIC8vICAgXVxuICAgICAgICAvLyB9LFxuICAgICAgICBsb2dnaW5nOiBuZXcgQXdzTG9nRHJpdmVyKHtcbiAgICAgICAgICBzdHJlYW1QcmVmaXg6IGAvZWNzLyR7cHJvcHMuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgICBsb2dSZXRlbnRpb246IDE0XG4gICAgICAgIH0pLFxuICAgICAgICBwb3J0TWFwcGluZ3M6IHByb3BzLmNvbnRhaW5lclBvcnRcbiAgICAgICAgICA/IFt7IGNvbnRhaW5lclBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQgfV1cbiAgICAgICAgICA6IFt7IGNvbnRhaW5lclBvcnQ6IDgwIH1dXG4gICAgICB9XG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmNvbnRhaW5lckRlZmluaXRpb24sIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkRmFyZ2F0ZVNlcnZpY2UocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmZhcmdhdGVTZXJ2aWNlID0gbmV3IEZhcmdhdGVTZXJ2aWNlKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLnNlcnZpY2VOYW1lfUZhcmdhdGVTZXJ2aWNlYCxcbiAgICAgIHtcbiAgICAgICAgY2lyY3VpdEJyZWFrZXI6IHsgcm9sbGJhY2s6IHRydWUgfSxcbiAgICAgICAgY2x1c3RlcjogdGhpcy5jbHVzdGVyLFxuICAgICAgICBkZXNpcmVkQ291bnQ6IDIsXG4gICAgICAgIGVuYWJsZUVDU01hbmFnZWRUYWdzOiB0cnVlLFxuICAgICAgICBlbmFibGVFeGVjdXRlQ29tbWFuZDogdHJ1ZSxcbiAgICAgICAgcHJvcGFnYXRlVGFnczogUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgICAgICBzZXJ2aWNlTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb25cbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuZmFyZ2F0ZVNlcnZpY2UsIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkU2NhbGluZ1BvbGljeShwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuc2NhbGluZ1BvbGljeSA9IG5ldyBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9U2NhbGluZ1BvbGljeWAsXG4gICAgICB7XG4gICAgICAgIHBvbGljeU5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfVNjYWxpbmdQb2xpY3lgLFxuICAgICAgICBzY2FsaW5nVGFyZ2V0OiBuZXcgU2NhbGFibGVUYXJnZXQoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1zY2FsYWJsZVRhcmdldGAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWF4Q2FwYWNpdHk6IDEwLFxuICAgICAgICAgICAgbWluQ2FwYWNpdHk6IDIsXG4gICAgICAgICAgICByZXNvdXJjZUlkOiBgc2VydmljZS8ke3RoaXMuY2x1c3Rlci5jbHVzdGVyTmFtZX0vJHt0aGlzLmZhcmdhdGVTZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgICBzY2FsYWJsZURpbWVuc2lvbjogXCJlY3M6c2VydmljZTpEZXNpcmVkQ291bnRcIixcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lc3BhY2U6IFNlcnZpY2VOYW1lc3BhY2UuRUNTXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICB0YXJnZXRWYWx1ZTogNTAsXG4gICAgICAgIHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBzY2FsZUluQ29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBwcmVkZWZpbmVkTWV0cmljOlxuICAgICAgICAgIHByb3BzLnNjYWxpbmdUeXBlID09IFNjYWxpbmdUeXBlLk1FTU9SWVxuICAgICAgICAgICAgPyBQcmVkZWZpbmVkTWV0cmljLkVDU19TRVJWSUNFX0FWRVJBR0VfTUVNT1JZX1VUSUxJWkFUSU9OXG4gICAgICAgICAgICA6IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9DUFVfVVRJTElaQVRJT05cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmVnaXN0ZXJMb2FkQmFsYW5jZXJUYXJnZXRzKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5mYXJnYXRlU2VydmljZS5yZWdpc3RlckxvYWRCYWxhbmNlclRhcmdldHMoe1xuICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5jb250YWluZXJEZWZpbml0aW9uLmNvbnRhaW5lck5hbWUsXG4gICAgICBjb250YWluZXJQb3J0OiB0aGlzLmNvbnRhaW5lckRlZmluaXRpb24uY29udGFpbmVyUG9ydCxcbiAgICAgIG5ld1RhcmdldEdyb3VwSWQ6IGAke3Byb3BzLnNlcnZpY2VOYW1lfVRhcmdldEdyb3VwYCxcbiAgICAgIGxpc3RlbmVyOiBMaXN0ZW5lckNvbmZpZy5hcHBsaWNhdGlvbkxpc3RlbmVyKHRoaXMubG9hZEJhbGFuY2VyTGlzdGVuZXIsIHtcbiAgICAgICAgcG9ydDogcHJvcHMuY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IEFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygxMjApLFxuICAgICAgICAgIHBhdGg6IHByb3BzLmhlYWx0aENoZWNrUGF0aCB8fCBcIi9cIixcbiAgICAgICAgICBwb3J0OiBwcm9wcy5jb250YWluZXJQb3J0ID8gYCR7cHJvcHMuY29udGFpbmVyUG9ydH1gIDogXCJ0cmFmZmljLXBvcnRcIixcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDEwKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgYWRkTG9hZEJhbGFuY2VyKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5sb2FkQmFsYW5jZXIgPSBuZXcgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuY2x1c3Rlck5hbWV9TG9hZEJhbGFuY2VyYCxcbiAgICAgIHtcbiAgICAgICAgdnBjOiB0aGlzLmNsdXN0ZXIudnBjLFxuICAgICAgICBpbnRlcm5ldEZhY2luZzogdHJ1ZSxcbiAgICAgICAgbG9hZEJhbGFuY2VyTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9TG9hZEJhbGFuY2VyYCxcbiAgICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMubG9hZEJhbGFuY2VyLCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIGFkZExvYWRCYWxhbmNlckxpc3RlbmVyKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgaWYgKCEhdGhpcy5jZXJ0aWZpY2F0ZSkge1xuICAgICAgdGhpcy5sb2FkQmFsYW5jZXJMaXN0ZW5lciA9IHRoaXMubG9hZEJhbGFuY2VyLmFkZExpc3RlbmVyKFxuICAgICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1MaXN0ZW5lcmAsXG4gICAgICAgIHtcbiAgICAgICAgICBwb3J0OiBwcm9wcy5wcm90b2NvbCA9PSBQcm90b2NvbC5IVFRQID8gODAgOiA0NDMsXG4gICAgICAgICAgY2VydGlmaWNhdGVzOiBbdGhpcy5jZXJ0aWZpY2F0ZV1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkQmFsYW5jZXJMaXN0ZW5lciA9IHRoaXMubG9hZEJhbGFuY2VyLmFkZExpc3RlbmVyKFxuICAgICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1MaXN0ZW5lcmAsXG4gICAgICAgIHtcbiAgICAgICAgICBwb3J0OiBwcm9wcy5wcm90b2NvbCA9PSBQcm90b2NvbC5IVFRQID8gODAgOiA0NDNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0YWdSZXNvdXJjZSh0aGlzLmxvYWRCYWxhbmNlckxpc3RlbmVyLCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIGFkZEhvc3RlZFpvbmUocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICBpZiAoIXByb3BzLnBhcmVudERvbWFpbikgcmV0dXJuO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lID0gSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXModGhpcywgXCJob3N0ZWRab25lXCIsIHtcbiAgICAgIGhvc3RlZFpvbmVJZDogRm4uaW1wb3J0VmFsdWUoXG4gICAgICAgIGAke3Byb3BzLnBhcmVudERvbWFpbi5zcGxpdChcIi5cIikuam9pbihcIlwiKX1Ib3N0ZWRab25lSWRgXG4gICAgICApLFxuICAgICAgem9uZU5hbWU6IHByb3BzLnBhcmVudERvbWFpblxuICAgIH0pO1xuXG4gICAgdGhpcy5jZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1DZXJ0aWZpY2F0ZWAsXG4gICAgICB7XG4gICAgICAgIGRvbWFpbk5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfS4ke3Byb3BzLmNsdXN0ZXJOYW1lfS4ke3Byb3BzLnBhcmVudERvbWFpbn1gLFxuICAgICAgICB2YWxpZGF0aW9uOiBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyh0aGlzLmhvc3RlZFpvbmUpXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuYVJlY29yZCA9IG5ldyBBUmVjb3JkKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLnNlcnZpY2VOYW1lfS4ke3Byb3BzLmNsdXN0ZXJOYW1lfS4ke3Byb3BzLnBhcmVudERvbWFpbn1BUmVjb3JkYCxcbiAgICAgIHtcbiAgICAgICAgcmVjb3JkTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9LiR7cHJvcHMuY2x1c3Rlck5hbWV9LiR7cHJvcHMucGFyZW50RG9tYWlufWAsXG4gICAgICAgIHpvbmU6IHRoaXMuaG9zdGVkWm9uZSxcbiAgICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbUFsaWFzKFxuICAgICAgICAgIG5ldyBMb2FkQmFsYW5jZXJUYXJnZXQodGhpcy5sb2FkQmFsYW5jZXIpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0SW1hZ2UocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpOiBDb250YWluZXJJbWFnZSB7XG4gICAgaWYgKCFwcm9wcy5lY3JSZXBvc2l0b3J5KVxuICAgICAgcmV0dXJuIENvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShcImFtYXpvbi9hbWF6b24tZWNzLXNhbXBsZVwiKTtcbiAgICBpZiAocHJvcHMuZWNyUmVwb3NpdG9yeSBpbnN0YW5jZW9mIENvbnRhaW5lckltYWdlKVxuICAgICAgcmV0dXJuIHByb3BzLmVjclJlcG9zaXRvcnk7XG4gICAgaWYgKHByb3BzLmVjclJlcG9zaXRvcnkgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KSB7XG4gICAgICByZXR1cm4gQ29udGFpbmVySW1hZ2UuZnJvbUVjclJlcG9zaXRvcnkocHJvcHMuZWNyUmVwb3NpdG9yeSwgXCJsYXRlc3RcIik7XG4gICAgfVxuICAgIHJldHVybiBDb250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIik7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wc1xuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogKHNiLmdldE5ldHdvcmsoKSBhcyBJVnBjKSB8fCBwcm9wcy52cGNcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhzYi5nZXRTdGFjaygpLCBpZCwgbmV3UHJvcHMpO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBVTZCO0FBQzdCLGlEQU02QjtBQUM3QiwyQ0FBdUM7QUFFdkMsNkNBQXdEO0FBQ3hELHVGQUlnRDtBQUNoRCw0REFBcUQ7QUFDckQsaURBUTZCO0FBQzdCLHVGQUtnRDtBQUNoRCxpREFBMEQ7QUFDMUQsdUVBQXdEO0FBQ3hELCtFQUc0QztBQUM1Qyx5REFLaUM7QUFDakMseUVBQXFFO0FBQ3JFLGlEQUFpRDtBQUVqRCxzREFBbUQ7QUFFbkQsSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2xCLHVDQUFJLENBQUE7SUFDSix5Q0FBSyxDQUFBO0FBQ1AsQ0FBQyxFQUhXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBR25CO0FBRUQsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHNEQUEwRCxDQUFBO0lBQzFELDREQUFnRSxDQUFBO0FBQ2xFLENBQUMsRUFIVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQUd0QjtBQWdDRCxNQUFxQixjQUFlLFNBQVEsc0JBQVM7SUFtQm5ELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUxYLFlBQU8sR0FFWCxFQUFFLENBQUM7UUFLTCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFD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QyxLQUEwQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDdEIsT0FBTyx3QkFBYyxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2pFLElBQUksS0FBSyxDQUFDLGFBQWEsWUFBWSx3QkFBYztZQUMvQyxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDN0IsSUFBSSxLQUFLLENBQUMsYUFBYSxZQUFZLG9CQUFVLEVBQUU7WUFDN0MsT0FBTyx3QkFBYyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7UUFDRCxPQUFPLHdCQUFjLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQ1YsRUFBVSxFQUNWLEtBQTBCO1FBRTFCLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsTUFBTSxRQUFRLEdBQXdCO2dCQUNwQyxHQUFHLEtBQUs7Z0JBQ1IsR0FBRztvQkFDRCxHQUFHLEVBQUcsRUFBRSxDQUFDLFVBQVUsRUFBVyxJQUFJLEtBQUssQ0FBQyxHQUFHO2lCQUM1QzthQUNGLENBQUM7WUFDRixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBblZELGlDQW1WQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF3c0xvZ0RyaXZlcixcbiAgQ2x1c3RlciBhcyBDZGtDbHVzdGVyLFxuICBDb250YWluZXJJbWFnZSxcbiAgRmFyZ2F0ZVNlcnZpY2UsXG4gIEZhcmdhdGVUYXNrRGVmaW5pdGlvbixcbiAgTGlzdGVuZXJDb25maWcsXG4gIFByb3BhZ2F0ZWRUYWdTb3VyY2UsXG4gIFJlcG9zaXRvcnlJbWFnZSxcbiAgQ29udGFpbmVyRGVmaW5pdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbnMsXG4gIElDb25uZWN0YWJsZSxcbiAgSVZwYyxcbiAgUG9ydCxcbiAgU3VibmV0VHlwZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9hd3NTdGFja1wiO1xuaW1wb3J0IHsgRHVyYXRpb24sIEZuLCBTZWNyZXRWYWx1ZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25MaXN0ZW5lcixcbiAgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIsXG4gIEFwcGxpY2F0aW9uUHJvdG9jb2xcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQgdGFnUmVzb3VyY2UgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3RhZ1Jlc291cmNlXCI7XG5pbXBvcnQge1xuICBDb21wb3NpdGVQcmluY2lwYWwsXG4gIEVmZmVjdCxcbiAgSU1hbmFnZWRQb2xpY3ksXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIFJvbGUsXG4gIFNlcnZpY2VQcmluY2lwYWxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIFByZWRlZmluZWRNZXRyaWMsXG4gIFNjYWxhYmxlVGFyZ2V0LFxuICBTZXJ2aWNlTmFtZXNwYWNlLFxuICBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3lcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nXCI7XG5pbXBvcnQgeyBTZWNyZXQgYXMgRWNzU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IFNlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7XG4gIENlcnRpZmljYXRlLFxuICBDZXJ0aWZpY2F0ZVZhbGlkYXRpb25cbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIEFSZWNvcmQsXG4gIEhvc3RlZFpvbmUsXG4gIFJlY29yZFRhcmdldCxcbiAgSUhvc3RlZFpvbmVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBMb2FkQmFsYW5jZXJUYXJnZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNyXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jZm5PdXRwdXRcIjtcblxuZXhwb3J0IGVudW0gUHJvdG9jb2wge1xuICBIVFRQLFxuICBIVFRQU1xufVxuXG5leHBvcnQgZW51bSBTY2FsaW5nVHlwZSB7XG4gIENQVSA9IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9DUFVfVVRJTElaQVRJT04sXG4gIE1FTU9SWSA9IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9NRU1PUllfVVRJTElaQVRJT05cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJTZWNyZXQge1xuICBba2V5OiBzdHJpbmddOiBTZWNyZXRWYWx1ZTtcbn1cblxudHlwZSBGYXJnYXRlQ2x1c3RlclByb3BzID0ge1xuICBlY3JSZXBvc2l0b3J5OiBSZXBvc2l0b3J5IHwgUmVwb3NpdG9yeUltYWdlO1xuICBjbHVzdGVyTmFtZTogc3RyaW5nO1xuICBjb250YWluZXJDb21tYW5kPzogc3RyaW5nW107XG4gIGNvbnRhaW5lckVudmlyb25tZW50PzogS2V5VmFsdWU7XG4gIGNvbnRhaW5lclNlY3JldHM/OiBDb250YWluZXJTZWNyZXQ7XG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG4gIGNwdT86IG51bWJlcjtcbiAgZGF0YWJhc2VDb25uZWN0aW9uOiBJQ29ubmVjdGFibGU7XG4gIHBhcmVudERvbWFpbj86IHN0cmluZzsgLy8gVE9ETzogQnJlYWsgb3V0IGEgSFRUUCBhbmQgSFRUUFMgc2VydmljZSB3aGVyZSB0aGlzIGlzIG9wdGlvbmFsXG4gIGRlc2lyZWRDb3VudD86IG51bWJlcjtcbiAgaGVhbHRoQ2hlY2tQYXRoPzogc3RyaW5nO1xuICBsaXN0ZW5lclBvcnQ/OiBudW1iZXI7XG4gIG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuICBwdWJsaWNMb2FkQmFsYW5jZXI/OiBib29sZWFuO1xuICBwcm90b2NvbDogUHJvdG9jb2w7XG4gIHNjYWxpbmdUeXBlPzogU2NhbGluZ1R5cGU7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHRhZ3M6IEtleVZhbHVlO1xuICB0YXNrUm9sZUlubGluZVBvbGljaWVzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBQb2xpY3lEb2N1bWVudDtcbiAgfTtcbiAgdGFza1JvbGVNYW5hZ2VkUG9saWNpZXM/OiBJTWFuYWdlZFBvbGljeVtdO1xuICB2cGM/OiBJVnBjO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmFyZ2F0ZUNsdXN0ZXIgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgY2x1c3RlcjogQ2RrQ2x1c3RlcjtcbiAgcHJpdmF0ZSBsb2FkQmFsYW5jZXI6IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyO1xuICBwcml2YXRlIGV4ZWN1dGlvblJvbGU6IFJvbGU7XG4gIHByaXZhdGUgdGFza0RlZmluaXRpb246IEZhcmdhdGVUYXNrRGVmaW5pdGlvbjtcbiAgcHJpdmF0ZSBjb250YWluZXJEZWZpbml0aW9uOiBDb250YWluZXJEZWZpbml0aW9uO1xuICBwcml2YXRlIGZhcmdhdGVTZXJ2aWNlOiBGYXJnYXRlU2VydmljZTtcbiAgcHJpdmF0ZSBzY2FsaW5nUG9saWN5OiBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3k7XG4gIHByaXZhdGUgaG9zdGVkWm9uZTogSUhvc3RlZFpvbmU7XG4gIHByaXZhdGUgY2VydGlmaWNhdGU6IENlcnRpZmljYXRlO1xuICBwcml2YXRlIGFSZWNvcmQ6IEFSZWNvcmQ7XG4gIHByaXZhdGUgbG9hZEJhbGFuY2VyTGlzdGVuZXI6IEFwcGxpY2F0aW9uTGlzdGVuZXI7XG5cbiAgcHJpdmF0ZSBzZWNyZXRzOiB7XG4gICAgW2tleTogc3RyaW5nXTogRWNzU2VjcmV0O1xuICB9ID0ge307XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hZGRDbHVzdGVyKHByb3BzKTtcbiAgICB0aGlzLmFkZFNlY3JldHMocHJvcHMpO1xuICAgIHRoaXMuYWRkRXhlY3V0aW9uUm9sZShwcm9wcyk7XG4gICAgdGhpcy5hZGRUYXNrRGVmaW5pdGlvbihwcm9wcyk7XG4gICAgdGhpcy5hZGRDb250YWluZXJEZWZpbml0aW9uKHByb3BzKTtcbiAgICB0aGlzLmFkZEZhcmdhdGVTZXJ2aWNlKHByb3BzKTtcbiAgICB0aGlzLmFkZExvYWRCYWxhbmNlcihwcm9wcyk7XG5cbiAgICBpZiAoISFwcm9wcy5wYXJlbnREb21haW4pIHRoaXMuYWRkSG9zdGVkWm9uZShwcm9wcyk7XG5cbiAgICB0aGlzLmFkZExvYWRCYWxhbmNlckxpc3RlbmVyKHByb3BzKTtcbiAgICB0aGlzLnJlZ2lzdGVyTG9hZEJhbGFuY2VyVGFyZ2V0cyhwcm9wcyk7XG5cbiAgICAvL3RvZG86IGZpeCBjb25uZWN0aW9ucyBub3Qgd29ya2luZyBhdXRvbWF0aWNhbGx5XG4gICAgaWYgKHByb3BzLmRhdGFiYXNlQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5mYXJnYXRlU2VydmljZS5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgICBwcm9wcy5kYXRhYmFzZUNvbm5lY3Rpb24sXG4gICAgICAgIFBvcnQuUE9TVEdSRVNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2x1c3Rlcihwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuY2x1c3RlciA9IG5ldyBDZGtDbHVzdGVyKHRoaXMsIGAke3Byb3BzLmNsdXN0ZXJOYW1lfWAsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgY2x1c3Rlck5hbWU6IHByb3BzLmNsdXN0ZXJOYW1lLFxuICAgICAgY29udGFpbmVySW5zaWdodHM6IHRydWUsXG4gICAgICBlbmFibGVGYXJnYXRlQ2FwYWNpdHlQcm92aWRlcnM6IHRydWVcbiAgICB9KTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmNsdXN0ZXIsIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkU2VjcmV0cyhwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIC8vIENvbnRhaW5lciBTZWNyZXRzXG4gICAgY29uc3QgY29udGFpbmVyU2VjcmV0ID0gU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuY2x1c3Rlck5hbWV9U2VjcmV0YCxcbiAgICAgIGAvJHtwcm9wcy5jbHVzdGVyTmFtZX0vJHtwcm9wcy5zZXJ2aWNlTmFtZX1gXG4gICAgKTtcblxuICAgIGZvciAoY29uc3Qgc2VjcmV0RmllbGQgaW4gcHJvcHMuY29udGFpbmVyU2VjcmV0cykge1xuICAgICAgdGhpcy5zZWNyZXRzW3NlY3JldEZpZWxkXSA9IEVjc1NlY3JldC5mcm9tU2VjcmV0c01hbmFnZXIoXG4gICAgICAgIGNvbnRhaW5lclNlY3JldCxcbiAgICAgICAgc2VjcmV0RmllbGRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXhlY3V0aW9uUm9sZShwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke3Byb3BzLnNlcnZpY2VOYW1lfUV4ZWN1dGlvblJvbGVgLCB7XG4gICAgICByb2xlTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9RXhlY3V0aW9uUm9sZWAsXG4gICAgICBkZXNjcmlwdGlvbjogYCR7cHJvcHMuc2VydmljZU5hbWV9IEV4ZWN1dGlvbiBSb2xlYCxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICB7XG4gICAgICAgICAgbWFuYWdlZFBvbGljeUFybjpcbiAgICAgICAgICAgIFwiYXJuOmF3czppYW06OmF3czpwb2xpY3kvc2VydmljZS1yb2xlL0FtYXpvbkVDU1Rhc2tFeGVjdXRpb25Sb2xlUG9saWN5XCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFtcInJlYWRTZWNyZXRzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZVwiLFxuICAgICAgICAgICAgICAgIFwic2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXRcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0gLy8gVE9ETzogU2V0IHRoaXMgdG8gdGhlIHNlY3JldCBBUk5cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wiZGVjcnlwdFNlY3JldHNcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcImttczpEZWNyeXB0XCJdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0gLy8gVE9ETzogU2V0IHRoaXMgdG8gdGhlIEtNUyBBcm5cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wiZWNzRXhlY3V0ZUNvbW1hbmRcIl06IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZUNvbnRyb2xDaGFubmVsXCIsXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpDcmVhdGVEYXRhQ2hhbm5lbFwiLFxuICAgICAgICAgICAgICAgIFwic3NtbWVzc2FnZXM6T3BlbkNvbnRyb2xDaGFubmVsXCIsXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpPcGVuRGF0YUNoYW5uZWxcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICBhc3N1bWVkQnk6IG5ldyBDb21wb3NpdGVQcmluY2lwYWwoXG4gICAgICAgIG5ldyBTZXJ2aWNlUHJpbmNpcGFsKFwiZWNzLXRhc2tzLmFtYXpvbmF3cy5jb21cIilcbiAgICAgIClcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFRhc2tEZWZpbml0aW9uKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBGYXJnYXRlVGFza0RlZmluaXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9VGFza0RlZmluaXRpb25gLFxuICAgICAge1xuICAgICAgICBjcHU6IHByb3BzLmNwdSB8fCAyNTYsXG4gICAgICAgIGV4ZWN1dGlvblJvbGU6IHRoaXMuZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgdGFza1JvbGU6IG5ldyBSb2xlKHRoaXMsIGAke3Byb3BzLnNlcnZpY2VOYW1lfVRhc2tSb2xlYCwge1xuICAgICAgICAgIHJvbGVOYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1UYXNrUm9sZWAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGAke3Byb3BzLnNlcnZpY2VOYW1lfSBUYXNrIFJvbGVgLFxuICAgICAgICAgIGlubGluZVBvbGljaWVzOiBwcm9wcy50YXNrUm9sZUlubGluZVBvbGljaWVzLFxuICAgICAgICAgIG1hbmFnZWRQb2xpY2llczogcHJvcHMudGFza1JvbGVNYW5hZ2VkUG9saWNpZXMsXG4gICAgICAgICAgYXNzdW1lZEJ5OiBuZXcgQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICAgICAgbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJlY3MtdGFza3MuYW1hem9uYXdzLmNvbVwiKVxuICAgICAgICAgIClcbiAgICAgICAgfSksXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBwcm9wcy5tZW1vcnlMaW1pdE1pQiB8fCA1MTJcbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMudGFza0RlZmluaXRpb24sIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkQ29udGFpbmVyRGVmaW5pdGlvbihwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9Q29udGFpbmVyRGVmaW5pdGlvbmAsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlKHByb3BzKSxcbiAgICAgICAgY29udGFpbmVyTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgLi4ucHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnRcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWFuZDogcHJvcHMuY29udGFpbmVyQ29tbWFuZCxcbiAgICAgICAgc2VjcmV0czoge1xuICAgICAgICAgIC4uLnRoaXMuc2VjcmV0c1xuICAgICAgICB9LFxuICAgICAgICAvL3RvZG86IHByb3ZpZGUgaGVhbHRoIGNoZWNrIG9wdGlvbnNcbiAgICAgICAgLy8gaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgLy8gICBjb21tYW5kOiBbXG4gICAgICAgIC8vICAgICBcIkNNRC1TSEVMTFwiLFxuICAgICAgICAvLyAgICAgYHRpbWVvdXQgMTBzIC9iaW4vc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS8ke3Byb3BzLmNvbnRhaW5lclBvcnR9JyB8fCBleGl0IDFgXG4gICAgICAgIC8vICAgXVxuICAgICAgICAvLyB9LFxuICAgICAgICBsb2dnaW5nOiBuZXcgQXdzTG9nRHJpdmVyKHtcbiAgICAgICAgICBzdHJlYW1QcmVmaXg6IGAvZWNzLyR7cHJvcHMuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgICBsb2dSZXRlbnRpb246IDE0XG4gICAgICAgIH0pLFxuICAgICAgICBwb3J0TWFwcGluZ3M6IHByb3BzLmNvbnRhaW5lclBvcnRcbiAgICAgICAgICA/IFt7IGNvbnRhaW5lclBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQgfV1cbiAgICAgICAgICA6IFt7IGNvbnRhaW5lclBvcnQ6IDgwIH1dXG4gICAgICB9XG4gICAgKTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmNvbnRhaW5lckRlZmluaXRpb24sIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkRmFyZ2F0ZVNlcnZpY2UocHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHMpIHtcbiAgICB0aGlzLmZhcmdhdGVTZXJ2aWNlID0gbmV3IEZhcmdhdGVTZXJ2aWNlKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLnNlcnZpY2VOYW1lfUZhcmdhdGVTZXJ2aWNlYCxcbiAgICAgIHtcbiAgICAgICAgY2lyY3VpdEJyZWFrZXI6IHsgcm9sbGJhY2s6IHRydWUgfSxcbiAgICAgICAgY2x1c3RlcjogdGhpcy5jbHVzdGVyLFxuICAgICAgICBkZXNpcmVkQ291bnQ6IDIsXG4gICAgICAgIGVuYWJsZUVDU01hbmFnZWRUYWdzOiB0cnVlLFxuICAgICAgICBlbmFibGVFeGVjdXRlQ29tbWFuZDogdHJ1ZSxcbiAgICAgICAgcHJvcGFnYXRlVGFnczogUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgICAgICBzZXJ2aWNlTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb25cbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuZmFyZ2F0ZVNlcnZpY2UsIHByb3BzLnRhZ3MpO1xuICB9XG5cbiAgYWRkU2NhbGluZ1BvbGljeShwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIHRoaXMuc2NhbGluZ1BvbGljeSA9IG5ldyBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9U2NhbGluZ1BvbGljeWAsXG4gICAgICB7XG4gICAgICAgIHBvbGljeU5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfVNjYWxpbmdQb2xpY3lgLFxuICAgICAgICBzY2FsaW5nVGFyZ2V0OiBuZXcgU2NhbGFibGVUYXJnZXQoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX1zY2FsYWJsZVRhcmdldGAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWF4Q2FwYWNpdHk6IDEwLFxuICAgICAgICAgICAgbWluQ2FwYWNpdHk6IDIsXG4gICAgICAgICAgICByZXNvdXJjZUlkOiBgc2VydmljZS8ke3RoaXMuY2x1c3Rlci5jbHVzdGVyTmFtZX0vJHt0aGlzLmZhcmdhdGVTZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgICBzY2FsYWJsZURpbWVuc2lvbjogXCJlY3M6c2VydmljZTpEZXNpcmVkQ291bnRcIixcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lc3BhY2U6IFNlcnZpY2VOYW1lc3BhY2UuRUNTXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICB0YXJnZXRWYWx1ZTogNTAsXG4gICAgICAgIHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBzY2FsZUluQ29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICBwcmVkZWZpbmVkTWV0cmljOlxuICAgICAgICAgIHByb3BzLnNjYWxpbmdUeXBlID09IFNjYWxpbmdUeXBlLk1FTU9SWVxuICAgICAgICAgICAgPyBQcmVkZWZpbmVkTWV0cmljLkVDU19TRVJWSUNFX0FWRVJBR0VfTUVNT1JZX1VUSUxJWkFUSU9OXG4gICAgICAgICAgICA6IFByZWRlZmluZWRNZXRyaWMuRUNTX1NFUlZJQ0VfQVZFUkFHRV9DUFVfVVRJTElaQVRJT05cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmVnaXN0ZXJMb2FkQmFsYW5jZXJUYXJnZXRzKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5mYXJnYXRlU2VydmljZS5yZWdpc3RlckxvYWRCYWxhbmNlclRhcmdldHMoe1xuICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5jb250YWluZXJEZWZpbml0aW9uLmNvbnRhaW5lck5hbWUsXG4gICAgICBjb250YWluZXJQb3J0OiB0aGlzLmNvbnRhaW5lckRlZmluaXRpb24uY29udGFpbmVyUG9ydCxcbiAgICAgIG5ld1RhcmdldEdyb3VwSWQ6IGAke3Byb3BzLnNlcnZpY2VOYW1lfVRhcmdldEdyb3VwYCxcbiAgICAgIGxpc3RlbmVyOiBMaXN0ZW5lckNvbmZpZy5hcHBsaWNhdGlvbkxpc3RlbmVyKHRoaXMubG9hZEJhbGFuY2VyTGlzdGVuZXIsIHtcbiAgICAgICAgcG9ydDogcHJvcHMuY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IEFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygxMjApLFxuICAgICAgICAgIHBhdGg6IHByb3BzLmhlYWx0aENoZWNrUGF0aCB8fCBcIi9cIixcbiAgICAgICAgICBwb3J0OiBwcm9wcy5jb250YWluZXJQb3J0ID8gYCR7cHJvcHMuY29udGFpbmVyUG9ydH1gIDogXCJ0cmFmZmljLXBvcnRcIixcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDEwKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgYWRkTG9hZEJhbGFuY2VyKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgdGhpcy5sb2FkQmFsYW5jZXIgPSBuZXcgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuY2x1c3Rlck5hbWV9TG9hZEJhbGFuY2VyYCxcbiAgICAgIHtcbiAgICAgICAgdnBjOiB0aGlzLmNsdXN0ZXIudnBjLFxuICAgICAgICBpbnRlcm5ldEZhY2luZzogdHJ1ZSxcbiAgICAgICAgbG9hZEJhbGFuY2VyTmFtZTogYCR7cHJvcHMuc2VydmljZU5hbWV9TG9hZEJhbGFuY2VyYCxcbiAgICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMubG9hZEJhbGFuY2VyLCBwcm9wcy50YWdzKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cHJvcHMuY2x1c3Rlck5hbWV9TG9hZEJhbGFuY2VyRG5zTmFtZWAsIHtcbiAgICAgIGtleTogYCR7cHJvcHMuY2x1c3Rlck5hbWV9TG9hZEJhbGFuY2VyRG5zTmFtZWAsXG4gICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy5jbHVzdGVyTmFtZX1Mb2FkQmFsYW5jZXJEbnNOYW1lYCxcbiAgICAgIHZhbHVlOiB0aGlzLmxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJEbnNOYW1lXG4gICAgfSk7XG4gIH1cblxuICBhZGRMb2FkQmFsYW5jZXJMaXN0ZW5lcihwcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcykge1xuICAgIGlmICghIXRoaXMuY2VydGlmaWNhdGUpIHtcbiAgICAgIHRoaXMubG9hZEJhbGFuY2VyTGlzdGVuZXIgPSB0aGlzLmxvYWRCYWxhbmNlci5hZGRMaXN0ZW5lcihcbiAgICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9TGlzdGVuZXJgLFxuICAgICAgICB7XG4gICAgICAgICAgcG9ydDogcHJvcHMucHJvdG9jb2wgPT0gUHJvdG9jb2wuSFRUUCA/IDgwIDogNDQzLFxuICAgICAgICAgIGNlcnRpZmljYXRlczogW3RoaXMuY2VydGlmaWNhdGVdXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZEJhbGFuY2VyTGlzdGVuZXIgPSB0aGlzLmxvYWRCYWxhbmNlci5hZGRMaXN0ZW5lcihcbiAgICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9TGlzdGVuZXJgLFxuICAgICAgICB7XG4gICAgICAgICAgcG9ydDogcHJvcHMucHJvdG9jb2wgPT0gUHJvdG9jb2wuSFRUUCA/IDgwIDogNDQzXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGFnUmVzb3VyY2UodGhpcy5sb2FkQmFsYW5jZXJMaXN0ZW5lciwgcHJvcHMudGFncyk7XG4gIH1cblxuICBhZGRIb3N0ZWRab25lKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKSB7XG4gICAgaWYgKCFwcm9wcy5wYXJlbnREb21haW4pIHJldHVybjtcblxuICAgIHRoaXMuaG9zdGVkWm9uZSA9IEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHRoaXMsIFwiaG9zdGVkWm9uZVwiLCB7XG4gICAgICBob3N0ZWRab25lSWQ6IEZuLmltcG9ydFZhbHVlKFxuICAgICAgICBgJHtwcm9wcy5wYXJlbnREb21haW4uc3BsaXQoXCIuXCIpLmpvaW4oXCJcIil9SG9zdGVkWm9uZUlkYFxuICAgICAgKSxcbiAgICAgIHpvbmVOYW1lOiBwcm9wcy5wYXJlbnREb21haW5cbiAgICB9KTtcblxuICAgIHRoaXMuY2VydGlmaWNhdGUgPSBuZXcgQ2VydGlmaWNhdGUoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuc2VydmljZU5hbWV9Q2VydGlmaWNhdGVgLFxuICAgICAge1xuICAgICAgICBkb21haW5OYW1lOiBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0uJHtwcm9wcy5jbHVzdGVyTmFtZX0uJHtwcm9wcy5wYXJlbnREb21haW59YCxcbiAgICAgICAgdmFsaWRhdGlvbjogQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnModGhpcy5ob3N0ZWRab25lKVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmFSZWNvcmQgPSBuZXcgQVJlY29yZChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0uJHtwcm9wcy5jbHVzdGVyTmFtZX0uJHtwcm9wcy5wYXJlbnREb21haW59QVJlY29yZGAsXG4gICAgICB7XG4gICAgICAgIHJlY29yZE5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfS4ke3Byb3BzLmNsdXN0ZXJOYW1lfS4ke3Byb3BzLnBhcmVudERvbWFpbn1gLFxuICAgICAgICB6b25lOiB0aGlzLmhvc3RlZFpvbmUsXG4gICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgICBuZXcgTG9hZEJhbGFuY2VyVGFyZ2V0KHRoaXMubG9hZEJhbGFuY2VyKVxuICAgICAgICApXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEltYWdlKHByb3BzOiBGYXJnYXRlQ2x1c3RlclByb3BzKTogQ29udGFpbmVySW1hZ2Uge1xuICAgIGlmICghcHJvcHMuZWNyUmVwb3NpdG9yeSlcbiAgICAgIHJldHVybiBDb250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIik7XG4gICAgaWYgKHByb3BzLmVjclJlcG9zaXRvcnkgaW5zdGFuY2VvZiBDb250YWluZXJJbWFnZSlcbiAgICAgIHJldHVybiBwcm9wcy5lY3JSZXBvc2l0b3J5O1xuICAgIGlmIChwcm9wcy5lY3JSZXBvc2l0b3J5IGluc3RhbmNlb2YgUmVwb3NpdG9yeSkge1xuICAgICAgcmV0dXJuIENvbnRhaW5lckltYWdlLmZyb21FY3JSZXBvc2l0b3J5KHByb3BzLmVjclJlcG9zaXRvcnksIFwibGF0ZXN0XCIpO1xuICAgIH1cbiAgICByZXR1cm4gQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEZhcmdhdGVDbHVzdGVyUHJvcHNcbiAgKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdQcm9wczogRmFyZ2F0ZUNsdXN0ZXJQcm9wcyA9IHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIC4uLntcbiAgICAgICAgICB2cGM6IChzYi5nZXROZXR3b3JrKCkgYXMgSVZwYykgfHwgcHJvcHMudnBjXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gbmV3IHRoaXMoc2IuZ2V0U3RhY2soKSwgaWQsIG5ld1Byb3BzKTtcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { User } from "../config/aws/identityCenterUser";
2
+ export default class UsersConfig {
3
+ private configFile;
4
+ users: User[];
5
+ constructor();
6
+ getUsers(): User[];
7
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs = require("fs");
4
+ class UsersConfig {
5
+ constructor() {
6
+ this.configFile = "fjall/users-config.json";
7
+ if (!fs.existsSync(this.configFile)) {
8
+ throw new Error(`Config file ${this.configFile} does not exist`);
9
+ }
10
+ const fileContent = fs.readFileSync(this.configFile, "utf-8");
11
+ this.users = JSON.parse(fileContent);
12
+ }
13
+ getUsers() {
14
+ return this.users;
15
+ }
16
+ }
17
+ exports.default = UsersConfig;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnNDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvdXNlcnNDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBeUI7QUFHekIsTUFBcUIsV0FBVztJQUk5QjtRQUhRLGVBQVUsR0FBRyx5QkFBeUIsQ0FBQztRQUk3QyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxVQUFVLGlCQUFpQixDQUFDLENBQUM7U0FDbEU7UUFFRCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQWhCRCw4QkFnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiLi4vY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlclVzZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlcnNDb25maWcge1xuICBwcml2YXRlIGNvbmZpZ0ZpbGUgPSBcImZqYWxsL3VzZXJzLWNvbmZpZy5qc29uXCI7XG4gIHB1YmxpYyB1c2VyczogVXNlcltdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmNvbmZpZ0ZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZyBmaWxlICR7dGhpcy5jb25maWdGaWxlfSBkb2VzIG5vdCBleGlzdGApO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHRoaXMuY29uZmlnRmlsZSwgXCJ1dGYtOFwiKTtcbiAgICB0aGlzLnVzZXJzID0gSlNPTi5wYXJzZShmaWxlQ29udGVudCk7XG4gIH1cblxuICBnZXRVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy51c2VycztcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/components-infrastructure",
3
- "version": "0.1.25",
3
+ "version": "0.1.27",
4
4
  "bin": {
5
5
  "infrastructure": "bin/infrastructure.js"
6
6
  },