@lifeready/core 6.0.5 → 6.1.2
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/bundles/lifeready-core.umd.js +3485 -7369
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +1 -1
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/auth2/auth.config.js +57 -0
- package/esm2015/lib/auth2/auth2.gql.private.js +8 -1
- package/esm2015/lib/auth2/auth2.service.js +3 -4
- package/esm2015/lib/auth2/auth2.types.js +1 -1
- package/esm2015/lib/encryption/encryption.service.js +7 -6
- package/esm2015/lib/file-upload/file-upload.service.js +4 -4
- package/esm2015/lib/idle/idle.service.js +1 -2
- package/esm2015/lib/item2/item2.service.js +17 -46
- package/esm2015/lib/key/key-graph.service.js +3 -3
- package/esm2015/lib/key/key-meta.service.js +16 -64
- package/esm2015/lib/key/key.types.js +6 -1
- package/esm2015/lib/key-exchange/key-exchange2.service.js +6 -25
- package/esm2015/lib/life-ready.module.js +2 -9
- package/esm2015/lib/password/password.service.js +1 -1
- package/esm2015/lib/profile/profile-details.service.js +120 -75
- package/esm2015/lib/profile/profile.gql.js +134 -1
- package/esm2015/lib/profile/profile.service.js +8 -5
- package/esm2015/lib/profile/profile.types.js +14 -3
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +2 -2
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +1 -1
- package/esm2015/lib/trusted-party/trusted-party2.service.js +3 -7
- package/esm2015/lifeready-core.js +7 -9
- package/esm2015/public-api.js +2 -20
- package/fesm2015/lifeready-core.js +3223 -6588
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/auth2/auth2.gql.private.d.ts +15 -2
- package/lib/auth2/auth2.service.d.ts +1 -1
- package/lib/auth2/auth2.types.d.ts +19 -2
- package/lib/file-upload/file-upload.service.d.ts +2 -2
- package/lib/item2/item2.service.d.ts +12 -75
- package/lib/key/key-meta.service.d.ts +8 -1
- package/lib/key/key.types.d.ts +4 -1
- package/lib/key-exchange/key-exchange2.service.d.ts +5 -66
- package/lib/password/password.service.d.ts +1 -1
- package/lib/profile/profile-details.service.d.ts +10 -11
- package/lib/profile/profile.gql.d.ts +12 -0
- package/lib/profile/profile.service.d.ts +1 -3
- package/lib/profile/profile.types.d.ts +31 -4
- package/lib/shared-contact-card/shared-contact-card.service.d.ts +1 -2
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +3 -3
- package/lib/trusted-party/trusted-party2.service.d.ts +2 -7
- package/lifeready-core.d.ts +6 -8
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -19
- package/esm2015/lib/auth/auth.config.js +0 -57
- package/esm2015/lib/auth/auth.gql.js +0 -16
- package/esm2015/lib/auth/auth.types.js +0 -18
- package/esm2015/lib/auth/life-ready-auth.service.js +0 -568
- package/esm2015/lib/category/category-meta.service.js +0 -99
- package/esm2015/lib/category/category.gql.js +0 -385
- package/esm2015/lib/category/category.service.js +0 -361
- package/esm2015/lib/category/category.types.js +0 -29
- package/esm2015/lib/key-exchange/key-exchange.gql.js +0 -188
- package/esm2015/lib/key-exchange/key-exchange.service.js +0 -436
- package/esm2015/lib/key-exchange/key-exchange.types.js +0 -7
- package/esm2015/lib/message/message.gql.js +0 -32
- package/esm2015/lib/message/message.service.js +0 -118
- package/esm2015/lib/message/message.types.js +0 -2
- package/esm2015/lib/plan/plan.gql.js +0 -123
- package/esm2015/lib/plan/plan.service.js +0 -150
- package/esm2015/lib/plan/plan.types.js +0 -11
- package/esm2015/lib/record/record-attachment.service.js +0 -102
- package/esm2015/lib/record/record.gql.js +0 -182
- package/esm2015/lib/record/record.service.js +0 -194
- package/esm2015/lib/record/record.types.js +0 -15
- package/esm2015/lib/record-type/record-type.service.js +0 -75
- package/esm2015/lib/record-type/record-type.types.js +0 -28
- package/esm2015/lib/trusted-party/trusted-party.gql.js +0 -148
- package/esm2015/lib/trusted-party/trusted-party.service.js +0 -308
- package/esm2015/lib/trusted-party/trusted-party.types.js +0 -41
- package/lib/auth/auth.gql.d.ts +0 -12
- package/lib/auth/auth.types.d.ts +0 -52
- package/lib/auth/life-ready-auth.service.d.ts +0 -73
- package/lib/category/category-meta.service.d.ts +0 -23
- package/lib/category/category.gql.d.ts +0 -44
- package/lib/category/category.service.d.ts +0 -66
- package/lib/category/category.types.d.ts +0 -75
- package/lib/key-exchange/key-exchange.gql.d.ts +0 -9
- package/lib/key-exchange/key-exchange.service.d.ts +0 -37
- package/lib/key-exchange/key-exchange.types.d.ts +0 -188
- package/lib/message/message.gql.d.ts +0 -13
- package/lib/message/message.service.d.ts +0 -36
- package/lib/message/message.types.d.ts +0 -12
- package/lib/plan/plan.gql.d.ts +0 -11
- package/lib/plan/plan.service.d.ts +0 -34
- package/lib/plan/plan.types.d.ts +0 -32
- package/lib/record/record-attachment.service.d.ts +0 -16
- package/lib/record/record.gql.d.ts +0 -14
- package/lib/record/record.service.d.ts +0 -25
- package/lib/record/record.types.d.ts +0 -56
- package/lib/record-type/record-type.service.d.ts +0 -11
- package/lib/record-type/record-type.types.d.ts +0 -50
- package/lib/trusted-party/trusted-party.gql.d.ts +0 -9
- package/lib/trusted-party/trusted-party.service.d.ts +0 -43
- package/lib/trusted-party/trusted-party.types.d.ts +0 -101
- /package/lib/{auth → auth2}/auth.config.d.ts +0 -0
|
@@ -2,15 +2,16 @@ import { __awaiter, __rest } from "tslib";
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
4
|
import _ from 'lodash';
|
|
5
|
-
import {
|
|
5
|
+
import { LrGraphQLService } from '../api/lr-graphql';
|
|
6
|
+
import { mapEdges } from '../api/types';
|
|
6
7
|
import { SharedContactCardService } from '../shared-contact-card/shared-contact-card.service';
|
|
7
|
-
import {
|
|
8
|
+
import { ContactCardsQuery, TrustedPartiesQuery } from './profile.gql';
|
|
8
9
|
import { ProfileService } from './profile.service';
|
|
10
|
+
import { TrustedPartyType, } from './profile.types';
|
|
9
11
|
import * as i0 from "@angular/core";
|
|
10
12
|
import * as i1 from "../shared-contact-card/shared-contact-card.service";
|
|
11
|
-
import * as i2 from "
|
|
12
|
-
import * as i3 from "
|
|
13
|
-
import * as i4 from "../auth/life-ready-auth.service";
|
|
13
|
+
import * as i2 from "./profile.service";
|
|
14
|
+
import * as i3 from "../api/lr-graphql/lr-graphql.service";
|
|
14
15
|
var ContactFields;
|
|
15
16
|
(function (ContactFields) {
|
|
16
17
|
ContactFields["Name"] = "name";
|
|
@@ -26,23 +27,124 @@ const FieldNames = [
|
|
|
26
27
|
ContactFields.Phone,
|
|
27
28
|
ContactFields.Address,
|
|
28
29
|
];
|
|
29
|
-
class FieldChange {
|
|
30
|
-
}
|
|
31
30
|
export class ProfileDetailsService {
|
|
32
|
-
constructor(sharedContactCardService,
|
|
31
|
+
constructor(sharedContactCardService, profileService, api) {
|
|
33
32
|
this.sharedContactCardService = sharedContactCardService;
|
|
34
|
-
this.trustedPartyService = trustedPartyService;
|
|
35
33
|
this.profileService = profileService;
|
|
36
|
-
this.
|
|
34
|
+
this.api = api;
|
|
37
35
|
}
|
|
38
36
|
updateDetails(fields) {
|
|
39
37
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
-
|
|
41
|
-
yield this.
|
|
42
|
-
yield this.
|
|
43
|
-
|
|
38
|
+
console.log('updateDetails()');
|
|
39
|
+
const mainContactCard = yield this.fetchMainContactCard();
|
|
40
|
+
const updatedMainContactCard = yield this.profileService.updateDetails(mainContactCard === null || mainContactCard === void 0 ? void 0 : mainContactCard.id, mainContactCard === null || mainContactCard === void 0 ? void 0 : mainContactCard.keyId, fields);
|
|
41
|
+
yield this.synchronizeContactCards(fields, mainContactCard === null || mainContactCard === void 0 ? void 0 : mainContactCard.fields);
|
|
42
|
+
return updatedMainContactCard;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
updateTrustedPartyDetails(details) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
const { id, ownedKeyId, sharedKeyId } = details, contactCard = __rest(details, ["id", "ownedKeyId", "sharedKeyId"]);
|
|
48
|
+
yield this.sharedContactCardService.updateMySharedContactCard(id, ownedKeyId, sharedKeyId, contactCard);
|
|
49
|
+
yield this.synchronizeSharedDetails(details);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
synchronizeSharedDetails(details) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
let hasNewValues = false;
|
|
55
|
+
// Used to be a getCurrentUser() call which returns a caches version of the contact card.
|
|
56
|
+
// Now we just make an API call. So ok to modify the returned value.
|
|
57
|
+
const mainContactCard = yield this.fetchMainContactCard();
|
|
58
|
+
if (details.name) {
|
|
59
|
+
const property = this.checkField(details.name, mainContactCard.fields.name);
|
|
60
|
+
if (property) {
|
|
61
|
+
mainContactCard.fields.name = property;
|
|
62
|
+
hasNewValues = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (details.email) {
|
|
66
|
+
const property = this.checkField(details.email, mainContactCard.fields.email);
|
|
67
|
+
if (property) {
|
|
68
|
+
mainContactCard.fields.email = property;
|
|
69
|
+
hasNewValues = true;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (details.image) {
|
|
73
|
+
const property = this.checkField(details.image, mainContactCard.fields.image);
|
|
74
|
+
if (property) {
|
|
75
|
+
mainContactCard.fields.image = property;
|
|
76
|
+
hasNewValues = true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (details.phones && details.phones.length) {
|
|
80
|
+
for (const phone of details.phones) {
|
|
81
|
+
const property = this.checkField(phone.value, mainContactCard.fields.phone, phone.label);
|
|
82
|
+
if (property) {
|
|
83
|
+
mainContactCard.fields.phone = property;
|
|
84
|
+
hasNewValues = true;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (details.addresses && details.addresses.length) {
|
|
89
|
+
for (const address of details.addresses) {
|
|
90
|
+
const property = this.checkField(address.value, mainContactCard.fields.address, address.label);
|
|
91
|
+
if (property) {
|
|
92
|
+
mainContactCard.fields.address = property;
|
|
93
|
+
hasNewValues = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (hasNewValues) {
|
|
98
|
+
yield this.profileService.updateDetails(mainContactCard.id, mainContactCard.keyId, mainContactCard.fields);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// ------------------------------------------------------------------
|
|
103
|
+
// Helpers
|
|
104
|
+
// ------------------------------------------------------------------
|
|
105
|
+
fetchMainContactCard() {
|
|
106
|
+
var _a;
|
|
107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
const mainContactCard = (_a = (yield this.api.query({ query: ContactCardsQuery }))
|
|
109
|
+
.contactCards.edges[0]) === null || _a === void 0 ? void 0 : _a.node;
|
|
110
|
+
return mainContactCard
|
|
111
|
+
? {
|
|
112
|
+
id: mainContactCard.id,
|
|
113
|
+
keyId: mainContactCard.key.id,
|
|
114
|
+
fields: mainContactCard.cipherDataClearJson,
|
|
115
|
+
}
|
|
116
|
+
: null;
|
|
44
117
|
});
|
|
45
118
|
}
|
|
119
|
+
getTrustedParties() {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
const { tps } = yield this.api.query({
|
|
122
|
+
query: TrustedPartiesQuery,
|
|
123
|
+
});
|
|
124
|
+
return mapEdges(tps).map((tp) => this.mapTrustedParty(tp));
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
mapTrustedParty(tp) {
|
|
128
|
+
var _a, _b;
|
|
129
|
+
const tpDetails = tp.sharedContactCard.sharedCipherDataClearJson;
|
|
130
|
+
const myDetails = Object.assign(Object.assign({}, tp.myContactCard.sharedCipherDataClearJson), { id: tp.myContactCard.id, ownedKeyId: tp.myContactCard.ownerKey.id, sharedKeyId: tp.myContactCard.sharedKey.id });
|
|
131
|
+
return {
|
|
132
|
+
id: tp.id,
|
|
133
|
+
type: TrustedPartyType.User,
|
|
134
|
+
hasScenarios: !!tp.sharedScenarios.edges.length,
|
|
135
|
+
hasSharedVault: !!tp.theirItems.directories.edges.length,
|
|
136
|
+
name: (_a = tpDetails === null || tpDetails === void 0 ? void 0 : tpDetails.name) === null || _a === void 0 ? void 0 : _a.name,
|
|
137
|
+
details: tpDetails,
|
|
138
|
+
mySharedDetails: myDetails,
|
|
139
|
+
userSharedKey: tp.currentUserSharedKey.userSharedKey,
|
|
140
|
+
username: tp.other.username,
|
|
141
|
+
features: {
|
|
142
|
+
sharedVault: {
|
|
143
|
+
hasAccess: (((_b = tp.other.features) === null || _b === void 0 ? void 0 : _b.shareVault) || ['noaccess'])[0] === 'access',
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
46
148
|
synchronizeContactCards(newFields, oldFields) {
|
|
47
149
|
return __awaiter(this, void 0, void 0, function* () {
|
|
48
150
|
if (!oldFields)
|
|
@@ -50,7 +152,7 @@ export class ProfileDetailsService {
|
|
|
50
152
|
const changes = this.getChanges(newFields, oldFields);
|
|
51
153
|
if (changes.length === 0)
|
|
52
154
|
return;
|
|
53
|
-
const trustedParties = yield this.
|
|
155
|
+
const trustedParties = yield this.getTrustedParties();
|
|
54
156
|
if (trustedParties.length === 0)
|
|
55
157
|
return;
|
|
56
158
|
for (const details of trustedParties.map((x) => x.mySharedDetails)) {
|
|
@@ -128,62 +230,6 @@ export class ProfileDetailsService {
|
|
|
128
230
|
}
|
|
129
231
|
});
|
|
130
232
|
}
|
|
131
|
-
updateTrustedPartyDetails(details) {
|
|
132
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
-
const { id, ownedKeyId, sharedKeyId } = details, contactCard = __rest(details, ["id", "ownedKeyId", "sharedKeyId"]);
|
|
134
|
-
yield this.sharedContactCardService.updateMySharedContactCard(id, ownedKeyId, sharedKeyId, contactCard);
|
|
135
|
-
yield this.synchronizeSharedDetails(details);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
synchronizeSharedDetails(details) {
|
|
139
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
-
let { contactCard } = yield this.authService.getUser();
|
|
141
|
-
let hasNewValues = false;
|
|
142
|
-
contactCard = Object.assign({}, contactCard);
|
|
143
|
-
if (details.name) {
|
|
144
|
-
const property = this.checkField(details.name, contactCard.name);
|
|
145
|
-
if (property) {
|
|
146
|
-
contactCard.name = property;
|
|
147
|
-
hasNewValues = true;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
if (details.email) {
|
|
151
|
-
const property = this.checkField(details.email, contactCard.email);
|
|
152
|
-
if (property) {
|
|
153
|
-
contactCard.email = property;
|
|
154
|
-
hasNewValues = true;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
if (details.image) {
|
|
158
|
-
const property = this.checkField(details.image, contactCard.image);
|
|
159
|
-
if (property) {
|
|
160
|
-
contactCard.image = property;
|
|
161
|
-
hasNewValues = true;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
if (details.phones && details.phones.length) {
|
|
165
|
-
for (const phone of details.phones) {
|
|
166
|
-
const property = this.checkField(phone.value, contactCard.phone, phone.label);
|
|
167
|
-
if (property) {
|
|
168
|
-
contactCard.phone = property;
|
|
169
|
-
hasNewValues = true;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (details.addresses && details.addresses.length) {
|
|
174
|
-
for (const address of details.addresses) {
|
|
175
|
-
const property = this.checkField(address.value, contactCard.address, address.label);
|
|
176
|
-
if (property) {
|
|
177
|
-
contactCard.address = property;
|
|
178
|
-
hasNewValues = true;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (hasNewValues) {
|
|
183
|
-
yield this.profileService.updateDetails(contactCard.id, contactCard.keyId, contactCard);
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
233
|
checkField(field, property, label = null) {
|
|
188
234
|
property = property || { value: field, hasMultiple: false };
|
|
189
235
|
property.values = property.values || [];
|
|
@@ -201,7 +247,7 @@ export class ProfileDetailsService {
|
|
|
201
247
|
return null;
|
|
202
248
|
}
|
|
203
249
|
}
|
|
204
|
-
ProfileDetailsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProfileDetailsService_Factory() { return new ProfileDetailsService(i0.ɵɵinject(i1.SharedContactCardService), i0.ɵɵinject(i2.
|
|
250
|
+
ProfileDetailsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProfileDetailsService_Factory() { return new ProfileDetailsService(i0.ɵɵinject(i1.SharedContactCardService), i0.ɵɵinject(i2.ProfileService), i0.ɵɵinject(i3.LrGraphQLService)); }, token: ProfileDetailsService, providedIn: "root" });
|
|
205
251
|
ProfileDetailsService.decorators = [
|
|
206
252
|
{ type: Injectable, args: [{
|
|
207
253
|
providedIn: 'root',
|
|
@@ -209,8 +255,7 @@ ProfileDetailsService.decorators = [
|
|
|
209
255
|
];
|
|
210
256
|
ProfileDetailsService.ctorParameters = () => [
|
|
211
257
|
{ type: SharedContactCardService },
|
|
212
|
-
{ type: TrustedPartyService },
|
|
213
258
|
{ type: ProfileService },
|
|
214
|
-
{ type:
|
|
259
|
+
{ type: LrGraphQLService }
|
|
215
260
|
];
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1kZXRhaWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLWRldGFpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBT25ELElBQUssYUFNSjtBQU5ELFdBQUssYUFBYTtJQUNoQiw4QkFBYSxDQUFBO0lBQ2IsZ0NBQWUsQ0FBQTtJQUNmLGdDQUFlLENBQUE7SUFDZixnQ0FBZSxDQUFBO0lBQ2Ysb0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQU5JLGFBQWEsS0FBYixhQUFhLFFBTWpCO0FBRUQsTUFBTSxVQUFVLEdBQUc7SUFDakIsYUFBYSxDQUFDLElBQUk7SUFDbEIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLE9BQU87Q0FDdEIsQ0FBQztBQUVGLE1BQU0sV0FBVztDQU1oQjtBQUtELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDVSx3QkFBa0QsRUFDbEQsbUJBQXdDLEVBQ3hDLGNBQThCLEVBQzlCLFdBQWlDO1FBSGpDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyxt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LEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7WUFDekMsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7WUE5T0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFwQ1Esd0JBQXdCO1lBQ3hCLG1CQUFtQjtZQUVuQixjQUFjO1lBSmQsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyIH0gZnJvbSAnLi4vYXV0aC9hdXRoLnR5cGVzJztcbmltcG9ydCB7IExpZmVSZWFkeUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC9saWZlLXJlYWR5LWF1dGguc2VydmljZSc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQtY29udGFjdC1jYXJkL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBUcnVzdGVkUGFydHlTZXJ2aWNlIH0gZnJvbSAnLi4vdHJ1c3RlZC1wYXJ0eS90cnVzdGVkLXBhcnR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscyB9IGZyb20gJy4uL3RydXN0ZWQtcGFydHkvdHJ1c3RlZC1wYXJ0eS50eXBlcyc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4vcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgTWFpbkNvbnRhY3RDYXJkUHJvcGVydHksXG4gIFRydXN0ZWRQYXJ0eURldGFpbHMsXG59IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XG5cbmVudW0gQ29udGFjdEZpZWxkcyB7XG4gIE5hbWUgPSAnbmFtZScsXG4gIEVtYWlsID0gJ2VtYWlsJyxcbiAgSW1hZ2UgPSAnaW1hZ2UnLFxuICBQaG9uZSA9ICdwaG9uZScsXG4gIEFkZHJlc3MgPSAnYWRkcmVzcycsXG59XG5cbmNvbnN0IEZpZWxkTmFtZXMgPSBbXG4gIENvbnRhY3RGaWVsZHMuTmFtZSxcbiAgQ29udGFjdEZpZWxkcy5FbWFpbCxcbiAgQ29udGFjdEZpZWxkcy5JbWFnZSxcbiAgQ29udGFjdEZpZWxkcy5QaG9uZSxcbiAgQ29udGFjdEZpZWxkcy5BZGRyZXNzLFxuXTtcblxuY2xhc3MgRmllbGRDaGFuZ2Uge1xuICBmaWVsZDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBvbGRWYWx1ZT86IGFueTtcbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlRGV0YWlsc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNoYXJlZENvbnRhY3RDYXJkU2VydmljZTogU2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJ1c3RlZFBhcnR5U2VydmljZTogVHJ1c3RlZFBhcnR5U2VydmljZSxcbiAgICBwcml2YXRlIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBMaWZlUmVhZHlBdXRoU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZURldGFpbHMoXG4gICAgZmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTxDdXJyZW50VXNlcj4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXIoKTtcbiAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZURldGFpbHMoXG4gICAgICB1c2VyLmNvbnRhY3RDYXJkLmlkLFxuICAgICAgdXNlci5jb250YWN0Q2FyZC5rZXlJZCxcbiAgICAgIGZpZWxkc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5zeW5jaHJvbml6ZUNvbnRhY3RDYXJkcyhmaWVsZHMsIHVzZXIuY29udGFjdENhcmQpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXIodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN5bmNocm9uaXplQ29udGFjdENhcmRzKFxuICAgIG5ld0ZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzLFxuICAgIG9sZEZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghb2xkRmllbGRzKSByZXR1cm47XG5cbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5nZXRDaGFuZ2VzKG5ld0ZpZWxkcywgb2xkRmllbGRzKTtcblxuICAgIGlmIChjaGFuZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdHJ1c3RlZFBhcnRpZXMgPSBhd2FpdCB0aGlzLnRydXN0ZWRQYXJ0eVNlcnZpY2UuZ2V0VHJ1c3RlZFBhcnRpZXMoKTtcblxuICAgIGlmICh0cnVzdGVkUGFydGllcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgZGV0YWlscyBvZiB0cnVzdGVkUGFydGllcy5tYXAoKHgpID0+IHgubXlTaGFyZWREZXRhaWxzKSkge1xuICAgICAgYXdhaXQgdGhpcy5zeW5jaHJvbml6ZVNoYXJlZENvbnRhY3RDYXJkKGRldGFpbHMsIGNoYW5nZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2hhbmdlcyhcbiAgICBuZXdGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgICBvbGRGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xuICApOiBGaWVsZENoYW5nZVtdIHtcbiAgICBjb25zdCBjaGFuZ2VzOiBGaWVsZENoYW5nZVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIEZpZWxkTmFtZXMpIHtcbiAgICAgIGNvbnN0IG9sZEZpZWxkID0gb2xkRmllbGRzW2ZpZWxkXTtcbiAgICAgIGlmIChvbGRGaWVsZCAmJiBvbGRGaWVsZC52YWx1ZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBvbGRWYWx1ZSBvZiBvbGRGaWVsZC52YWx1ZXMpIHtcbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IChuZXdGaWVsZHNbZmllbGRdLnZhbHVlcyBhcyBhbnlbXSk/LmZpbmQoXG4gICAgICAgICAgICAoeCkgPT4geC5pZCA9PT0gb2xkVmFsdWUuaWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCFuZXdWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGlkOiBvbGRWYWx1ZS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IG9sZFZhbHVlLmxhYmVsLFxuICAgICAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFfLmlzRXF1YWwobmV3VmFsdWUudmFsdWUsIG9sZFZhbHVlLnZhbHVlKSkge1xuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGlkOiBvbGRWYWx1ZS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IG9sZFZhbHVlLmxhYmVsLFxuICAgICAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZS52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3luY2hyb25pemVTaGFyZWRDb250YWN0Q2FyZChcbiAgICBkZXRhaWxzOiBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzLFxuICAgIGNoYW5nZXM6IEZpZWxkQ2hhbmdlW11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgICBzd2l0Y2ggKGNoYW5nZS5maWVsZCkge1xuICAgICAgICBjYXNlIENvbnRhY3RGaWVsZHMuUGhvbmU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgICBkZXRhaWxzLnBob25lcyAmJlxuICAgICAgICAgICAgICBkZXRhaWxzLnBob25lcy5maW5kKCh4KSA9PiB4LmxhYmVsID09PSBjaGFuZ2UubGFiZWwpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHZhbHVlLnZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb250YWN0RmllbGRzLkFkZHJlc3M6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgICBkZXRhaWxzLmFkZHJlc3NlcyAmJlxuICAgICAgICAgICAgICBkZXRhaWxzLmFkZHJlc3Nlcy5maW5kKCh4KSA9PiB4LmxhYmVsID09PSBjaGFuZ2UubGFiZWwpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHZhbHVlLnZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGV0YWlsc1tjaGFuZ2UuZmllbGRdO1xuXG4gICAgICAgICAgaWYgKF8uaXNFcXVhbCh2YWx1ZSwgY2hhbmdlLm9sZFZhbHVlKSkge1xuICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICBkZXRhaWxzW2NoYW5nZS5maWVsZF0gPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICBjb25zdCB7IGlkLCBvd25lZEtleUlkLCBzaGFyZWRLZXlJZCwgLi4uY29udGFjdENhcmQgfSA9IGRldGFpbHM7XG5cbiAgICAgIGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLnVwZGF0ZU15U2hhcmVkQ29udGFjdENhcmQoXG4gICAgICAgIGlkLFxuICAgICAgICBvd25lZEtleUlkLFxuICAgICAgICBzaGFyZWRLZXlJZCxcbiAgICAgICAgY29udGFjdENhcmRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZVRydXN0ZWRQYXJ0eURldGFpbHMoZGV0YWlsczogU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscykge1xuICAgIGNvbnN0IHsgaWQsIG93bmVkS2V5SWQsIHNoYXJlZEtleUlkLCAuLi5jb250YWN0Q2FyZCB9ID0gZGV0YWlscztcblxuICAgIGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLnVwZGF0ZU15U2hhcmVkQ29udGFjdENhcmQoXG4gICAgICBpZCxcbiAgICAgIG93bmVkS2V5SWQsXG4gICAgICBzaGFyZWRLZXlJZCxcbiAgICAgIGNvbnRhY3RDYXJkXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuc3luY2hyb25pemVTaGFyZWREZXRhaWxzKGRldGFpbHMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN5bmNocm9uaXplU2hhcmVkRGV0YWlscyhkZXRhaWxzOiBUcnVzdGVkUGFydHlEZXRhaWxzKSB7XG4gICAgbGV0IHsgY29udGFjdENhcmQgfSA9IGF3YWl0IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpO1xuICAgIGxldCBoYXNOZXdWYWx1ZXMgPSBmYWxzZTtcbiAgICBjb250YWN0Q2FyZCA9IHsgLi4uY29udGFjdENhcmQgfTtcblxuICAgIGlmIChkZXRhaWxzLm5hbWUpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKGRldGFpbHMubmFtZSwgY29udGFjdENhcmQubmFtZSk7XG5cbiAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICBjb250YWN0Q2FyZC5uYW1lID0gcHJvcGVydHk7XG4gICAgICAgIGhhc05ld1ZhbHVlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuZW1haWwpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKGRldGFpbHMuZW1haWwsIGNvbnRhY3RDYXJkLmVtYWlsKTtcblxuICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgIGNvbnRhY3RDYXJkLmVtYWlsID0gcHJvcGVydHk7XG4gICAgICAgIGhhc05ld1ZhbHVlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuaW1hZ2UpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKGRldGFpbHMuaW1hZ2UsIGNvbnRhY3RDYXJkLmltYWdlKTtcblxuICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgIGNvbnRhY3RDYXJkLmltYWdlID0gcHJvcGVydHk7XG4gICAgICAgIGhhc05ld1ZhbHVlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMucGhvbmVzICYmIGRldGFpbHMucGhvbmVzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBwaG9uZSBvZiBkZXRhaWxzLnBob25lcykge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY2hlY2tGaWVsZChcbiAgICAgICAgICBwaG9uZS52YWx1ZSxcbiAgICAgICAgICBjb250YWN0Q2FyZC5waG9uZSxcbiAgICAgICAgICBwaG9uZS5sYWJlbFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgIGNvbnRhY3RDYXJkLnBob25lID0gcHJvcGVydHk7XG4gICAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLmFkZHJlc3NlcyAmJiBkZXRhaWxzLmFkZHJlc3Nlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiBkZXRhaWxzLmFkZHJlc3Nlcykge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY2hlY2tGaWVsZChcbiAgICAgICAgICBhZGRyZXNzLnZhbHVlLFxuICAgICAgICAgIGNvbnRhY3RDYXJkLmFkZHJlc3MsXG4gICAgICAgICAgYWRkcmVzcy5sYWJlbFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgIGNvbnRhY3RDYXJkLmFkZHJlc3MgPSBwcm9wZXJ0eTtcbiAgICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc05ld1ZhbHVlcykge1xuICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVEZXRhaWxzKFxuICAgICAgICBjb250YWN0Q2FyZC5pZCxcbiAgICAgICAgY29udGFjdENhcmQua2V5SWQsXG4gICAgICAgIGNvbnRhY3RDYXJkXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGaWVsZDxUPihcbiAgICBmaWVsZDogVCxcbiAgICBwcm9wZXJ0eTogTWFpbkNvbnRhY3RDYXJkUHJvcGVydHk8VD4sXG4gICAgbGFiZWw6IHN0cmluZyA9IG51bGxcbiAgKSB7XG4gICAgcHJvcGVydHkgPSBwcm9wZXJ0eSB8fCB7IHZhbHVlOiBmaWVsZCwgaGFzTXVsdGlwbGU6IGZhbHNlIH07XG4gICAgcHJvcGVydHkudmFsdWVzID0gcHJvcGVydHkudmFsdWVzIHx8IFtdO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcGVydHkudmFsdWVzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgcHJvcGVydHkudmFsdWVzLmV2ZXJ5KCh4KSA9PiAhXy5pc0VxdWFsKGZpZWxkLCB4LnZhbHVlKSlcbiAgICApIHtcbiAgICAgIHByb3BlcnR5LnZhbHVlcy5wdXNoKHtcbiAgICAgICAgaWQ6IGAke2xhYmVsfS0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWAsXG4gICAgICAgIGxhYmVsLFxuICAgICAgICB2YWx1ZTogZmllbGQsXG4gICAgICB9KTtcbiAgICAgIHByb3BlcnR5Lmhhc011bHRpcGxlID0gcHJvcGVydHkudmFsdWVzLmxlbmd0aCA+IDE7XG4gICAgICBwcm9wZXJ0eS52YWx1ZSA9IHByb3BlcnR5LnZhbHVlIHx8IGZpZWxkO1xuICAgICAgcmV0dXJuIHByb3BlcnR5O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1kZXRhaWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLWRldGFpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQVUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBT0wsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRXpCLElBQUssYUFNSjtBQU5ELFdBQUssYUFBYTtJQUNoQiw4QkFBYSxDQUFBO0lBQ2IsZ0NBQWUsQ0FBQTtJQUNmLGdDQUFlLENBQUE7SUFDZixnQ0FBZSxDQUFBO0lBQ2Ysb0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQU5JLGFBQWEsS0FBYixhQUFhLFFBTWpCO0FBRUQsTUFBTSxVQUFVLEdBQUc7SUFDakIsYUFBYSxDQUFDLElBQUk7SUFDbEIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLE9BQU87Q0FDdEIsQ0FBQztBQWFGLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDVSx3QkFBa0QsRUFDbEQsY0FBOEIsRUFDOUIsR0FBcUI7UUFGckIsNkJB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YztZQUpkLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBMckdyYXBoUUxTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgbWFwRWRnZXMsIFRwTm9kZSB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQtY29udGFjdC1jYXJkL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250YWN0Q2FyZHNRdWVyeSwgVHJ1c3RlZFBhcnRpZXNRdWVyeSB9IGZyb20gJy4vcHJvZmlsZS5ncWwnO1xuaW1wb3J0IHsgUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBNYWluQ29udGFjdENhcmQsXG4gIE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgTWFpbkNvbnRhY3RDYXJkUHJvcGVydHksXG4gIFNoYXJlZFRydXN0ZWRQYXJ0eURldGFpbHMsXG4gIFRydXN0ZWRQYXJ0eSxcbiAgVHJ1c3RlZFBhcnR5RGV0YWlscyxcbiAgVHJ1c3RlZFBhcnR5VHlwZSxcbn0gZnJvbSAnLi9wcm9maWxlLnR5cGVzJztcblxuZW51bSBDb250YWN0RmllbGRzIHtcbiAgTmFtZSA9ICduYW1lJyxcbiAgRW1haWwgPSAnZW1haWwnLFxuICBJbWFnZSA9ICdpbWFnZScsXG4gIFBob25lID0gJ3Bob25lJyxcbiAgQWRkcmVzcyA9ICdhZGRyZXNzJyxcbn1cblxuY29uc3QgRmllbGROYW1lcyA9IFtcbiAgQ29udGFjdEZpZWxkcy5OYW1lLFxuICBDb250YWN0RmllbGRzLkVtYWlsLFxuICBDb250YWN0RmllbGRzLkltYWdlLFxuICBDb250YWN0RmllbGRzLlBob25lLFxuICBDb250YWN0RmllbGRzLkFkZHJlc3MsXG5dO1xuXG5pbnRlcmZhY2UgRmllbGRDaGFuZ2Uge1xuICBmaWVsZDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBvbGRWYWx1ZT86IGFueTtcbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlRGV0YWlsc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNoYXJlZENvbnRhY3RDYXJkU2VydmljZTogU2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBpOiBMckdyYXBoUUxTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyB1cGRhdGVEZXRhaWxzKGZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzKTogUHJvbWlzZTxNYWluQ29udGFjdENhcmQ+IHtcbiAgICBjb25zb2xlLmxvZygndXBkYXRlRGV0YWlscygpJyk7XG4gICAgY29uc3QgbWFpbkNvbnRhY3RDYXJkID0gYXdhaXQgdGhpcy5mZXRjaE1haW5Db250YWN0Q2FyZCgpO1xuXG4gICAgY29uc3QgdXBkYXRlZE1haW5Db250YWN0Q2FyZCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlRGV0YWlscyhcbiAgICAgIG1haW5Db250YWN0Q2FyZD8uaWQsXG4gICAgICBtYWluQ29udGFjdENhcmQ/LmtleUlkLFxuICAgICAgZmllbGRzXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuc3luY2hyb25pemVDb250YWN0Q2FyZHMoZmllbGRzLCBtYWluQ29udGFjdENhcmQ/LmZpZWxkcyk7XG5cbiAgICByZXR1cm4gdXBkYXRlZE1haW5Db250YWN0Q2FyZDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVRydXN0ZWRQYXJ0eURldGFpbHMoZGV0YWlsczogU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscykge1xuICAgIGNvbnN0IHsgaWQsIG93bmVkS2V5SWQsIHNoYXJlZEtleUlkLCAuLi5jb250YWN0Q2FyZCB9ID0gZGV0YWlscztcblxuICAgIGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLnVwZGF0ZU15U2hhcmVkQ29udGFjdENhcmQoXG4gICAgICBpZCxcbiAgICAgIG93bmVkS2V5SWQsXG4gICAgICBzaGFyZWRLZXlJZCxcbiAgICAgIGNvbnRhY3RDYXJkXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuc3luY2hyb25pemVTaGFyZWREZXRhaWxzKGRldGFpbHMpO1xuICB9XG5cbiAgYXN5bmMgc3luY2hyb25pemVTaGFyZWREZXRhaWxzKGRldGFpbHM6IFRydXN0ZWRQYXJ0eURldGFpbHMpIHtcbiAgICBsZXQgaGFzTmV3VmFsdWVzID0gZmFsc2U7XG5cbiAgICAvLyBVc2VkIHRvIGJlIGEgZ2V0Q3VycmVudFVzZXIoKSBjYWxsIHdoaWNoIHJldHVybnMgYSBjYWNoZXMgdmVyc2lvbiBvZiB0aGUgY29udGFjdCBjYXJkLlxuICAgIC8vIE5vdyB3ZSBqdXN0IG1ha2UgYW4gQVBJIGNhbGwuIFNvIG9rIHRvIG1vZGlmeSB0aGUgcmV0dXJuZWQgdmFsdWUuXG4gICAgY29uc3QgbWFpbkNvbnRhY3RDYXJkID0gYXdhaXQgdGhpcy5mZXRjaE1haW5Db250YWN0Q2FyZCgpO1xuXG4gICAgaWYgKGRldGFpbHMubmFtZSkge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLmNoZWNrRmllbGQoXG4gICAgICAgIGRldGFpbHMubmFtZSxcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5uYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5uYW1lID0gcHJvcGVydHk7XG4gICAgICAgIGhhc05ld1ZhbHVlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuZW1haWwpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKFxuICAgICAgICBkZXRhaWxzLmVtYWlsLFxuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLmVtYWlsXG4gICAgICApO1xuXG4gICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5lbWFpbCA9IHByb3BlcnR5O1xuICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLmltYWdlKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY2hlY2tGaWVsZChcbiAgICAgICAgZGV0YWlscy5pbWFnZSxcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5pbWFnZVxuICAgICAgKTtcblxuICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMuaW1hZ2UgPSBwcm9wZXJ0eTtcbiAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGV0YWlscy5waG9uZXMgJiYgZGV0YWlscy5waG9uZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IHBob25lIG9mIGRldGFpbHMucGhvbmVzKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKFxuICAgICAgICAgIHBob25lLnZhbHVlLFxuICAgICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMucGhvbmUsXG4gICAgICAgICAgcGhvbmUubGFiZWxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLnBob25lID0gcHJvcGVydHk7XG4gICAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLmFkZHJlc3NlcyAmJiBkZXRhaWxzLmFkZHJlc3Nlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiBkZXRhaWxzLmFkZHJlc3Nlcykge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY2hlY2tGaWVsZChcbiAgICAgICAgICBhZGRyZXNzLnZhbHVlLFxuICAgICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMuYWRkcmVzcyxcbiAgICAgICAgICBhZGRyZXNzLmxhYmVsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5hZGRyZXNzID0gcHJvcGVydHk7XG4gICAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNOZXdWYWx1ZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlRGV0YWlscyhcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmlkLFxuICAgICAgICBtYWluQ29udGFjdENhcmQua2V5SWQsXG4gICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hNYWluQ29udGFjdENhcmQoKTogUHJvbWlzZTxNYWluQ29udGFjdENhcmQgfCBudWxsPiB7XG4gICAgY29uc3QgbWFpbkNvbnRhY3RDYXJkID0gKGF3YWl0IHRoaXMuYXBpLnF1ZXJ5KHsgcXVlcnk6IENvbnRhY3RDYXJkc1F1ZXJ5IH0pKVxuICAgICAgLmNvbnRhY3RDYXJkcy5lZGdlc1swXT8ubm9kZTtcblxuICAgIHJldHVybiBtYWluQ29udGFjdENhcmRcbiAgICAgID8ge1xuICAgICAgICAgIGlkOiBtYWluQ29udGFjdENhcmQuaWQsXG4gICAgICAgICAga2V5SWQ6IG1haW5Db250YWN0Q2FyZC5rZXkuaWQsXG4gICAgICAgICAgZmllbGRzOiBtYWluQ29udGFjdENhcmQuY2lwaGVyRGF0YUNsZWFySnNvbiBhcyBNYWluQ29udGFjdENhcmRGaWVsZHMsXG4gICAgICAgIH1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHJ1c3RlZFBhcnRpZXMoKTogUHJvbWlzZTxUcnVzdGVkUGFydHlbXT4ge1xuICAgIGNvbnN0IHsgdHBzIH0gPSBhd2FpdCB0aGlzLmFwaS5xdWVyeSh7XG4gICAgICBxdWVyeTogVHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXBFZGdlcyh0cHMpLm1hcCgodHApID0+IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHRwKSk7XG4gIH1cblxuICBwcml2YXRlIG1hcFRydXN0ZWRQYXJ0eSh0cDogVHBOb2RlKTogVHJ1c3RlZFBhcnR5IHtcbiAgICBjb25zdCB0cERldGFpbHM6IFRydXN0ZWRQYXJ0eURldGFpbHMgPVxuICAgICAgdHAuc2hhcmVkQ29udGFjdENhcmQuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjtcblxuICAgIGNvbnN0IG15RGV0YWlsczogU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscyA9IHtcbiAgICAgIC4uLnRwLm15Q29udGFjdENhcmQuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIGlkOiB0cC5teUNvbnRhY3RDYXJkLmlkLFxuICAgICAgb3duZWRLZXlJZDogdHAubXlDb250YWN0Q2FyZC5vd25lcktleS5pZCxcbiAgICAgIHNoYXJlZEtleUlkOiB0cC5teUNvbnRhY3RDYXJkLnNoYXJlZEtleS5pZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0cC5pZCxcbiAgICAgIHR5cGU6IFRydXN0ZWRQYXJ0eVR5cGUuVXNlcixcbiAgICAgIGhhc1NjZW5hcmlvczogISF0cC5zaGFyZWRTY2VuYXJpb3MuZWRnZXMubGVuZ3RoLFxuICAgICAgaGFzU2hhcmVkVmF1bHQ6ICEhdHAudGhlaXJJdGVtcy5kaXJlY3Rvcmllcy5lZGdlcy5sZW5ndGgsXG4gICAgICBuYW1lOiB0cERldGFpbHM/Lm5hbWU/Lm5hbWUsXG4gICAgICBkZXRhaWxzOiB0cERldGFpbHMsXG4gICAgICBteVNoYXJlZERldGFpbHM6IG15RGV0YWlscyxcbiAgICAgIHVzZXJTaGFyZWRLZXk6IHRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXksXG4gICAgICB1c2VybmFtZTogdHAub3RoZXIudXNlcm5hbWUsXG4gICAgICBmZWF0dXJlczoge1xuICAgICAgICBzaGFyZWRWYXVsdDoge1xuICAgICAgICAgIGhhc0FjY2VzczpcbiAgICAgICAgICAgICh0cC5vdGhlci5mZWF0dXJlcz8uc2hhcmVWYXVsdCB8fCBbJ25vYWNjZXNzJ10pWzBdID09PSAnYWNjZXNzJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3luY2hyb25pemVDb250YWN0Q2FyZHMoXG4gICAgbmV3RmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHMsXG4gICAgb2xkRmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFvbGRGaWVsZHMpIHJldHVybjtcblxuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmdldENoYW5nZXMobmV3RmllbGRzLCBvbGRGaWVsZHMpO1xuXG4gICAgaWYgKGNoYW5nZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCB0cnVzdGVkUGFydGllcyA9IGF3YWl0IHRoaXMuZ2V0VHJ1c3RlZFBhcnRpZXMoKTtcblxuICAgIGlmICh0cnVzdGVkUGFydGllcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgZGV0YWlscyBvZiB0cnVzdGVkUGFydGllcy5tYXAoKHgpID0+IHgubXlTaGFyZWREZXRhaWxzKSkge1xuICAgICAgYXdhaXQgdGhpcy5zeW5jaHJvbml6ZVNoYXJlZENvbnRhY3RDYXJkKGRldGFpbHMsIGNoYW5nZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2hhbmdlcyhcbiAgICBuZXdGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgICBvbGRGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xuICApOiBGaWVsZENoYW5nZVtdIHtcbiAgICBjb25zdCBjaGFuZ2VzOiBGaWVsZENoYW5nZVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIEZpZWxkTmFtZXMpIHtcbiAgICAgIGNvbnN0IG9sZEZpZWxkID0gb2xkRmllbGRzW2ZpZWxkXTtcbiAgICAgIGlmIChvbGRGaWVsZCAmJiBvbGRGaWVsZC52YWx1ZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBvbGRWYWx1ZSBvZiBvbGRGaWVsZC52YWx1ZXMpIHtcbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IChuZXdGaWVsZHNbZmllbGRdLnZhbHVlcyBhcyBhbnlbXSk/LmZpbmQoXG4gICAgICAgICAgICAoeCkgPT4geC5pZCA9PT0gb2xkVmFsdWUuaWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCFuZXdWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGlkOiBvbGRWYWx1ZS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IG9sZFZhbHVlLmxhYmVsLFxuICAgICAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFfLmlzRXF1YWwobmV3VmFsdWUudmFsdWUsIG9sZFZhbHVlLnZhbHVlKSkge1xuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGlkOiBvbGRWYWx1ZS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IG9sZFZhbHVlLmxhYmVsLFxuICAgICAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZS52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3luY2hyb25pemVTaGFyZWRDb250YWN0Q2FyZChcbiAgICBkZXRhaWxzOiBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzLFxuICAgIGNoYW5nZXM6IEZpZWxkQ2hhbmdlW11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgICBzd2l0Y2ggKGNoYW5nZS5maWVsZCkge1xuICAgICAgICBjYXNlIENvbnRhY3RGaWVsZHMuUGhvbmU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgICBkZXRhaWxzLnBob25lcyAmJlxuICAgICAgICAgICAgICBkZXRhaWxzLnBob25lcy5maW5kKCh4KSA9PiB4LmxhYmVsID09PSBjaGFuZ2UubGFiZWwpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHZhbHVlLnZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb250YWN0RmllbGRzLkFkZHJlc3M6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgICBkZXRhaWxzLmFkZHJlc3NlcyAmJlxuICAgICAgICAgICAgICBkZXRhaWxzLmFkZHJlc3Nlcy5maW5kKCh4KSA9PiB4LmxhYmVsID09PSBjaGFuZ2UubGFiZWwpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHZhbHVlLnZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGV0YWlsc1tjaGFuZ2UuZmllbGRdO1xuXG4gICAgICAgICAgaWYgKF8uaXNFcXVhbCh2YWx1ZSwgY2hhbmdlLm9sZFZhbHVlKSkge1xuICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICBkZXRhaWxzW2NoYW5nZS5maWVsZF0gPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICBjb25zdCB7IGlkLCBvd25lZEtleUlkLCBzaGFyZWRLZXlJZCwgLi4uY29udGFjdENhcmQgfSA9IGRldGFpbHM7XG5cbiAgICAgIGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLnVwZGF0ZU15U2hhcmVkQ29udGFjdENhcmQoXG4gICAgICAgIGlkLFxuICAgICAgICBvd25lZEtleUlkLFxuICAgICAgICBzaGFyZWRLZXlJZCxcbiAgICAgICAgY29udGFjdENhcmRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZpZWxkPFQ+KFxuICAgIGZpZWxkOiBULFxuICAgIHByb3BlcnR5OiBNYWluQ29udGFjdENhcmRQcm9wZXJ0eTxUPixcbiAgICBsYWJlbDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5IHx8IHsgdmFsdWU6IGZpZWxkLCBoYXNNdWx0aXBsZTogZmFsc2UgfTtcbiAgICBwcm9wZXJ0eS52YWx1ZXMgPSBwcm9wZXJ0eS52YWx1ZXMgfHwgW107XG5cbiAgICBpZiAoXG4gICAgICBwcm9wZXJ0eS52YWx1ZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICBwcm9wZXJ0eS52YWx1ZXMuZXZlcnkoKHgpID0+ICFfLmlzRXF1YWwoZmllbGQsIHgudmFsdWUpKVxuICAgICkge1xuICAgICAgcHJvcGVydHkudmFsdWVzLnB1c2goe1xuICAgICAgICBpZDogYCR7bGFiZWx9LSR7bmV3IERhdGUoKS5nZXRUaW1lKCl9YCxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlOiBmaWVsZCxcbiAgICAgIH0pO1xuICAgICAgcHJvcGVydHkuaGFzTXVsdGlwbGUgPSBwcm9wZXJ0eS52YWx1ZXMubGVuZ3RoID4gMTtcbiAgICAgIHByb3BlcnR5LnZhbHVlID0gcHJvcGVydHkudmFsdWUgfHwgZmllbGQ7XG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,114 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import gql from 'graphql-tag';
|
|
3
|
+
import { SharedContactCardFields } from '../shared-contact-card/shared-contact-card.service';
|
|
4
|
+
import { gqlTyped } from '../_common/ast';
|
|
3
5
|
import { KeyGraphFragment } from '../_common/queries.gql';
|
|
6
|
+
export const UserSharedKeyFields = `
|
|
7
|
+
userSigPrk {
|
|
8
|
+
id
|
|
9
|
+
}
|
|
10
|
+
otherSigPbk {
|
|
11
|
+
id
|
|
12
|
+
}
|
|
13
|
+
sharedKey {
|
|
14
|
+
id
|
|
15
|
+
}
|
|
16
|
+
mkSharedKey {
|
|
17
|
+
id
|
|
18
|
+
}
|
|
19
|
+
mkPxk {
|
|
20
|
+
id
|
|
21
|
+
pbk
|
|
22
|
+
}
|
|
23
|
+
mkReshareRequestCipher
|
|
24
|
+
mkReshareResponseCipher
|
|
25
|
+
mkReshareRequestSent
|
|
26
|
+
mkReshareResponseSent
|
|
27
|
+
`;
|
|
28
|
+
export const KeyExchangeFields = `
|
|
29
|
+
id
|
|
30
|
+
token
|
|
31
|
+
state
|
|
32
|
+
mode
|
|
33
|
+
isInitiator
|
|
34
|
+
initiator {
|
|
35
|
+
id
|
|
36
|
+
username
|
|
37
|
+
}
|
|
38
|
+
responder {
|
|
39
|
+
id
|
|
40
|
+
username
|
|
41
|
+
}
|
|
42
|
+
created
|
|
43
|
+
modified
|
|
44
|
+
tokenExpiryTime
|
|
45
|
+
isExpired
|
|
46
|
+
initiatorRootKeyCipher
|
|
47
|
+
initiatorActionRequired
|
|
48
|
+
responderActionRequired
|
|
49
|
+
responderEmailAddress
|
|
50
|
+
otk {
|
|
51
|
+
state
|
|
52
|
+
otKeyParams
|
|
53
|
+
otKeyCipher
|
|
54
|
+
sharedKey {
|
|
55
|
+
id
|
|
56
|
+
}
|
|
57
|
+
mkSharedKey {
|
|
58
|
+
id
|
|
59
|
+
}
|
|
60
|
+
initiatorSigPxk {
|
|
61
|
+
id
|
|
62
|
+
}
|
|
63
|
+
responderSigPxk {
|
|
64
|
+
id
|
|
65
|
+
}
|
|
66
|
+
initiatorOneTimePbkCipher
|
|
67
|
+
responderPbkCipher
|
|
68
|
+
}`;
|
|
69
|
+
export const TrustedPartyProperties = `
|
|
70
|
+
id
|
|
71
|
+
user {
|
|
72
|
+
id
|
|
73
|
+
username
|
|
74
|
+
}
|
|
75
|
+
other{
|
|
76
|
+
id
|
|
77
|
+
username,
|
|
78
|
+
features {
|
|
79
|
+
shareVault
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
sharedContactCard {
|
|
83
|
+
${SharedContactCardFields}
|
|
84
|
+
}
|
|
85
|
+
myContactCard {
|
|
86
|
+
${SharedContactCardFields}
|
|
87
|
+
}
|
|
88
|
+
sharedScenarios {
|
|
89
|
+
edges {
|
|
90
|
+
node {
|
|
91
|
+
id
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
theirItems {
|
|
96
|
+
directories {
|
|
97
|
+
edges {
|
|
98
|
+
node {
|
|
99
|
+
id
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
currentUserSharedKey {
|
|
105
|
+
userSharedKey {
|
|
106
|
+
keyExchange {
|
|
107
|
+
${KeyExchangeFields}
|
|
108
|
+
}
|
|
109
|
+
${UserSharedKeyFields}
|
|
110
|
+
}
|
|
111
|
+
}`;
|
|
4
112
|
export const CurrentUserQuery = gql `
|
|
5
113
|
query {
|
|
6
114
|
currentUser {
|
|
@@ -96,4 +204,29 @@ export const UpdateContactCardMutation = gql `
|
|
|
96
204
|
}
|
|
97
205
|
}
|
|
98
206
|
`;
|
|
99
|
-
|
|
207
|
+
export const TrustedPartiesQuery = gqlTyped `
|
|
208
|
+
query TrustedPartiesQuery {
|
|
209
|
+
tps {
|
|
210
|
+
edges {
|
|
211
|
+
node {
|
|
212
|
+
${TrustedPartyProperties}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}`;
|
|
217
|
+
export const ContactCardsQuery = gqlTyped `
|
|
218
|
+
query ContactCardsQuery {
|
|
219
|
+
contactCards(orderBy: "created") {
|
|
220
|
+
edges {
|
|
221
|
+
node {
|
|
222
|
+
id
|
|
223
|
+
cipherData
|
|
224
|
+
key {
|
|
225
|
+
id
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
`;
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5ncWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRzlCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUkxRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBcUJsQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3Qy9CLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7TUFjaEMsdUJBQXVCOzs7TUFHdkIsdUJBQXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFxQm5CLGlCQUFpQjs7UUFFbkIsbUJBQW1COztJQUV2QixDQUFDO0FBUUwsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBbUUvQixnQkFBZ0I7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O0NBWTNDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7OztDQVkzQyxDQUFDO0FBS0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUEyQjs7Ozs7VUFLNUQsc0JBQXNCOzs7O0VBSTlCLENBQUM7QUFLSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQXlCOzs7Ozs7Ozs7Ozs7OztDQWNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uLCBDb250YWN0Q2FyZE5vZGUsIFRwTm9kZSB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBIYXNLZXlHcmFwaCB9IGZyb20gJy4uL2tleS9rZXkudHlwZXMnO1xuaW1wb3J0IHsgU2hhcmVkQ29udGFjdENhcmRGaWVsZHMgfSBmcm9tICcuLi9zaGFyZWQtY29udGFjdC1jYXJkL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7IEtleUdyYXBoRnJhZ21lbnQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcbmltcG9ydCB7IEhhc0VkZ2VzIH0gZnJvbSAnLi8uLi9fY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IEFwaUNvbnRhY3RDYXJkLCBBcGlDdXJyZW50VXNlciB9IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBVc2VyU2hhcmVkS2V5RmllbGRzID0gYFxuICB1c2VyU2lnUHJrIHtcbiAgICBpZFxuICB9XG4gIG90aGVyU2lnUGJrIHtcbiAgICBpZFxuICB9XG4gIHNoYXJlZEtleSB7XG4gICAgaWRcbiAgfVxuICBta1NoYXJlZEtleSB7XG4gICAgaWRcbiAgfVxuICBta1B4ayB7XG4gICAgaWRcbiAgICBwYmtcbiAgfVxuICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyXG4gIG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyXG4gIG1rUmVzaGFyZVJlcXVlc3RTZW50XG4gIG1rUmVzaGFyZVJlc3BvbnNlU2VudFxuYDtcblxuZXhwb3J0IGNvbnN0IEtleUV4Y2hhbmdlRmllbGRzID0gYFxuICBpZFxuICB0b2tlblxuICBzdGF0ZVxuICBtb2RlXG4gIGlzSW5pdGlhdG9yXG4gIGluaXRpYXRvciB7XG4gICAgaWRcbiAgICB1c2VybmFtZVxuICB9XG4gIHJlc3BvbmRlciB7XG4gICAgaWRcbiAgICB1c2VybmFtZVxuICB9XG4gIGNyZWF0ZWRcbiAgbW9kaWZpZWRcbiAgdG9rZW5FeHBpcnlUaW1lXG4gIGlzRXhwaXJlZFxuICBpbml0aWF0b3JSb290S2V5Q2lwaGVyXG4gIGluaXRpYXRvckFjdGlvblJlcXVpcmVkXG4gIHJlc3BvbmRlckFjdGlvblJlcXVpcmVkXG4gIHJlc3BvbmRlckVtYWlsQWRkcmVzc1xuICBvdGsge1xuICAgIHN0YXRlXG4gICAgb3RLZXlQYXJhbXNcbiAgICBvdEtleUNpcGhlclxuICAgIHNoYXJlZEtleSB7XG4gICAgICBpZFxuICAgIH1cbiAgICBta1NoYXJlZEtleSB7XG4gICAgICBpZFxuICAgIH1cbiAgICBpbml0aWF0b3JTaWdQeGsge1xuICAgICAgaWRcbiAgICB9XG4gICAgcmVzcG9uZGVyU2lnUHhrIHtcbiAgICAgIGlkXG4gICAgfVxuICAgIGluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXJcbiAgICByZXNwb25kZXJQYmtDaXBoZXJcbn1gO1xuXG5leHBvcnQgY29uc3QgVHJ1c3RlZFBhcnR5UHJvcGVydGllcyA9IGBcbiAgaWRcbiAgdXNlciB7XG4gICAgaWRcbiAgICB1c2VybmFtZVxuICB9XG4gIG90aGVye1xuICAgIGlkXG4gICAgdXNlcm5hbWUsXG4gICAgZmVhdHVyZXMge1xuICAgICAgc2hhcmVWYXVsdFxuICAgIH1cbiAgfVxuICBzaGFyZWRDb250YWN0Q2FyZCB7XG4gICAgJHtTaGFyZWRDb250YWN0Q2FyZEZpZWxkc31cbiAgfVxuICBteUNvbnRhY3RDYXJkIHtcbiAgICAke1NoYXJlZENvbnRhY3RDYXJkRmllbGRzfVxuICB9XG4gIHNoYXJlZFNjZW5hcmlvcyB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRoZWlySXRlbXMge1xuICAgIGRpcmVjdG9yaWVzIHtcbiAgICAgIGVkZ2VzIHtcbiAgICAgICAgbm9kZSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjdXJyZW50VXNlclNoYXJlZEtleSB7XG4gICAgdXNlclNoYXJlZEtleSB7XG4gICAgICBrZXlFeGNoYW5nZSB7XG4gICAgICAgICR7S2V5RXhjaGFuZ2VGaWVsZHN9XG4gICAgICB9XG4gICAgICAke1VzZXJTaGFyZWRLZXlGaWVsZHN9XG4gICAgfVxuICB9YDtcblxuZXhwb3J0IGludGVyZmFjZSBDdXJyZW50VXNlclF1ZXJ5VHlwZSBleHRlbmRzIEhhc0tleUdyYXBoIHtcbiAgY3VycmVudFVzZXI6IEFwaUN1cnJlbnRVc2VyO1xuICBjb250YWN0Q2FyZHM6IEhhc0VkZ2VzPEFwaUNvbnRhY3RDYXJkPjtcbiAgdXNlclBsYW5zOiBhbnlbXTtcbn1cblxuZXhwb3J0IGNvbnN0IEN1cnJlbnRVc2VyUXVlcnkgPSBncWxgXG4gIHF1ZXJ5IHtcbiAgICBjdXJyZW50VXNlciB7XG4gICAgICBpZFxuICAgICAgdXNlcm5hbWVcbiAgICAgIGN1cnJlbnRVc2VyS2V5IHtcbiAgICAgICAgcGFzc0tleSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgICBwYXNzS2V5UGFyYW1zXG4gICAgICAgICAgcGFzc0lkcFBhcmFtc1xuICAgICAgICAgIHdyYXBwZWRQYXNzSWRwVmVyaWZpZXJQcmtcbiAgICAgICAgICBjcmVhdGVkXG4gICAgICAgIH1cbiAgICAgICAgbWFzdGVyS2V5IHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICAgIHJvb3RLZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgcHhrIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICAgIHNpZ1B4ayB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdXNlckRlbGV0ZSB7XG4gICAgICAgIGlkXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgICAgc3RhdGVcbiAgICAgIH1cbiAgICAgIGZlYXR1cmVzIHtcbiAgICAgICAgbXlWYXVsdFxuICAgICAgICB0cFZhdWx0XG4gICAgICAgIHNoYXJlVmF1bHRcbiAgICAgIH1cbiAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5XG4gICAgICBkYXRlSm9pbmVkXG4gICAgfVxuICAgIHVzZXJQbGFucyB7XG4gICAgICBpZFxuICAgICAgc3RyaXBlIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uSWRcbiAgICAgIH1cbiAgICAgIHBsYW4ge1xuICAgICAgICBuYW1lXG4gICAgICAgIGRhdGFcbiAgICAgICAgc3RhdGVcbiAgICAgIH1cbiAgICAgIHBlcmlvZEVuZFxuICAgIH1cbiAgICBjb250YWN0Q2FyZHMob3JkZXJCeTogXCJjcmVhdGVkXCIpIHtcbiAgICAgIGVkZ2VzIHtcbiAgICAgICAgbm9kZSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgICBrZXkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICB9XG4gICAgICAgICAgY2lwaGVyRGF0YVxuICAgICAgICAgIHBsYWluRGF0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGtleUdyYXBoIHtcbiAgICAgIC4uLktleUdyYXBoRnJhZ21lbnRcbiAgICB9XG4gIH1cbiAgJHtLZXlHcmFwaEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0ISkge1xuICAgIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGNvbnRhY3RDYXJkIHtcbiAgICAgICAgaWRcbiAgICAgICAga2V5IHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICAgIGNpcGhlckRhdGFcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uKCRpbnB1dDogVXBkYXRlQ29udGFjdENhcmRJbnB1dCEpIHtcbiAgICB1cGRhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgICBjb250YWN0Q2FyZCB7XG4gICAgICAgIGlkXG4gICAgICAgIGtleSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgICBjaXBoZXJEYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRydXN0ZWRQYXJ0aWVzUXVlcnlSZXN1bHQge1xuICB0cHM6IENvbm5lY3Rpb248VHBOb2RlPjtcbn1cbmV4cG9ydCBjb25zdCBUcnVzdGVkUGFydGllc1F1ZXJ5ID0gZ3FsVHlwZWQ8VHJ1c3RlZFBhcnRpZXNRdWVyeVJlc3VsdD5gXG5xdWVyeSBUcnVzdGVkUGFydGllc1F1ZXJ5IHtcbiAgdHBzIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgJHtUcnVzdGVkUGFydHlQcm9wZXJ0aWVzfVxuICAgICAgfVxuICAgIH1cbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmRzUXVlcnlSZXN1bHQge1xuICBjb250YWN0Q2FyZHM6IENvbm5lY3Rpb248Q29udGFjdENhcmROb2RlPjtcbn1cbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZHNRdWVyeSA9IGdxbFR5cGVkPENvbnRhY3RDYXJkc1F1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IENvbnRhY3RDYXJkc1F1ZXJ5IHtcbiAgY29udGFjdENhcmRzKG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgIGlkXG4gICAgICAgIGNpcGhlckRhdGFcbiAgICAgICAga2V5IHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5gO1xuIl19
|
|
@@ -9,7 +9,6 @@ import { KeyGraphService } from '../key/key-graph.service';
|
|
|
9
9
|
import { KeyMetaService } from '../key/key-meta.service';
|
|
10
10
|
import { KeyService } from '../key/key.service';
|
|
11
11
|
import { KC_CONFIG } from '../life-ready.config';
|
|
12
|
-
import { mapUserPlans } from '../plan/plan.service';
|
|
13
12
|
import { CreateContactCardMutation, CurrentUserQuery, UpdateContactCardMutation, } from './profile.gql';
|
|
14
13
|
import { ContactCardName, } from './profile.types';
|
|
15
14
|
import * as i0 from "@angular/core";
|
|
@@ -39,14 +38,13 @@ export class ProfileService {
|
|
|
39
38
|
}
|
|
40
39
|
getCurrentUser() {
|
|
41
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
const { currentUser, contactCards
|
|
41
|
+
const { currentUser, contactCards } = yield this.lrApollo.query({
|
|
43
42
|
query: CurrentUserQuery,
|
|
44
43
|
});
|
|
45
44
|
const contactCard = contactCards.edges.map((x) => x.node)[0];
|
|
46
45
|
return {
|
|
47
46
|
currentUser,
|
|
48
47
|
contactCard,
|
|
49
|
-
userPlans: mapUserPlans(userPlans),
|
|
50
48
|
};
|
|
51
49
|
});
|
|
52
50
|
}
|
|
@@ -61,9 +59,14 @@ export class ProfileService {
|
|
|
61
59
|
}
|
|
62
60
|
updateDetails(id, keyId, fields) {
|
|
63
61
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
yield (id
|
|
62
|
+
const res = yield (id
|
|
65
63
|
? this.updateContactCard(id, keyId, fields)
|
|
66
64
|
: this.createContactCard(fields));
|
|
65
|
+
return {
|
|
66
|
+
fields,
|
|
67
|
+
id: res.id,
|
|
68
|
+
keyId: res.key.id,
|
|
69
|
+
};
|
|
67
70
|
});
|
|
68
71
|
}
|
|
69
72
|
prepareContactCardInput(contactCard) {
|
|
@@ -167,4 +170,4 @@ ProfileService.ctorParameters = () => [
|
|
|
167
170
|
{ type: KeyGraphService },
|
|
168
171
|
{ type: EncryptionService }
|
|
169
172
|
];
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3Byb2ZpbGUvcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixHQUMxQixNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFFaEIseUJBQXlCLEdBQzFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxlQUFlLEdBS2hCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUt6QixNQUFNLE9BQU8sY0FBYztJQUN6QixZQUM2QixNQUFnQixFQUNuQyxJQUFnQixFQUNoQixRQUF5QixFQUN6QixVQUFzQixFQUN0QixjQUE4QixFQUM5QixRQUF5QixFQUN6QixpQkFBb0M7UUFOakIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNuQyxTQUFJ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RSxDQUFDO1FBQ2pCLENBQUM7S0FBQTs7OztZQTVMRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs0Q0FHSSxNQUFNLFNBQUMsU0FBUztZQXBDWixVQUFVO1lBRVYsZUFBZTtZQVNmLFVBQVU7WUFEVixjQUFjO1lBRGQsZUFBZTtZQURmLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQge1xuICBDb250YWN0Q2FyZExpc3RRdWVyeSxcbiAgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbn0gZnJvbSAnLi4vY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5ncWwnO1xuaW1wb3J0IHsgQ29udGFjdENhcmQgfSBmcm9tICcuLi9jb250YWN0LWNhcmQvY29udGFjdC1jYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LW1ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IEtjQ29uZmlnLCBLQ19DT05GSUcgfSBmcm9tICcuLi9saWZlLXJlYWR5LmNvbmZpZyc7XG5pbXBvcnQgeyBtYXBVc2VyUGxhbnMgfSBmcm9tICcuLi9wbGFuL3BsYW4uc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUGxhbiB9IGZyb20gJy4uL3BsYW4vcGxhbi50eXBlcyc7XG5pbXBvcnQge1xuICBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICBDdXJyZW50VXNlclF1ZXJ5LFxuICBDdXJyZW50VXNlclF1ZXJ5VHlwZSxcbiAgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbn0gZnJvbSAnLi9wcm9maWxlLmdxbCc7XG5pbXBvcnQge1xuICBBcGlDb250YWN0Q2FyZCxcbiAgQXBpQ3VycmVudFVzZXIsXG4gIENvbnRhY3RDYXJkTmFtZSxcbiAgTWFpbkNvbnRhY3RDYXJkLFxuICBNYWluQ29udGFjdENhcmRGaWVsZHMsXG4gIE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzLFxuICBQYXNzSWRwQXBpUmVzdWx0LFxufSBmcm9tICcuL3Byb2ZpbGUudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEtDX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEtjQ29uZmlnLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGxyQXBvbGxvOiBMckFwb2xsb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5TWV0YVNlcnZpY2U6IEtleU1ldGFTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgZ2V0UGFzc0lkcFBhcmFtcyhlbWFpbE9yUGhvbmU6IHN0cmluZyk6IFByb21pc2U8UGFzc0lkcEFwaVJlc3VsdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8UGFzc0lkcEFwaVJlc3VsdD4oXG4gICAgICAgIGAke1xuICAgICAgICAgIHRoaXMuY29uZmlnLmF1dGhVcmxcbiAgICAgICAgfXVzZXJzL3Bhc3MtaWRwLXBhcmFtcy8/bG9naW5fbmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChlbWFpbE9yUGhvbmUpfWBcbiAgICAgIClcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyKCk6IFByb21pc2U8e1xuICAgIGN1cnJlbnRVc2VyOiBBcGlDdXJyZW50VXNlcjtcbiAgICBjb250YWN0Q2FyZDogQXBpQ29udGFjdENhcmQ7XG4gICAgdXNlclBsYW5zOiBVc2VyUGxhbltdO1xuICB9PiB7XG4gICAgY29uc3QgeyBjdXJyZW50VXNlciwgY29udGFjdENhcmRzLCB1c2VyUGxhbnMgfSA9XG4gICAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PEN1cnJlbnRVc2VyUXVlcnlUeXBlPih7XG4gICAgICAgIHF1ZXJ5OiBDdXJyZW50VXNlclF1ZXJ5LFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBjb250YWN0Q2FyZCA9IGNvbnRhY3RDYXJkcy5lZGdlcy5tYXAoKHgpID0+IHgubm9kZSlbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFVzZXIsXG4gICAgICBjb250YWN0Q2FyZCxcbiAgICAgIHVzZXJQbGFuczogbWFwVXNlclBsYW5zKHVzZXJQbGFucyksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZChcbiAgICBjb250YWN0Q2FyZDogQXBpQ29udGFjdENhcmRcbiAgKTogUHJvbWlzZTxNYWluQ29udGFjdENhcmQ+IHtcbiAgICBpZiAoIWNvbnRhY3RDYXJkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkZXRhaWxzID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5kZWNyeXB0RnJvbVN0cmluZzxhbnk+KFxuICAgICAgY29udGFjdENhcmQua2V5LmlkLFxuICAgICAgY29udGFjdENhcmQuY2lwaGVyRGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbnRhY3RDYXJkLmlkLFxuICAgICAga2V5SWQ6IGNvbnRhY3RDYXJkLmtleS5pZCxcbiAgICAgIC4uLmRldGFpbHMsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURldGFpbHMoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBrZXlJZDogc3RyaW5nLFxuICAgIGZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChpZFxuICAgICAgPyB0aGlzLnVwZGF0ZUNvbnRhY3RDYXJkKGlkLCBrZXlJZCwgZmllbGRzKVxuICAgICAgOiB0aGlzLmNyZWF0ZUNvbnRhY3RDYXJkKGZpZWxkcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ29udGFjdENhcmRJbnB1dChcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc2lnUHhrID0gdGhpcy5rZXlTZXJ2aWNlLmN1cnJlbnRTaWdQeGs7XG5cbiAgICBjb25zdCBwdWJsaWNEYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgJycpXG4gICAgKTtcbiAgICBjb25zdCBwdWJsaWNTZWFyY2hhYmxlU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgJycpXG4gICAgKTtcblxuICAgIGNvbnN0IHBsYWluRGF0YUpzb246IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzID0ge1xuICAgICAgLy8gY29udGFjdENhcmQubmFtZS52YWx1ZSBtYXkgaGF2ZSBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgc3VjaCBhcyB0aGUgaWQgb2YgdGhlIGNvbnRhY3QgY2FyZC5cbiAgICAgIC8vIFNvIHdlIGNyZWF0ZSBhIGNsZWFuIHZlcnNpb24uIE90aGVyd2lzZSBpdCB3aWxsIGZhaWwgc2VydmVyIGNoZWNrcy5cbiAgICAgIG5hbWU6IG5ldyBDb250YWN0Q2FyZE5hbWUoY29udGFjdENhcmQubmFtZS52YWx1ZSksXG4gICAgfTtcbiAgICBjb25zdCBwbGFpbkRhdGFTaWcgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihzaWdQeGsuandrLCBwbGFpbkRhdGFKc29uKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2lnUHhrSWQ6IHNpZ1B4ay5pZCxcbiAgICAgIHB1YmxpY0RhdGFTaWcsXG4gICAgICBwdWJsaWNTZWFyY2hhYmxlU2lnLFxuICAgICAgcGxhaW5EYXRhU2lnLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNvbnRhY3RDYXJkKFxuICAgIGNvbnRhY3RDYXJkOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTxBcGlDb250YWN0Q2FyZD4ge1xuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChjb250YWN0Q2FyZCk7XG5cbiAgICBjb25zdCB7IHJvb3RLZXksIGNpcGhlck1ldGEgfSA9IGF3YWl0IHRoaXMua2V5TWV0YVNlcnZpY2Uud3JhcENvbnRlbnQoXG4gICAgICBjb250YWN0Q2FyZFxuICAgICk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xuICAgICAgY3JlYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkIH07XG4gICAgfT4oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICBjaXBoZXJEYXRhOiBjaXBoZXJNZXRhLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IHJvb3RLZXkud3JhcHBpbmdLZXlJZCxcbiAgICAgICAgICB3cmFwcGVkS2V5OiByb290S2V5LndyYXBwZWRLZXksXG4gICAgICAgICAgZGVmYXVsdDogdHJ1ZSwgLy8gVXNlIHRoaXMgY29udGFjdCBjYXJkIGFzIGRlZmF1bHQgY29udGFjdCBjYXJkLlxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YS5jcmVhdGVDb250YWN0Q2FyZC5jb250YWN0Q2FyZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ29udGFjdENhcmQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBrZXlJZDogc3RyaW5nLFxuICAgIGNvbnRhY3RDYXJkOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTxBcGlDb250YWN0Q2FyZD4ge1xuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChjb250YWN0Q2FyZCk7XG5cbiAgICBjb25zdCBjaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoa2V5SWQsIGNvbnRhY3RDYXJkKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTx7XG4gICAgICB1cGRhdGVDb250YWN0Q2FyZDogeyBjb250YWN0Q2FyZDogQXBpQ29udGFjdENhcmQgfTtcbiAgICB9Pih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIC4uLmlucHV0LFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIGNpcGhlckRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhLnVwZGF0ZUNvbnRhY3RDYXJkLmNvbnRhY3RDYXJkO1xuICB9XG5cbiAgYXN5bmMgZGVjcnlwdENvbnRhY3RDYXJkRWRnZXMoZWRnZXMpOiBQcm9taXNlPENvbnRhY3RDYXJkW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBlZGdlcy5tYXAoYXN5bmMgKGVkZ2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBjYyA9IGVkZ2Uubm9kZSBhcyBDb250YWN0Q2FyZDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVjcnlwdENvbnRhY3RDYXJkKGNjKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldENvbnRhY3RDYXJkcygpOiBQcm9taXNlPENvbnRhY3RDYXJkW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBDb250YWN0Q2FyZExpc3RRdWVyeSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGRhdGEuY29udGFjdENhcmRzLmVkZ2VzKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUNvbnRhY3RDYXJkKGlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGEuZGVsZXRlQ29udGFjdENhcmQuaWQ7XG4gIH1cblxuICBhc3luYyBzaWduT3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaHR0cFxuICAgICAgLnBvc3QoYCR7dGhpcy5jb25maWcuYXV0aFVybH1hdXRoL3NpZ24tb3V0L2AsIG51bGwsIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3Byb2ZpbGUvcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixHQUMxQixNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGdCQUFnQixFQUVoQix5QkFBeUIsR0FDMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGVBQWUsR0FLaEIsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBS3pCLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQzZCLE1BQWdCLEVBQ25DLElBQWdCLEVBQ2hCLFFBQXlCLEVBQ3pCLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLFFBQXlCLEVBQ3pCLGlCQUFvQztRQU5qQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ25DLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7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TUFBTTthQUNyQixDQUFDO2lCQUNELFNBQVMsRUFBRSxDQUFDO1FBQ2pCLENBQUM7S0FBQTs7OztZQWhNRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs0Q0FHSSxNQUFNLFNBQUMsU0FBUztZQWxDWixVQUFVO1lBRVYsZUFBZTtZQVNmLFVBQVU7WUFEVixjQUFjO1lBRGQsZUFBZTtZQURmLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQge1xuICBDb250YWN0Q2FyZExpc3RRdWVyeSxcbiAgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbn0gZnJvbSAnLi4vY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5ncWwnO1xuaW1wb3J0IHsgQ29udGFjdENhcmQgfSBmcm9tICcuLi9jb250YWN0LWNhcmQvY29udGFjdC1jYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LW1ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IEtjQ29uZmlnLCBLQ19DT05GSUcgfSBmcm9tICcuLi9saWZlLXJlYWR5LmNvbmZpZyc7XG5pbXBvcnQge1xuICBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICBDdXJyZW50VXNlclF1ZXJ5LFxuICBDdXJyZW50VXNlclF1ZXJ5VHlwZSxcbiAgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbn0gZnJvbSAnLi9wcm9maWxlLmdxbCc7XG5pbXBvcnQge1xuICBBcGlDb250YWN0Q2FyZCxcbiAgQXBpQ3VycmVudFVzZXIsXG4gIENvbnRhY3RDYXJkTmFtZSxcbiAgTWFpbkNvbnRhY3RDYXJkLFxuICBNYWluQ29udGFjdENhcmRGaWVsZHMsXG4gIE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzLFxuICBQYXNzSWRwQXBpUmVzdWx0LFxufSBmcm9tICcuL3Byb2ZpbGUudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEtDX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEtjQ29uZmlnLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGxyQXBvbGxvOiBMckFwb2xsb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5TWV0YVNlcnZpY2U6IEtleU1ldGFTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgZ2V0UGFzc0lkcFBhcmFtcyhlbWFpbE9yUGhvbmU6IHN0cmluZyk6IFByb21pc2U8UGFzc0lkcEFwaVJlc3VsdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8UGFzc0lkcEFwaVJlc3VsdD4oXG4gICAgICAgIGAke1xuICAgICAgICAgIHRoaXMuY29uZmlnLmF1dGhVcmxcbiAgICAgICAgfXVzZXJzL3Bhc3MtaWRwLXBhcmFtcy8/bG9naW5fbmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChlbWFpbE9yUGhvbmUpfWBcbiAgICAgIClcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyKCk6IFByb21pc2U8e1xuICAgIGN1cnJlbnRVc2VyOiBBcGlDdXJyZW50VXNlcjtcbiAgICBjb250YWN0Q2FyZDogQXBpQ29udGFjdENhcmQ7XG4gIH0+IHtcbiAgICBjb25zdCB7IGN1cnJlbnRVc2VyLCBjb250YWN0Q2FyZHMgfSA9XG4gICAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PEN1cnJlbnRVc2VyUXVlcnlUeXBlPih7XG4gICAgICAgIHF1ZXJ5OiBDdXJyZW50VXNlclF1ZXJ5LFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBjb250YWN0Q2FyZCA9IGNvbnRhY3RDYXJkcy5lZGdlcy5tYXAoKHgpID0+IHgubm9kZSlbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFVzZXIsXG4gICAgICBjb250YWN0Q2FyZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGVjcnlwdENvbnRhY3RDYXJkKFxuICAgIGNvbnRhY3RDYXJkOiBBcGlDb250YWN0Q2FyZFxuICApOiBQcm9taXNlPE1haW5Db250YWN0Q2FyZD4ge1xuICAgIGlmICghY29udGFjdENhcmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGRldGFpbHMgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmRlY3J5cHRGcm9tU3RyaW5nPGFueT4oXG4gICAgICBjb250YWN0Q2FyZC5rZXkuaWQsXG4gICAgICBjb250YWN0Q2FyZC5jaXBoZXJEYXRhXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogY29udGFjdENhcmQuaWQsXG4gICAgICBrZXlJZDogY29udGFjdENhcmQua2V5LmlkLFxuICAgICAgLi4uZGV0YWlscyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGV0YWlscyhcbiAgICBpZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgZmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTxNYWluQ29udGFjdENhcmQ+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCAoaWRcbiAgICAgID8gdGhpcy51cGRhdGVDb250YWN0Q2FyZChpZCwga2V5SWQsIGZpZWxkcylcbiAgICAgIDogdGhpcy5jcmVhdGVDb250YWN0Q2FyZChmaWVsZHMpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWVsZHMsXG4gICAgICBpZDogcmVzLmlkLFxuICAgICAga2V5SWQ6IHJlcy5rZXkuaWQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoXG4gICAgY29udGFjdENhcmQ6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHNpZ1B4ayA9IHRoaXMua2V5U2VydmljZS5jdXJyZW50U2lnUHhrO1xuXG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssICcnKVxuICAgICk7XG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssICcnKVxuICAgICk7XG5cbiAgICBjb25zdCBwbGFpbkRhdGFKc29uOiBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcyA9IHtcbiAgICAgIC8vIGNvbnRhY3RDYXJkLm5hbWUudmFsdWUgbWF5IGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHN1Y2ggYXMgdGhlIGlkIG9mIHRoZSBjb250YWN0IGNhcmQuXG4gICAgICAvLyBTbyB3ZSBjcmVhdGUgYSBjbGVhbiB2ZXJzaW9uLiBPdGhlcndpc2UgaXQgd2lsbCBmYWlsIHNlcnZlciBjaGVja3MuXG4gICAgICBuYW1lOiBuZXcgQ29udGFjdENhcmROYW1lKGNvbnRhY3RDYXJkLm5hbWUudmFsdWUpLFxuICAgIH07XG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgcGxhaW5EYXRhSnNvbilcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNpZ1B4a0lkOiBzaWdQeGsuaWQsXG4gICAgICBwdWJsaWNEYXRhU2lnLFxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcbiAgICAgIHBsYWluRGF0YVNpZyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDb250YWN0Q2FyZChcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8QXBpQ29udGFjdENhcmQ+IHtcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoY29udGFjdENhcmQpO1xuXG4gICAgY29uc3QgeyByb290S2V5LCBjaXBoZXJNZXRhIH0gPSBhd2FpdCB0aGlzLmtleU1ldGFTZXJ2aWNlLndyYXBDb250ZW50KFxuICAgICAgY29udGFjdENhcmRcbiAgICApO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcbiAgICAgIGNyZWF0ZUNvbnRhY3RDYXJkOiB7IGNvbnRhY3RDYXJkOiBBcGlDb250YWN0Q2FyZCB9O1xuICAgIH0+KHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgY2lwaGVyRGF0YTogY2lwaGVyTWV0YSxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LndyYXBwaW5nS2V5SWQsXG4gICAgICAgICAgd3JhcHBlZEtleTogcm9vdEtleS53cmFwcGVkS2V5LFxuICAgICAgICAgIGRlZmF1bHQ6IHRydWUsIC8vIFVzZSB0aGlzIGNvbnRhY3QgY2FyZCBhcyBkZWZhdWx0IGNvbnRhY3QgY2FyZC5cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGEuY3JlYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNvbnRhY3RDYXJkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8QXBpQ29udGFjdENhcmQ+IHtcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoY29udGFjdENhcmQpO1xuXG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKGtleUlkLCBjb250YWN0Q2FyZCk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xuICAgICAgdXBkYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkIH07XG4gICAgfT4oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjaXBoZXJEYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YS51cGRhdGVDb250YWN0Q2FyZC5jb250YWN0Q2FyZDtcbiAgfVxuXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGVkZ2VzKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZWRnZXMubWFwKGFzeW5jIChlZGdlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY2MgPSBlZGdlLm5vZGUgYXMgQ29udGFjdENhcmQ7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZChjYyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0Q2FyZHMoKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogQ29udGFjdENhcmRMaXN0UXVlcnksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmRFZGdlcyhkYXRhLmNvbnRhY3RDYXJkcy5lZGdlcyk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb250YWN0Q2FyZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLmRlbGV0ZUNvbnRhY3RDYXJkLmlkO1xuICB9XG5cbiAgYXN5bmMgc2lnbk91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3RoaXMuY29uZmlnLmF1dGhVcmx9YXV0aC9zaWduLW91dC9gLCBudWxsLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICB9KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG59XG4iXX0=
|