@lifeready/core 8.0.11 → 8.0.12
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 +44 -20
- 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/_common/exceptions.js +4 -1
- package/esm2015/lib/_common/index.js +3 -0
- package/esm2015/lib/_common/kc-lodash.js +11 -0
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +2 -2
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +2 -2
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +2 -2
- package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
- package/esm2015/lib/auth/auth.service.js +12 -5
- package/esm2015/lib/key/key-graph.service.js +5 -5
- package/esm2015/lib/profile/profile-details.service.js +5 -5
- package/esm2015/lib/scenario/scenario.service.js +3 -1
- package/esm2015/lib/scenario/scenario.types.js +1 -1
- package/fesm2015/lifeready-core.js +32 -16
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/exceptions.d.ts +1 -0
- package/lib/_common/index.d.ts +2 -0
- package/lib/_common/kc-lodash.d.ts +5 -0
- package/lib/api/types/lr-graphql.types.d.ts +1 -0
- package/lib/scenario/scenario.service.d.ts +3 -0
- package/lib/scenario/scenario.types.d.ts +2 -0
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __awaiter, __rest } from "tslib";
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
|
-
import _ from 'lodash';
|
|
5
4
|
import { LrGraphQLService } from '../api/lr-graphql';
|
|
6
5
|
import { mapEdges } from '../api/types';
|
|
7
6
|
import { SharedContactCardService } from '../shared-contact-card/shared-contact-card.service';
|
|
7
|
+
import { lodash } from '../_common';
|
|
8
8
|
import { ContactCardsQuery, TrustedPartiesQuery } from './profile.gql';
|
|
9
9
|
import { ProfileService } from './profile.service';
|
|
10
10
|
import { TrustedPartyType, } from './profile.types';
|
|
@@ -176,7 +176,7 @@ export class ProfileDetailsService {
|
|
|
176
176
|
oldValue: oldValue.value,
|
|
177
177
|
});
|
|
178
178
|
}
|
|
179
|
-
else if (!
|
|
179
|
+
else if (!lodash.isEqual(newValue.value, oldValue.value)) {
|
|
180
180
|
changes.push({
|
|
181
181
|
field,
|
|
182
182
|
id: oldValue.id,
|
|
@@ -217,7 +217,7 @@ export class ProfileDetailsService {
|
|
|
217
217
|
break;
|
|
218
218
|
default: {
|
|
219
219
|
const value = details[change.field];
|
|
220
|
-
if (
|
|
220
|
+
if (lodash.isEqual(value, change.oldValue)) {
|
|
221
221
|
hasChanged = true;
|
|
222
222
|
details[change.field] = change.newValue;
|
|
223
223
|
}
|
|
@@ -234,7 +234,7 @@ export class ProfileDetailsService {
|
|
|
234
234
|
property = property || { value: field, hasMultiple: false };
|
|
235
235
|
property.values = property.values || [];
|
|
236
236
|
if (property.values.length === 0 ||
|
|
237
|
-
property.values.every((x) => !
|
|
237
|
+
property.values.every((x) => !lodash.isEqual(field, x.value))) {
|
|
238
238
|
property.values.push({
|
|
239
239
|
id: `${label}-${new Date().getTime()}`,
|
|
240
240
|
label,
|
|
@@ -258,4 +258,4 @@ ProfileDetailsService.ctorParameters = () => [
|
|
|
258
258
|
{ type: ProfileService },
|
|
259
259
|
{ type: LrGraphQLService }
|
|
260
260
|
];
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1kZXRhaWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLWRldGFpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQVUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBT0wsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRXpCLElBQUssYUFNSjtBQU5ELFdBQUssYUFBYTtJQUNoQiw4QkFBYSxDQUFBO0lBQ2IsZ0NBQWUsQ0FBQTtJQUNmLGdDQUFlLENBQUE7SUFDZixnQ0FBZSxDQUFBO0lBQ2Ysb0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQU5JLGFBQWEsS0FBYixhQUFhLFFBTWpCO0FBRUQsTUFBTSxVQUFVLEdBQUc7SUFDakIsYUFBYSxDQUFDLElBQUk7SUFDbEIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLEtBQUs7SUFDbkIsYUFBYSxDQUFDLE9BQU87Q0FDdEIsQ0FBQztBQWFGLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDVSx3QkFBa0QsRUFDbEQsY0FBOEIsRUFDOUIsR0FBcUI7UUFGckIsNkJB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YztZQUpkLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBMckdyYXBoUUxTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgbWFwRWRnZXMsIFRwTm9kZSB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQtY29udGFjdC1jYXJkL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250YWN0Q2FyZHNRdWVyeSwgVHJ1c3RlZFBhcnRpZXNRdWVyeSB9IGZyb20gJy4vcHJvZmlsZS5ncWwnO1xuaW1wb3J0IHsgUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBNYWluQ29udGFjdENhcmQsXG4gIE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgTWFpbkNvbnRhY3RDYXJkUHJvcGVydHksXG4gIFNoYXJlZFRydXN0ZWRQYXJ0eURldGFpbHMsXG4gIFRydXN0ZWRQYXJ0eSxcbiAgVHJ1c3RlZFBhcnR5RGV0YWlscyxcbiAgVHJ1c3RlZFBhcnR5VHlwZSxcbn0gZnJvbSAnLi9wcm9maWxlLnR5cGVzJztcblxuZW51bSBDb250YWN0RmllbGRzIHtcbiAgTmFtZSA9ICduYW1lJyxcbiAgRW1haWwgPSAnZW1haWwnLFxuICBJbWFnZSA9ICdpbWFnZScsXG4gIFBob25lID0gJ3Bob25lJyxcbiAgQWRkcmVzcyA9ICdhZGRyZXNzJyxcbn1cblxuY29uc3QgRmllbGROYW1lcyA9IFtcbiAgQ29udGFjdEZpZWxkcy5OYW1lLFxuICBDb250YWN0RmllbGRzLkVtYWlsLFxuICBDb250YWN0RmllbGRzLkltYWdlLFxuICBDb250YWN0RmllbGRzLlBob25lLFxuICBDb250YWN0RmllbGRzLkFkZHJlc3MsXG5dO1xuXG5pbnRlcmZhY2UgRmllbGRDaGFuZ2Uge1xuICBmaWVsZDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBvbGRWYWx1ZT86IGFueTtcbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlRGV0YWlsc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNoYXJlZENvbnRhY3RDYXJkU2VydmljZTogU2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBpOiBMckdyYXBoUUxTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyB1cGRhdGVEZXRhaWxzKGZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzKTogUHJvbWlzZTxNYWluQ29udGFjdENhcmQ+IHtcbiAgICBjb25zb2xlLmxvZygndXBkYXRlRGV0YWlscygpJyk7XG4gICAgY29uc3QgbWFpbkNvbnRhY3RDYXJkID0gYXdhaXQgdGhpcy5mZXRjaE1haW5Db250YWN0Q2FyZCgpO1xuXG4gICAgY29uc3QgdXBkYXRlZE1haW5Db250YWN0Q2FyZCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlRGV0YWlscyhcbiAgICAgIG1haW5Db250YWN0Q2FyZD8uaWQsXG4gICAgICBtYWluQ29udGFjdENhcmQ/LmtleUlkLFxuICAgICAgZmllbGRzXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuc3luY2hyb25pemVDb250YWN0Q2FyZHMoZmllbGRzLCBtYWluQ29udGFjdENhcmQ/LmZpZWxkcyk7XG5cbiAgICByZXR1cm4gdXBkYXRlZE1haW5Db250YWN0Q2FyZDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVRydXN0ZWRQYXJ0eURldGFpbHMoZGV0YWlsczogU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscykge1xuICAgIGNvbnN0IHsgaWQsIG93bmVkS2V5SWQsIHNoYXJlZEtleUlkLCAuLi5jb250YWN0Q2FyZCB9ID0gZGV0YWlscztcblxuICAgIGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLnVwZGF0ZU15U2hhcmVkQ29udGFjdENhcmQoXG4gICAgICBpZCxcbiAgICAgIG93bmVkS2V5SWQsXG4gICAgICBzaGFyZWRLZXlJZCxcbiAgICAgIGNvbnRhY3RDYXJkXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuc3luY2hyb25pemVTaGFyZWREZXRhaWxzKGRldGFpbHMpO1xuICB9XG5cbiAgYXN5bmMgc3luY2hyb25pemVTaGFyZWREZXRhaWxzKGRldGFpbHM6IFRydXN0ZWRQYXJ0eURldGFpbHMpIHtcbiAgICBsZXQgaGFzTmV3VmFsdWVzID0gZmFsc2U7XG5cbiAgICAvLyBVc2VkIHRvIGJlIGEgZ2V0Q3VycmVudFVzZXIoKSBjYWxsIHdoaWNoIHJldHVybnMgYSBjYWNoZXMgdmVyc2lvbiBvZiB0aGUgY29udGFjdCBjYXJkLlxuICAgIC8vIE5vdyB3ZSBqdXN0IG1ha2UgYW4gQVBJIGNhbGwuIFNvIG9rIHRvIG1vZGlmeSB0aGUgcmV0dXJuZWQgdmFsdWUuXG4gICAgY29uc3QgbWFpbkNvbnRhY3RDYXJkID0gYXdhaXQgdGhpcy5mZXRjaE1haW5Db250YWN0Q2FyZCgpO1xuXG4gICAgaWYgKGRldGFpbHMubmFtZSkge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLmNoZWNrRmllbGQoXG4gICAgICAgIGRldGFpbHMubmFtZSxcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5uYW1lXG4gICAgICApO1xuXG4gICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5uYW1lID0gcHJvcGVydHk7XG4gICAgICAgIGhhc05ld1ZhbHVlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuZW1haWwpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKFxuICAgICAgICBkZXRhaWxzLmVtYWlsLFxuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLmVtYWlsXG4gICAgICApO1xuXG4gICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5lbWFpbCA9IHByb3BlcnR5O1xuICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLmltYWdlKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY2hlY2tGaWVsZChcbiAgICAgICAgZGV0YWlscy5pbWFnZSxcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5pbWFnZVxuICAgICAgKTtcblxuICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMuaW1hZ2UgPSBwcm9wZXJ0eTtcbiAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGV0YWlscy5waG9uZXMgJiYgZGV0YWlscy5waG9uZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IHBob25lIG9mIGRldGFpbHMucGhvbmVzKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKFxuICAgICAgICAgIHBob25lLnZhbHVlLFxuICAgICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMucGhvbmUsXG4gICAgICAgICAgcGhvbmUubGFiZWxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLnBob25lID0gcHJvcGVydHk7XG4gICAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLmFkZHJlc3NlcyAmJiBkZXRhaWxzLmFkZHJlc3Nlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiBkZXRhaWxzLmFkZHJlc3Nlcykge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY2hlY2tGaWVsZChcbiAgICAgICAgICBhZGRyZXNzLnZhbHVlLFxuICAgICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMuYWRkcmVzcyxcbiAgICAgICAgICBhZGRyZXNzLmxhYmVsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5hZGRyZXNzID0gcHJvcGVydHk7XG4gICAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNOZXdWYWx1ZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlRGV0YWlscyhcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmlkLFxuICAgICAgICBtYWluQ29udGFjdENhcmQua2V5SWQsXG4gICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hNYWluQ29udGFjdENhcmQoKTogUHJvbWlzZTxNYWluQ29udGFjdENhcmQgfCBudWxsPiB7XG4gICAgY29uc3QgbWFpbkNvbnRhY3RDYXJkID0gKGF3YWl0IHRoaXMuYXBpLnF1ZXJ5KHsgcXVlcnk6IENvbnRhY3RDYXJkc1F1ZXJ5IH0pKVxuICAgICAgLmNvbnRhY3RDYXJkcy5lZGdlc1swXT8ubm9kZTtcblxuICAgIHJldHVybiBtYWluQ29udGFjdENhcmRcbiAgICAgID8ge1xuICAgICAgICAgIGlkOiBtYWluQ29udGFjdENhcmQuaWQsXG4gICAgICAgICAga2V5SWQ6IG1haW5Db250YWN0Q2FyZC5rZXkuaWQsXG4gICAgICAgICAgZmllbGRzOiBtYWluQ29udGFjdENhcmQuY2lwaGVyRGF0YUNsZWFySnNvbiBhcyBNYWluQ29udGFjdENhcmRGaWVsZHMsXG4gICAgICAgIH1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHJ1c3RlZFBhcnRpZXMoKTogUHJvbWlzZTxUcnVzdGVkUGFydHlbXT4ge1xuICAgIGNvbnN0IHsgdHBzIH0gPSBhd2FpdCB0aGlzLmFwaS5xdWVyeSh7XG4gICAgICBxdWVyeTogVHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXBFZGdlcyh0cHMpLm1hcCgodHApID0+IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHRwKSk7XG4gIH1cblxuICBwcml2YXRlIG1hcFRydXN0ZWRQYXJ0eSh0cDogVHBOb2RlKTogVHJ1c3RlZFBhcnR5IHtcbiAgICBjb25zdCB0cERldGFpbHM6IFRydXN0ZWRQYXJ0eURldGFpbHMgPVxuICAgICAgdHAuc2hhcmVkQ29udGFjdENhcmQuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbjtcblxuICAgIGNvbnN0IG15RGV0YWlsczogU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscyA9IHtcbiAgICAgIC4uLnRwLm15Q29udGFjdENhcmQuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIGlkOiB0cC5teUNvbnRhY3RDYXJkLmlkLFxuICAgICAgb3duZWRLZXlJZDogdHAubXlDb250YWN0Q2FyZC5vd25lcktleS5pZCxcbiAgICAgIHNoYXJlZEtleUlkOiB0cC5teUNvbnRhY3RDYXJkLnNoYXJlZEtleS5pZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0cC5pZCxcbiAgICAgIHR5cGU6IFRydXN0ZWRQYXJ0eVR5cGUuVXNlcixcbiAgICAgIGhhc1NjZW5hcmlvczogISF0cC5zaGFyZWRTY2VuYXJpb3MuZWRnZXMubGVuZ3RoLFxuICAgICAgaGFzU2hhcmVkVmF1bHQ6ICEhdHAudGhlaXJJdGVtcy5kaXJlY3Rvcmllcy5lZGdlcy5sZW5ndGgsXG4gICAgICBuYW1lOiB0cERldGFpbHM/Lm5hbWU/Lm5hbWUsXG4gICAgICBkZXRhaWxzOiB0cERldGFpbHMsXG4gICAgICBteVNoYXJlZERldGFpbHM6IG15RGV0YWlscyxcbiAgICAgIHVzZXJTaGFyZWRLZXk6IHRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXksXG4gICAgICB1c2VybmFtZTogdHAub3RoZXIudXNlcm5hbWUsXG4gICAgICBmZWF0dXJlczoge1xuICAgICAgICBzaGFyZWRWYXVsdDoge1xuICAgICAgICAgIGhhc0FjY2VzczpcbiAgICAgICAgICAgICh0cC5vdGhlci5mZWF0dXJlcz8uc2hhcmVWYXVsdCB8fCBbJ25vYWNjZXNzJ10pWzBdID09PSAnYWNjZXNzJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3luY2hyb25pemVDb250YWN0Q2FyZHMoXG4gICAgbmV3RmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHMsXG4gICAgb2xkRmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFvbGRGaWVsZHMpIHJldHVybjtcblxuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmdldENoYW5nZXMobmV3RmllbGRzLCBvbGRGaWVsZHMpO1xuXG4gICAgaWYgKGNoYW5nZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCB0cnVzdGVkUGFydGllcyA9IGF3YWl0IHRoaXMuZ2V0VHJ1c3RlZFBhcnRpZXMoKTtcblxuICAgIGlmICh0cnVzdGVkUGFydGllcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgZGV0YWlscyBvZiB0cnVzdGVkUGFydGllcy5tYXAoKHgpID0+IHgubXlTaGFyZWREZXRhaWxzKSkge1xuICAgICAgYXdhaXQgdGhpcy5zeW5jaHJvbml6ZVNoYXJlZENvbnRhY3RDYXJkKGRldGFpbHMsIGNoYW5nZXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2hhbmdlcyhcbiAgICBuZXdGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgICBvbGRGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xuICApOiBGaWVsZENoYW5nZVtdIHtcbiAgICBjb25zdCBjaGFuZ2VzOiBGaWVsZENoYW5nZVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIEZpZWxkTmFtZXMpIHtcbiAgICAgIGNvbnN0IG9sZEZpZWxkID0gb2xkRmllbGRzW2ZpZWxkXTtcbiAgICAgIGlmIChvbGRGaWVsZCAmJiBvbGRGaWVsZC52YWx1ZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBvbGRWYWx1ZSBvZiBvbGRGaWVsZC52YWx1ZXMpIHtcbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IChuZXdGaWVsZHNbZmllbGRdLnZhbHVlcyBhcyBhbnlbXSk/LmZpbmQoXG4gICAgICAgICAgICAoeCkgPT4geC5pZCA9PT0gb2xkVmFsdWUuaWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCFuZXdWYWx1ZSkge1xuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGlkOiBvbGRWYWx1ZS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IG9sZFZhbHVlLmxhYmVsLFxuICAgICAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFfLmlzRXF1YWwobmV3VmFsdWUudmFsdWUsIG9sZFZhbHVlLnZhbHVlKSkge1xuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGlkOiBvbGRWYWx1ZS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IG9sZFZhbHVlLmxhYmVsLFxuICAgICAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZS52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3luY2hyb25pemVTaGFyZWRDb250YWN0Q2FyZChcbiAgICBkZXRhaWxzOiBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzLFxuICAgIGNoYW5nZXM6IEZpZWxkQ2hhbmdlW11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgICBzd2l0Y2ggKGNoYW5nZS5maWVsZCkge1xuICAgICAgICBjYXNlIENvbnRhY3RGaWVsZHMuUGhvbmU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgICBkZXRhaWxzLnBob25lcyAmJlxuICAgICAgICAgICAgICBkZXRhaWxzLnBob25lcy5maW5kKCh4KSA9PiB4LmxhYmVsID09PSBjaGFuZ2UubGFiZWwpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHZhbHVlLnZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBDb250YWN0RmllbGRzLkFkZHJlc3M6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgICBkZXRhaWxzLmFkZHJlc3NlcyAmJlxuICAgICAgICAgICAgICBkZXRhaWxzLmFkZHJlc3Nlcy5maW5kKCh4KSA9PiB4LmxhYmVsID09PSBjaGFuZ2UubGFiZWwpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHZhbHVlLnZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGV0YWlsc1tjaGFuZ2UuZmllbGRdO1xuXG4gICAgICAgICAgaWYgKF8uaXNFcXVhbCh2YWx1ZSwgY2hhbmdlLm9sZFZhbHVlKSkge1xuICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICBkZXRhaWxzW2NoYW5nZS5maWVsZF0gPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICBjb25zdCB7IGlkLCBvd25lZEtleUlkLCBzaGFyZWRLZXlJZCwgLi4uY29udGFjdENhcmQgfSA9IGRldGFpbHM7XG5cbiAgICAgIGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLnVwZGF0ZU15U2hhcmVkQ29udGFjdENhcmQoXG4gICAgICAgIGlkLFxuICAgICAgICBvd25lZEtleUlkLFxuICAgICAgICBzaGFyZWRLZXlJZCxcbiAgICAgICAgY29udGFjdENhcmRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZpZWxkPFQ+KFxuICAgIGZpZWxkOiBULFxuICAgIHByb3BlcnR5OiBNYWluQ29udGFjdENhcmRQcm9wZXJ0eTxUPixcbiAgICBsYWJlbDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5IHx8IHsgdmFsdWU6IGZpZWxkLCBoYXNNdWx0aXBsZTogZmFsc2UgfTtcbiAgICBwcm9wZXJ0eS52YWx1ZXMgPSBwcm9wZXJ0eS52YWx1ZXMgfHwgW107XG5cbiAgICBpZiAoXG4gICAgICBwcm9wZXJ0eS52YWx1ZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICBwcm9wZXJ0eS52YWx1ZXMuZXZlcnkoKHgpID0+ICFfLmlzRXF1YWwoZmllbGQsIHgudmFsdWUpKVxuICAgICkge1xuICAgICAgcHJvcGVydHkudmFsdWVzLnB1c2goe1xuICAgICAgICBpZDogYCR7bGFiZWx9LSR7bmV3IERhdGUoKS5nZXRUaW1lKCl9YCxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlOiBmaWVsZCxcbiAgICAgIH0pO1xuICAgICAgcHJvcGVydHkuaGFzTXVsdGlwbGUgPSBwcm9wZXJ0eS52YWx1ZXMubGVuZ3RoID4gMTtcbiAgICAgIHByb3BlcnR5LnZhbHVlID0gcHJvcGVydHkudmFsdWUgfHwgZmllbGQ7XG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1kZXRhaWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLWRldGFpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBVSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQU9MLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDOzs7OztBQUV6QixJQUFLLGFBTUo7QUFORCxXQUFLLGFBQWE7SUFDaEIsOEJBQWEsQ0FBQTtJQUNiLGdDQUFlLENBQUE7SUFDZixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtJQUNmLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFOSSxhQUFhLEtBQWIsYUFBYSxRQU1qQjtBQUVELE1BQU0sVUFBVSxHQUFHO0lBQ2pCLGFBQWEsQ0FBQyxJQUFJO0lBQ2xCLGFBQWEsQ0FBQyxLQUFLO0lBQ25CLGFBQWEsQ0FBQyxLQUFLO0lBQ25CLGFBQWEsQ0FBQyxLQUFLO0lBQ25CLGFBQWEsQ0FBQyxPQUFPO0NBQ3RCLENBQUM7QUFhRixNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1Usd0JBQWtELEVBQ2xELGNBQThCLEVBQzlCLEdBQXFC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O1lBR3hCLGNBQWM7WUFMZCxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMckdyYXBoUUxTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgbWFwRWRnZXMsIFRwTm9kZSB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQtY29udGFjdC1jYXJkL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBsb2Rhc2ggfSBmcm9tICcuLi9fY29tbW9uJztcbmltcG9ydCB7IENvbnRhY3RDYXJkc1F1ZXJ5LCBUcnVzdGVkUGFydGllc1F1ZXJ5IH0gZnJvbSAnLi9wcm9maWxlLmdxbCc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4vcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1haW5Db250YWN0Q2FyZCxcbiAgTWFpbkNvbnRhY3RDYXJkRmllbGRzLFxuICBNYWluQ29udGFjdENhcmRQcm9wZXJ0eSxcbiAgU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscyxcbiAgVHJ1c3RlZFBhcnR5LFxuICBUcnVzdGVkUGFydHlEZXRhaWxzLFxuICBUcnVzdGVkUGFydHlUeXBlLFxufSBmcm9tICcuL3Byb2ZpbGUudHlwZXMnO1xuXG5lbnVtIENvbnRhY3RGaWVsZHMge1xuICBOYW1lID0gJ25hbWUnLFxuICBFbWFpbCA9ICdlbWFpbCcsXG4gIEltYWdlID0gJ2ltYWdlJyxcbiAgUGhvbmUgPSAncGhvbmUnLFxuICBBZGRyZXNzID0gJ2FkZHJlc3MnLFxufVxuXG5jb25zdCBGaWVsZE5hbWVzID0gW1xuICBDb250YWN0RmllbGRzLk5hbWUsXG4gIENvbnRhY3RGaWVsZHMuRW1haWwsXG4gIENvbnRhY3RGaWVsZHMuSW1hZ2UsXG4gIENvbnRhY3RGaWVsZHMuUGhvbmUsXG4gIENvbnRhY3RGaWVsZHMuQWRkcmVzcyxcbl07XG5cbmludGVyZmFjZSBGaWVsZENoYW5nZSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9sZFZhbHVlPzogYW55O1xuICBuZXdWYWx1ZT86IGFueTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVEZXRhaWxzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlOiBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGk6IExyR3JhcGhRTFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIHVwZGF0ZURldGFpbHMoZmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHMpOiBQcm9taXNlPE1haW5Db250YWN0Q2FyZD4ge1xuICAgIGNvbnNvbGUubG9nKCd1cGRhdGVEZXRhaWxzKCknKTtcbiAgICBjb25zdCBtYWluQ29udGFjdENhcmQgPSBhd2FpdCB0aGlzLmZldGNoTWFpbkNvbnRhY3RDYXJkKCk7XG5cbiAgICBjb25zdCB1cGRhdGVkTWFpbkNvbnRhY3RDYXJkID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVEZXRhaWxzKFxuICAgICAgbWFpbkNvbnRhY3RDYXJkPy5pZCxcbiAgICAgIG1haW5Db250YWN0Q2FyZD8ua2V5SWQsXG4gICAgICBmaWVsZHNcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5zeW5jaHJvbml6ZUNvbnRhY3RDYXJkcyhmaWVsZHMsIG1haW5Db250YWN0Q2FyZD8uZmllbGRzKTtcblxuICAgIHJldHVybiB1cGRhdGVkTWFpbkNvbnRhY3RDYXJkO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVHJ1c3RlZFBhcnR5RGV0YWlscyhkZXRhaWxzOiBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzKSB7XG4gICAgY29uc3QgeyBpZCwgb3duZWRLZXlJZCwgc2hhcmVkS2V5SWQsIC4uLmNvbnRhY3RDYXJkIH0gPSBkZXRhaWxzO1xuXG4gICAgYXdhaXQgdGhpcy5zaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UudXBkYXRlTXlTaGFyZWRDb250YWN0Q2FyZChcbiAgICAgIGlkLFxuICAgICAgb3duZWRLZXlJZCxcbiAgICAgIHNoYXJlZEtleUlkLFxuICAgICAgY29udGFjdENhcmRcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5zeW5jaHJvbml6ZVNoYXJlZERldGFpbHMoZGV0YWlscyk7XG4gIH1cblxuICBhc3luYyBzeW5jaHJvbml6ZVNoYXJlZERldGFpbHMoZGV0YWlsczogVHJ1c3RlZFBhcnR5RGV0YWlscykge1xuICAgIGxldCBoYXNOZXdWYWx1ZXMgPSBmYWxzZTtcblxuICAgIC8vIFVzZWQgdG8gYmUgYSBnZXRDdXJyZW50VXNlcigpIGNhbGwgd2hpY2ggcmV0dXJucyBhIGNhY2hlcyB2ZXJzaW9uIG9mIHRoZSBjb250YWN0IGNhcmQuXG4gICAgLy8gTm93IHdlIGp1c3QgbWFrZSBhbiBBUEkgY2FsbC4gU28gb2sgdG8gbW9kaWZ5IHRoZSByZXR1cm5lZCB2YWx1ZS5cbiAgICBjb25zdCBtYWluQ29udGFjdENhcmQgPSBhd2FpdCB0aGlzLmZldGNoTWFpbkNvbnRhY3RDYXJkKCk7XG5cbiAgICBpZiAoZGV0YWlscy5uYW1lKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY2hlY2tGaWVsZChcbiAgICAgICAgZGV0YWlscy5uYW1lLFxuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLm5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLm5hbWUgPSBwcm9wZXJ0eTtcbiAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGV0YWlscy5lbWFpbCkge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLmNoZWNrRmllbGQoXG4gICAgICAgIGRldGFpbHMuZW1haWwsXG4gICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMuZW1haWxcbiAgICAgICk7XG5cbiAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLmVtYWlsID0gcHJvcGVydHk7XG4gICAgICAgIGhhc05ld1ZhbHVlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuaW1hZ2UpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKFxuICAgICAgICBkZXRhaWxzLmltYWdlLFxuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLmltYWdlXG4gICAgICApO1xuXG4gICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5pbWFnZSA9IHByb3BlcnR5O1xuICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLnBob25lcyAmJiBkZXRhaWxzLnBob25lcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgcGhvbmUgb2YgZGV0YWlscy5waG9uZXMpIHtcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLmNoZWNrRmllbGQoXG4gICAgICAgICAgcGhvbmUudmFsdWUsXG4gICAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5waG9uZSxcbiAgICAgICAgICBwaG9uZS5sYWJlbFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMucGhvbmUgPSBwcm9wZXJ0eTtcbiAgICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuYWRkcmVzc2VzICYmIGRldGFpbHMuYWRkcmVzc2VzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGRldGFpbHMuYWRkcmVzc2VzKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKFxuICAgICAgICAgIGFkZHJlc3MudmFsdWUsXG4gICAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5hZGRyZXNzLFxuICAgICAgICAgIGFkZHJlc3MubGFiZWxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLmFkZHJlc3MgPSBwcm9wZXJ0eTtcbiAgICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc05ld1ZhbHVlcykge1xuICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVEZXRhaWxzKFxuICAgICAgICBtYWluQ29udGFjdENhcmQuaWQsXG4gICAgICAgIG1haW5Db250YWN0Q2FyZC5rZXlJZCxcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSGVscGVyc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaE1haW5Db250YWN0Q2FyZCgpOiBQcm9taXNlPE1haW5Db250YWN0Q2FyZCB8IG51bGw+IHtcbiAgICBjb25zdCBtYWluQ29udGFjdENhcmQgPSAoYXdhaXQgdGhpcy5hcGkucXVlcnkoeyBxdWVyeTogQ29udGFjdENhcmRzUXVlcnkgfSkpXG4gICAgICAuY29udGFjdENhcmRzLmVkZ2VzWzBdPy5ub2RlO1xuXG4gICAgcmV0dXJuIG1haW5Db250YWN0Q2FyZFxuICAgICAgPyB7XG4gICAgICAgICAgaWQ6IG1haW5Db250YWN0Q2FyZC5pZCxcbiAgICAgICAgICBrZXlJZDogbWFpbkNvbnRhY3RDYXJkLmtleS5pZCxcbiAgICAgICAgICBmaWVsZHM6IG1haW5Db250YWN0Q2FyZC5jaXBoZXJEYXRhQ2xlYXJKc29uIGFzIE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUcnVzdGVkUGFydGllcygpOiBQcm9taXNlPFRydXN0ZWRQYXJ0eVtdPiB7XG4gICAgY29uc3QgeyB0cHMgfSA9IGF3YWl0IHRoaXMuYXBpLnF1ZXJ5KHtcbiAgICAgIHF1ZXJ5OiBUcnVzdGVkUGFydGllc1F1ZXJ5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcEVkZ2VzKHRwcykubWFwKCh0cCkgPT4gdGhpcy5tYXBUcnVzdGVkUGFydHkodHApKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVHJ1c3RlZFBhcnR5KHRwOiBUcE5vZGUpOiBUcnVzdGVkUGFydHkge1xuICAgIGNvbnN0IHRwRGV0YWlsczogVHJ1c3RlZFBhcnR5RGV0YWlscyA9XG4gICAgICB0cC5zaGFyZWRDb250YWN0Q2FyZC5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uO1xuXG4gICAgY29uc3QgbXlEZXRhaWxzOiBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzID0ge1xuICAgICAgLi4udHAubXlDb250YWN0Q2FyZC5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgaWQ6IHRwLm15Q29udGFjdENhcmQuaWQsXG4gICAgICBvd25lZEtleUlkOiB0cC5teUNvbnRhY3RDYXJkLm93bmVyS2V5LmlkLFxuICAgICAgc2hhcmVkS2V5SWQ6IHRwLm15Q29udGFjdENhcmQuc2hhcmVkS2V5LmlkLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRwLmlkLFxuICAgICAgdHlwZTogVHJ1c3RlZFBhcnR5VHlwZS5Vc2VyLFxuICAgICAgaGFzU2NlbmFyaW9zOiAhIXRwLnNoYXJlZFNjZW5hcmlvcy5lZGdlcy5sZW5ndGgsXG4gICAgICBoYXNTaGFyZWRWYXVsdDogISF0cC50aGVpckl0ZW1zLmRpcmVjdG9yaWVzLmVkZ2VzLmxlbmd0aCxcbiAgICAgIG5hbWU6IHRwRGV0YWlscz8ubmFtZT8ubmFtZSxcbiAgICAgIGRldGFpbHM6IHRwRGV0YWlscyxcbiAgICAgIG15U2hhcmVkRGV0YWlsczogbXlEZXRhaWxzLFxuICAgICAgdXNlclNoYXJlZEtleTogdHAuY3VycmVudFVzZXJTaGFyZWRLZXkudXNlclNoYXJlZEtleSxcbiAgICAgIHVzZXJuYW1lOiB0cC5vdGhlci51c2VybmFtZSxcbiAgICAgIGZlYXR1cmVzOiB7XG4gICAgICAgIHNoYXJlZFZhdWx0OiB7XG4gICAgICAgICAgaGFzQWNjZXNzOlxuICAgICAgICAgICAgKHRwLm90aGVyLmZlYXR1cmVzPy5zaGFyZVZhdWx0IHx8IFsnbm9hY2Nlc3MnXSlbMF0gPT09ICdhY2Nlc3MnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzeW5jaHJvbml6ZUNvbnRhY3RDYXJkcyhcbiAgICBuZXdGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgICBvbGRGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW9sZEZpZWxkcykgcmV0dXJuO1xuXG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuZ2V0Q2hhbmdlcyhuZXdGaWVsZHMsIG9sZEZpZWxkcyk7XG5cbiAgICBpZiAoY2hhbmdlcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHRydXN0ZWRQYXJ0aWVzID0gYXdhaXQgdGhpcy5nZXRUcnVzdGVkUGFydGllcygpO1xuXG4gICAgaWYgKHRydXN0ZWRQYXJ0aWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBkZXRhaWxzIG9mIHRydXN0ZWRQYXJ0aWVzLm1hcCgoeCkgPT4geC5teVNoYXJlZERldGFpbHMpKSB7XG4gICAgICBhd2FpdCB0aGlzLnN5bmNocm9uaXplU2hhcmVkQ29udGFjdENhcmQoZGV0YWlscywgY2hhbmdlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGFuZ2VzKFxuICAgIG5ld0ZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzLFxuICAgIG9sZEZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IEZpZWxkQ2hhbmdlW10ge1xuICAgIGNvbnN0IGNoYW5nZXM6IEZpZWxkQ2hhbmdlW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgRmllbGROYW1lcykge1xuICAgICAgY29uc3Qgb2xkRmllbGQgPSBvbGRGaWVsZHNbZmllbGRdO1xuICAgICAgaWYgKG9sZEZpZWxkICYmIG9sZEZpZWxkLnZhbHVlcykge1xuICAgICAgICBmb3IgKGNvbnN0IG9sZFZhbHVlIG9mIG9sZEZpZWxkLnZhbHVlcykge1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKG5ld0ZpZWxkc1tmaWVsZF0udmFsdWVzIGFzIGFueVtdKT8uZmluZChcbiAgICAgICAgICAgICh4KSA9PiB4LmlkID09PSBvbGRWYWx1ZS5pZFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIW5ld1ZhbHVlKSB7XG4gICAgICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgaWQ6IG9sZFZhbHVlLmlkLFxuICAgICAgICAgICAgICBsYWJlbDogb2xkVmFsdWUubGFiZWwsXG4gICAgICAgICAgICAgIG9sZFZhbHVlOiBvbGRWYWx1ZS52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWxvZGFzaC5pc0VxdWFsKG5ld1ZhbHVlLnZhbHVlLCBvbGRWYWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBpZDogb2xkVmFsdWUuaWQsXG4gICAgICAgICAgICAgIGxhYmVsOiBvbGRWYWx1ZS5sYWJlbCxcbiAgICAgICAgICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN5bmNocm9uaXplU2hhcmVkQ29udGFjdENhcmQoXG4gICAgZGV0YWlsczogU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscyxcbiAgICBjaGFuZ2VzOiBGaWVsZENoYW5nZVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgc3dpdGNoIChjaGFuZ2UuZmllbGQpIHtcbiAgICAgICAgY2FzZSBDb250YWN0RmllbGRzLlBob25lOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgICAgZGV0YWlscy5waG9uZXMgJiZcbiAgICAgICAgICAgICAgZGV0YWlscy5waG9uZXMuZmluZCgoeCkgPT4geC5sYWJlbCA9PT0gY2hhbmdlLmxhYmVsKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQ29udGFjdEZpZWxkcy5BZGRyZXNzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgICAgZGV0YWlscy5hZGRyZXNzZXMgJiZcbiAgICAgICAgICAgICAgZGV0YWlscy5hZGRyZXNzZXMuZmluZCgoeCkgPT4geC5sYWJlbCA9PT0gY2hhbmdlLmxhYmVsKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRldGFpbHNbY2hhbmdlLmZpZWxkXTtcblxuICAgICAgICAgIGlmIChsb2Rhc2guaXNFcXVhbCh2YWx1ZSwgY2hhbmdlLm9sZFZhbHVlKSkge1xuICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICBkZXRhaWxzW2NoYW5nZS5maWVsZF0gPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICBjb25zdCB7IGlkLCBvd25lZEtleUlkLCBzaGFyZWRLZXlJZCwgLi4uY29udGFjdENhcmQgfSA9IGRldGFpbHM7XG5cbiAgICAgIGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLnVwZGF0ZU15U2hhcmVkQ29udGFjdENhcmQoXG4gICAgICAgIGlkLFxuICAgICAgICBvd25lZEtleUlkLFxuICAgICAgICBzaGFyZWRLZXlJZCxcbiAgICAgICAgY29udGFjdENhcmRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZpZWxkPFQ+KFxuICAgIGZpZWxkOiBULFxuICAgIHByb3BlcnR5OiBNYWluQ29udGFjdENhcmRQcm9wZXJ0eTxUPixcbiAgICBsYWJlbDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5IHx8IHsgdmFsdWU6IGZpZWxkLCBoYXNNdWx0aXBsZTogZmFsc2UgfTtcbiAgICBwcm9wZXJ0eS52YWx1ZXMgPSBwcm9wZXJ0eS52YWx1ZXMgfHwgW107XG5cbiAgICBpZiAoXG4gICAgICBwcm9wZXJ0eS52YWx1ZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICBwcm9wZXJ0eS52YWx1ZXMuZXZlcnkoKHgpID0+ICFsb2Rhc2guaXNFcXVhbChmaWVsZCwgeC52YWx1ZSkpXG4gICAgKSB7XG4gICAgICBwcm9wZXJ0eS52YWx1ZXMucHVzaCh7XG4gICAgICAgIGlkOiBgJHtsYWJlbH0tJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWU6IGZpZWxkLFxuICAgICAgfSk7XG4gICAgICBwcm9wZXJ0eS5oYXNNdWx0aXBsZSA9IHByb3BlcnR5LnZhbHVlcy5sZW5ndGggPiAxO1xuICAgICAgcHJvcGVydHkudmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSB8fCBmaWVsZDtcbiAgICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -266,6 +266,7 @@ let ScenarioService = class ScenarioService extends LrService {
|
|
|
266
266
|
const createClaimants = yield Promise.all(createClaimantsOptions.map((x) => this.prepareCreateClaimant(x)));
|
|
267
267
|
return {
|
|
268
268
|
enabled: options.enabled,
|
|
269
|
+
inactiveSeconds: options.inactiveSeconds,
|
|
269
270
|
createAssembly,
|
|
270
271
|
createReceivers,
|
|
271
272
|
createClaimants,
|
|
@@ -319,6 +320,7 @@ let ScenarioService = class ScenarioService extends LrService {
|
|
|
319
320
|
return {
|
|
320
321
|
scenarioId: options.scenarioId,
|
|
321
322
|
enabled: options.enabled,
|
|
323
|
+
inactiveSeconds: options.inactiveSeconds,
|
|
322
324
|
updateAssembly,
|
|
323
325
|
createReceivers,
|
|
324
326
|
updateReceivers,
|
|
@@ -672,4 +674,4 @@ ScenarioService = __decorate([
|
|
|
672
674
|
})
|
|
673
675
|
], ScenarioService);
|
|
674
676
|
export { ScenarioService };
|
|
675
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zY2VuYXJpby9zY2VuYXJpby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLFFBQVEsRUFHUixhQUFhLEVBR2Isb0JBQW9CLEdBRXJCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXRFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBQ2hDLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLHNCQUFzQixHQUN2QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxh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QyxnQkFBZ0IsQ0FDbEQsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxvQkFBb0IsQ0FBQyxPQUFPLENBQzdCLENBQUM7WUFFRixPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FDekIsQ0FBTyxlQUFlLEVBQUUsRUFBRTtnQkFDeEIsT0FBQSxJQUFJLFVBQVUsQ0FBQztvQkFDYixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxFQUFFLEVBQUU7cUJBQy9DO2lCQUNGLENBQUMsQ0FBQTtjQUFBLENBQ0wsQ0FBQztRQUNKLENBQUM7S0FBQTtDQUNGLENBQUE7QUEzNEJlLGlDQUFpQixHQUFHLFdBQVcsQ0FBQzs7O1lBZC9DLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBdEU4QixNQUFNO1lBQWhCLFFBQVE7WUFrQnBCLGVBQWU7WUFGZixXQUFXO1lBV1gsMEJBQTBCO1lBWjFCLGlCQUFpQjs7QUF3RGIsZUFBZTtJQU4zQixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsZUFBZSxDQXM1QjNCO1NBdDVCWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24sIExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7XG4gIEFjY2Vzc1JvbGVDaG9pY2UsXG4gIEpTT05PYmplY3QsXG4gIG1hcEVkZ2VzLFxuICBTY2VuYXJpb05vZGUsXG4gIFNjZW5hcmlvUmVjZWl2ZXJOb2RlLFxuICBTY2VuYXJpb1N0YXRlLFxuICBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZWRBcHByb3ZhbE5vZGUsXG4gIFNoYXJlZFRwQ2xhaW1BcHByb3Zlck5vZGUsXG4gIFRwQ2xhaW1BcHByb3ZlclN0YXRlLFxuICBUcE5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vaXRlbS9pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWRLZXlQYWlyIH0gZnJvbSAnLi4vaXRlbS9pdGVtLnR5cGVzJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBUcHNLZXlzUXVlcnkgfSBmcm9tICcuLi90cC1hc3NlbWJseS90cC1hc3NlbWJseS5wcml2YXRlLmdxbCc7XG5pbXBvcnQgeyBQYXJ0aWFsQXNzZW1ibHlLZXkgfSBmcm9tICcuLi90cC1hc3NlbWJseS90cC1hc3NlbWJseS50eXBlcyc7XG5pbXBvcnQge1xuICBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uLFxuICBLY0JhZFN0YXRlRXhjZXB0aW9uLFxufSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgYXNzZXJ0X3hvciB9IGZyb20gJy4uL19jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgU2NlbmFyaW9Bc3NlbWJseUNvbnRyb2xsZXIgfSBmcm9tICcuL3NjZW5hcmlvLmNvbnRyb2xsZXInO1xuaW1wb3J0IHtcbiAgQXBwcm92ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgQ2FuY2VsU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBDcmVhdGVTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gIENyZWF0ZVNjZW5hcmlvTXV0YXRpb24sXG4gIERlYnVnRXhwaXJlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBEZWxldGVTY2VuYXJpb011dGF0aW9uLFxuICBSZWNlaXZlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBSZWplY3RTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gIFVwZGF0ZVNjZW5hcmlvTXV0YXRpb24sXG59IGZyb20gJy4vc2NlbmFyaW8uZ3FsJztcbmltcG9ydCB7IFNjZW5hcmlvUXVlcnksIFNoYXJlZFNjZW5hcmlvUXVlcnkgfSBmcm9tICcuL3NjZW5hcmlvLnByaXZhdGUuZ3FsJztcbmltcG9ydCB7XG4gIENyZWF0ZUNsYWltYW50T3B0aW9ucyxcbiAgQ3JlYXRlUGFydGljaXBhbnRPcHRpb25zLFxuICBDcmVhdGVSZWNlaXZlck9wdGlvbnMsXG4gIENyZWF0ZVNjZW5hcmlvT3B0aW9ucyxcbiAgUGFydGljaXBhbnRPcHRpb25zLFxuICBSZWNlaXZlckRpcmVjdG9yeU9wdGlvbnMsXG4gIFJlY2VpdmVyRmlsZU9wdGlvbnMsXG4gIFJlY2VpdmVySXRlbU9wdGlvbnMsXG4gIFJlc2V0U2NlbmFyaW9PcHRpb25zLFxuICBVcGRhdGVDbGFpbWFudE9wdGlvbnMsXG4gIFVwZGF0ZVJlY2VpdmVyT3B0aW9ucyxcbiAgVXBkYXRlU2NlbmFyaW9PcHRpb25zLFxufSBmcm9tICcuL3NjZW5hcmlvLnR5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93Q2xhaW1JZE1pc21hdGNoKCkge1xuICB0aHJvdyBuZXcgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbihcbiAgICAnY2xhaW1JZCBkb2VzIG5vdCBtYXRjaCB3aXRoIHRoZSBjdXJyZW50IGNsYWltSWQgb2YgdGhlIHNjZW5hcmlvJ1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dDbGFpbU5vdEFwcHJvdmVkKCkge1xuICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbignU2NlbmFyaW8gY2xhaW0gaGFzIG5vdCBiZWVuIGFwcHJvdmVkJyk7XG59XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY2VuYXJpb1NlcnZpY2UgZXh0ZW5kcyBMclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGl0ZW1TZXJ2aWNlOiBJdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGFzc2VtYmx5Q29udHJvbGxlcjogU2NlbmFyaW9Bc3NlbWJseUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgU0xJUDM5X1BBU1NQSFJBU0UgPSAnbGlmZXJlYWR5JztcblxuICBwcml2YXRlIHByZXBhcmVBZGRSZWNlaXZlckRpcmVjdG9yeSA9IHRoaXMucHJlcGFyZVJlY2VpdmVyRGlyZWN0b3J5O1xuICBwcml2YXRlIHByZXBhcmVVcGRhdGVSZWNlaXZlckRpcmVjdG9yeSA9IHRoaXMucHJlcGFyZVJlY2VpdmVyRGlyZWN0b3J5O1xuXG4gIHByaXZhdGUgcHJlcGFyZUFkZFJlY2VpdmVyRmlsZSA9IHRoaXMucHJlcGFyZVJlY2VpdmVyRmlsZTtcbiAgcHJpdmF0ZSBwcmVwYXJlVXBkYXRlUmVjZWl2ZXJGaWxlID0gdGhpcy5wcmVwYXJlUmVjZWl2ZXJGaWxlO1xuXG4gIC8vIFNjZW5hcmlvc1xuICBhc3luYyBjcmVhdGVTY2VuYXJpbyhvcHRpb25zOiBDcmVhdGVTY2VuYXJpb09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jcmVhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNjZW5hcmlvTXV0YXRpb24ob3B0aW9uczogQ3JlYXRlU2NlbmFyaW9PcHRpb25zKSB7XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnMpO1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ3JlYXRlU2NlbmFyaW9NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVTY2VuYXJpbyhvcHRpb25zOiBVcGRhdGVTY2VuYXJpb09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51cGRhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVNjZW5hcmlvTXV0YXRpb24ob3B0aW9uczogVXBkYXRlU2NlbmFyaW9PcHRpb25zKSB7XG4gICAgY29uc3Qgc2NlbmFyaW8gPSAoYXdhaXQgdGhpcy5nZXRTY2VuYXJpbyhvcHRpb25zLnNjZW5hcmlvSWQpKS5zY2VuYXJpbztcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVNjZW5hcmlvKG9wdGlvbnMsIHNjZW5hcmlvKTtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZVNjZW5hcmlvTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVzZXRTY2VuYXJpbyhvcHRpb25zOiBSZXNldFNjZW5hcmlvT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJlc2V0U2NlbmFyaW9NdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyByZXNldFNjZW5hcmlvTXV0YXRpb24ob3B0aW9uczogUmVzZXRTY2VuYXJpb09wdGlvbnMpIHtcbiAgICBjb25zdCBzY2VuYXJpbyA9IChhd2FpdCB0aGlzLmdldFNjZW5hcmlvKG9wdGlvbnMuc2NlbmFyaW9JZCkpLnNjZW5hcmlvO1xuXG4gICAgY29uc3QgeyBhc3NlbWJseSB9ID0gc2NlbmFyaW87XG5cbiAgICAvLyBKdXN0IG5lZWQgdG8gZG8gYW4gdXBkYXRlIHdpdGhvdXQgY2hhbmdpbmcgYXBwcm92ZXJzLiBUaGlzIHdpbGwgcmVjcmVhdGVcbiAgICAvLyBhbGwgYXNzZW1ibHkga2V5cy5cbiAgICBjb25zdCB1cGRhdGVTdWJBc3NlbWJsaWVzID0gbWFwRWRnZXMoYXNzZW1ibHkuc3ViQXNzZW1ibGllcykubWFwKChzYSkgPT4ge1xuICAgICAgY29uc3QgYXBwcm92ZXJUcHMgPSBtYXBFZGdlcyhzYS5hcHByb3ZlcnMpLm1hcCgoYXBwcm92ZXIpID0+ICh7XG4gICAgICAgIHRwSWQ6IGFwcHJvdmVyLnRwLmlkLFxuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogc2EuaWQsXG4gICAgICAgIHF1b3J1bTogc2EucXVvcnVtLFxuICAgICAgICBzaW5nbGVSZWplY3Q6IHNhLnNpbmdsZVJlamVjdCxcbiAgICAgICAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb246IHNhLnN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICBhcHByb3ZlclRwcyxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVNjZW5hcmlvKFxuICAgICAge1xuICAgICAgICBzY2VuYXJpb0lkOiBvcHRpb25zLnNjZW5hcmlvSWQsXG4gICAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuZW5hYmxlZCxcbiAgICAgICAgdXBkYXRlQXNzZW1ibHk6IHtcbiAgICAgICAgICBxdW9ydW06IGFzc2VtYmx5LnF1b3J1bSxcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IGFzc2VtYmx5LnNpbmdsZVJlamVjdCxcbiAgICAgICAgICB1cGRhdGVTdWJBc3NlbWJsaWVzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNjZW5hcmlvXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlU2NlbmFyaW9NdXRhdGlvbiwgLy8gdXBkYXRpbmcgc2NlbmFyaW8gcmVzZXRzIGl0XG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2NlbmFyaW8oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubHJHcmFwaFFMLmxyTXV0YXRlKHRoaXMuZGVsZXRlU2NlbmFyaW9NdXRhdGlvbihzY2VuYXJpb0lkKSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVTY2VuYXJpb011dGF0aW9uKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlU2NlbmFyaW9NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogeyBpbnB1dDogeyBzY2VuYXJpb0lkIH0gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENsYWltc1xuICBhc3luYyBjcmVhdGVDbGFpbShzY2VuYXJpb0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jcmVhdGVDbGFpbU11dGF0aW9uKHNjZW5hcmlvSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUNsYWltTXV0YXRpb24oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQ6IHsgc2NlbmFyaW9JZCB9IH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjYW5jZWxDbGFpbShjbGFpbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jYW5jZWxDbGFpbU11dGF0aW9uKGNsYWltSWQpKTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbENsYWltTXV0YXRpb24oY2xhaW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDYW5jZWxTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQ6IHsgY2xhaW1JZCB9IH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZWplY3RDbGFpbShzaGFyZWRTY2VuYXJpb0lkOiBzdHJpbmcsIGNsYWltSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJlamVjdENsYWltTXV0YXRpb24oc2hhcmVkU2NlbmFyaW9JZCwgY2xhaW1JZCkpO1xuICB9XG5cbiAgYXN5bmMgcmVqZWN0Q2xhaW1NdXRhdGlvbihzaGFyZWRTY2VuYXJpb0lkOiBzdHJpbmcsIGNsYWltSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG11dGF0aW9ucyA9IGF3YWl0IHRoaXMucHJlcGFyZVJlamVjdENsYWltTXV0YXRpb25zKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIGNsYWltSWRcbiAgICApO1xuICAgIHJldHVybiBMck1lcmdlZE11dGF0aW9uLmNyZWF0ZShhd2FpdCBQcm9taXNlLmFsbChtdXRhdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGFwcHJvdmVDbGFpbShzaGFyZWRTY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIC8vIFRPRE8gdGhpcyBuZWVkcyBhIGNhc3Qgc28gdGhlIHJlc3VsdCBpcyBub3QgQU5ZLlxuICAgIHJldHVybiB0aGlzLm11dGF0ZShcbiAgICAgIHRoaXMuYXBwcm92ZUNsYWltTXV0YXRpb24oc2hhcmVkU2NlbmFyaW9JZCwgc2hhcmVkQ2xhaW1JZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgYXBwcm92ZUNsYWltTXV0YXRpb24oc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLCBzaGFyZWRDbGFpbUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtdXRhdGlvbnMgPSBhd2FpdCB0aGlzLnByZXBhcmVBcHByb3ZlQ2xhaW1NdXRhdGlvbnMoXG4gICAgICBzaGFyZWRTY2VuYXJpb0lkLFxuICAgICAgc2hhcmVkQ2xhaW1JZFxuICAgICk7XG4gICAgcmV0dXJuIExyTWVyZ2VkTXV0YXRpb24uY3JlYXRlKGF3YWl0IFByb21pc2UuYWxsKG11dGF0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgcmVjZWl2ZUNsYWltKHNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMucmVjZWl2ZUNsYWltMk11dGF0aW9uKHNjZW5hcmlvSWQsIHNoYXJlZENsYWltSWQpKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmVDbGFpbTJNdXRhdGlvbihzY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVjZWl2ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogYXdhaXQgdGhpcy5wcmVwYXJlUmVjZWl2ZUNsYWltMihzY2VuYXJpb0lkLCBzaGFyZWRDbGFpbUlkKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWJ1Z0V4cGlyZUNsYWltKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmRlYnVnRXhwaXJlQ2xhaW1NdXRhdGlvbihzY2VuYXJpb0lkKSk7XG4gIH1cblxuICBhc3luYyBkZWJ1Z0V4cGlyZUNsYWltTXV0YXRpb24oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWJ1Z0V4cGlyZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogeyBzY2VuYXJpb0lkIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSGVscGVyc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcml2YXRlIGFzeW5jIGdldFNjZW5hcmlvKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5KHtcbiAgICAgIHF1ZXJ5OiBTY2VuYXJpb1F1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7IHNjZW5hcmlvSWQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0U2hhcmVkU2NlbmFyaW8oc2NlbmFyaW9JZDogc3RyaW5nLCBjbGFpbUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcmV0ID0gYXdhaXQgdGhpcy5xdWVyeSh7XG4gICAgICBxdWVyeTogU2hhcmVkU2NlbmFyaW9RdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChjbGFpbUlkICYmIHJldC5zaGFyZWRTY2VuYXJpby5zaGFyZWRDbGFpbS5pZCAhPT0gY2xhaW1JZCkge1xuICAgICAgdGhyb3dDbGFpbUlkTWlzbWF0Y2goKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQYXJ0aWNpcGFudFRwc0tleXMob3B0aW9uczogQ3JlYXRlUGFydGljaXBhbnRPcHRpb25zW10pIHtcbiAgICBjb25zdCB0cElkcyA9IG9wdGlvbnMubWFwKCh4KSA9PiB4LnRwSWQpO1xuXG4gICAgLy8gVGhpcyBzaG91bGQgY29udGFpbiBhbGwgdGhlIFRQcyB0aGF0IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBhc3NlbWJseS5cbiAgICBjb25zdCB0cHMgPSBtYXBFZGdlcyhcbiAgICAgIChcbiAgICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUUwucXVlcnkoe1xuICAgICAgICAgIHF1ZXJ5OiBUcHNLZXlzUXVlcnksXG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBpZHM6IHRwSWRzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLnRwc1xuICAgICk7XG5cbiAgICByZXR1cm4gdHBzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsVHBTaGFyZWRLZXlJZChcbiAgICBvcHRpb25zOiBDcmVhdGVQYXJ0aWNpcGFudE9wdGlvbnNbXSxcbiAgICB0cHM6IFRwTm9kZVtdXG4gICkge1xuICAgIG9wdGlvbnMuZm9yRWFjaCgocGFydGljaXBhbnQpID0+IHtcbiAgICAgIGlmICghcGFydGljaXBhbnQudHBTaGFyZWRLZXlJZCkge1xuICAgICAgICBjb25zdCB0cCA9IHRwcy5maW5kKCh4KSA9PiB4LmlkID09PSBwYXJ0aWNpcGFudC50cElkKTtcbiAgICAgICAgcGFydGljaXBhbnQudHBTaGFyZWRLZXlJZCA9XG4gICAgICAgICAgdHAuY3VycmVudFVzZXJTaGFyZWRLZXkudXNlclNoYXJlZEtleS5zaGFyZWRLZXkuaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDcmVhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnM6IENyZWF0ZVNjZW5hcmlvT3B0aW9ucykge1xuICAgIGNvbnN0IHsgYXNzZW1ibHlLZXksIG11dGF0aW9uSW5wdXQ6IGNyZWF0ZUFzc2VtYmx5IH0gPVxuICAgICAgYXdhaXQgdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucHJlcGFyZUNyZWF0ZShvcHRpb25zLmNyZWF0ZUFzc2VtYmx5KTtcblxuICAgIGNvbnN0IGNyZWF0ZVJlY2VpdmVyc09wdGlvbnMgPSBvcHRpb25zLmNyZWF0ZVJlY2VpdmVycyB8fCBbXTtcbiAgICBjb25zdCBjcmVhdGVDbGFpbWFudHNPcHRpb25zID0gb3B0aW9ucy5jcmVhdGVDbGFpbWFudHMgfHwgW107XG5cbiAgICAvLyBGZXRjaCBhbGwgdGhlIFRQcyBzbyB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgaW4gdHBTaGFyZWRLZXlJZFxuICAgIGNvbnN0IGNyZWF0UGFydGljaXBhbnRzT3B0aW9ucyA9IGNyZWF0ZVJlY2VpdmVyc09wdGlvbnMuY29uY2F0KFxuICAgICAgY3JlYXRlQ2xhaW1hbnRzT3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCB0cHMgPSBhd2FpdCB0aGlzLmdldFBhcnRpY2lwYW50VHBzS2V5cyhjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMpO1xuXG4gICAgdGhpcy5maWxsVHBTaGFyZWRLZXlJZChjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMsIHRwcyk7XG5cbiAgICBjb25zdCBjcmVhdGVSZWNlaXZlcnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNyZWF0ZVJlY2VpdmVyc09wdGlvbnMubWFwKChyZWNlaXZlcikgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlQ3JlYXRlUmVjZWl2ZXIocmVjZWl2ZXIsIGFzc2VtYmx5S2V5KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCBjcmVhdGVDbGFpbWFudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNyZWF0ZUNsYWltYW50c09wdGlvbnMubWFwKCh4KSA9PiB0aGlzLnByZXBhcmVDcmVhdGVDbGFpbWFudCh4KSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZWQ6IG9wdGlvbnMuZW5hYmxlZCxcbiAgICAgIGNyZWF0ZUFzc2VtYmx5LFxuICAgICAgY3JlYXRlUmVjZWl2ZXJzLFxuICAgICAgY3JlYXRlQ2xhaW1hbnRzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVVcGRhdGVTY2VuYXJpbyhcbiAgICBvcHRpb25zOiBVcGRhdGVTY2VuYXJpb09wdGlvbnMsXG4gICAgc2NlbmFyaW86IFNjZW5hcmlvTm9kZVxuICApIHtcbiAgICBsZXQgYXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShcbiAgICAgIHNjZW5hcmlvLmFzc2VtYmx5LmFzc2VtYmx5S2V5LmlkXG4gICAgKTtcblxuICAgIGNvbnN0IHVwZGF0ZUFzc2VtYmx5ID0gb3B0aW9ucy51cGRhdGVBc3NlbWJseVxuICAgICAgPyBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEFzc2VtYmx5IGtleSBpcyBhbHdheXMgcm90YXRlZCB3aGVuIHVwZGF0aW5nIGFzc2VtYmx5LlxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYXNzZW1ibHlDb250cm9sbGVyLnByZXBhcmVVcGRhdGUoXG4gICAgICAgICAgICBvcHRpb25zLnVwZGF0ZUFzc2VtYmx5LFxuICAgICAgICAgICAgc2NlbmFyaW8uYXNzZW1ibHlcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIFVzZSBuZXcgYXNzZW1ibHkga2V5LlxuICAgICAgICAgIGFzc2VtYmx5S2V5ID0gcmVzdWx0LmFzc2VtYmx5S2V5O1xuICAgICAgICAgIHJldHVybiByZXN1bHQubXV0YXRpb25JbnB1dDtcbiAgICAgICAgfSkoKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjcmVhdGVSZWNlaXZlcnNPcHRpb25zID0gb3B0aW9ucy5jcmVhdGVSZWNlaXZlcnMgfHwgW107XG4gICAgY29uc3QgY3JlYXRlQ2xhaW1hbnRzT3B0aW9ucyA9IG9wdGlvbnMuY3JlYXRlQ2xhaW1hbnRzIHx8IFtdO1xuXG4gICAgLy8gRmV0Y2ggYWxsIHRoZSBUUHMgc28gd2UgZG9uJ3QgaGF2ZSB0byBwYXNzIGluIHRwU2hhcmVkS2V5SWRcbiAgICBjb25zdCBjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMgPSBjcmVhdGVSZWNlaXZlcnNPcHRpb25zLmNvbmNhdChcbiAgICAgIGNyZWF0ZUNsYWltYW50c09wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgdHBzID0gYXdhaXQgdGhpcy5nZXRQYXJ0aWNpcGFudFRwc0tleXMoY3JlYXRQYXJ0aWNpcGFudHNPcHRpb25zKTtcblxuICAgIHRoaXMuZmlsbFRwU2hhcmVkS2V5SWQoY3JlYXRQYXJ0aWNpcGFudHNPcHRpb25zLCB0cHMpO1xuXG4gICAgY29uc3QgY3JlYXRlUmVjZWl2ZXJzID1cbiAgICAgIG9wdGlvbnMuY3JlYXRlUmVjZWl2ZXJzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMuY3JlYXRlUmVjZWl2ZXJzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnByZXBhcmVDcmVhdGVSZWNlaXZlcih4LCBhc3NlbWJseUtleSlcbiAgICAgICAgKVxuICAgICAgKSk7XG5cbiAgICBjb25zdCBleGlzdGluZ1JlY2VpdmVycyA9IG1hcEVkZ2VzKHNjZW5hcmlvLnJlY2VpdmVycyk7XG4gICAgbGV0IHVwZGF0ZVJlY2VpdmVycyA9IG9wdGlvbnMudXBkYXRlUmVjZWl2ZXJzXG4gICAgICA/IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIG9wdGlvbnMudXBkYXRlUmVjZWl2ZXJzLm1hcCgodXBkYXRlUmVjZWl2ZXIpID0+IHtcbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIHJlY2VpdmVyIHdlIGFyZSB1cGRhdGluZ1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdSZWNlaXZlciA9IGV4aXN0aW5nUmVjZWl2ZXJzLmZpbmQoXG4gICAgICAgICAgICAgICh4KSA9PiB4LnRwLmlkID09PSB1cGRhdGVSZWNlaXZlci50cElkXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmVwYXJlVXBkYXRlUmVjZWl2ZXIoXG4gICAgICAgICAgICAgIHVwZGF0ZVJlY2VpdmVyLFxuICAgICAgICAgICAgICBhc3NlbWJseUtleSxcbiAgICAgICAgICAgICAgZXhpc3RpbmdSZWNlaXZlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICA6IFtdO1xuXG4gICAgLy8gRmlsbCBpbiBhbnkgbWlzc2luZyByZWNlaXZlcnMgd2hlbiB1cGRhdGluZyBhc3NlbWJseS5cbiAgICBpZiAob3B0aW9ucy51cGRhdGVBc3NlbWJseSkge1xuICAgICAgLy8gRmlsdGVyIG91dCB0aGUgcmVjZWl2ZXJzIHRoYXQgd2lsbCBiZSBkZWxldGVkIG9yIGFscmVhZHkgdXBkYXRlZC5cbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gZXhpc3RpbmdSZWNlaXZlcnMuZmlsdGVyKFxuICAgICAgICAoZXhpc3RpbmdSZWNlaXZlcikgPT5cbiAgICAgICAgICAhKG9wdGlvbnMuZGVsZXRlUmVjZWl2ZXJzIHx8IFtdKS5pbmNsdWRlcyhleGlzdGluZ1JlY2VpdmVyLnRwLmlkKSAmJlxuICAgICAgICAgICF1cGRhdGVSZWNlaXZlcnMuc29tZShcbiAgICAgICAgICAgICh1cGRhdGVSZWNlaXZlcikgPT4gdXBkYXRlUmVjZWl2ZXIudHBJZCA9PT0gZXhpc3RpbmdSZWNlaXZlci50cC5pZFxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB1cGRhdGVSZWNlaXZlcnMgPSB1cGRhdGVSZWNlaXZlcnMuY29uY2F0KFxuICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmVFeGlzdGluZ1JlY2VpdmVycyhleGlzdGluZywgYXNzZW1ibHlLZXkpXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNyZWF0ZUNsYWltYW50cyA9XG4gICAgICBvcHRpb25zLmNyZWF0ZUNsYWltYW50cyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLmNyZWF0ZUNsYWltYW50cy5tYXAoKHgpID0+IHRoaXMucHJlcGFyZUNyZWF0ZUNsYWltYW50KHgpKVxuICAgICAgKSk7XG5cbiAgICBjb25zdCBleGlzdGluZ0NsYWltYW50cyA9IG1hcEVkZ2VzKHNjZW5hcmlvLmNsYWltYW50cyk7XG4gICAgY29uc3QgdXBkYXRlQ2xhaW1hbnRzID1cbiAgICAgIG9wdGlvbnMudXBkYXRlQ2xhaW1hbnRzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMudXBkYXRlQ2xhaW1hbnRzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGNsYWltYW50IHdlIGFyZSB1cGRhdGluZ1xuICAgICAgICAgIGNvbnN0IGNsYWltYW50ID0gZXhpc3RpbmdDbGFpbWFudHMuZmluZChcbiAgICAgICAgICAgIChleGlzdGluZ0NsYWltYW50KSA9PiBleGlzdGluZ0NsYWltYW50LnRwLmlkID09PSB4LnRwSWRcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0aGlzLnByZXBhcmVVcGRhdGVDbGFpbWFudCh4LCBjbGFpbWFudC5zaGFyZWRLZXkuaWQpO1xuICAgICAgICB9KVxuICAgICAgKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NlbmFyaW9JZDogb3B0aW9ucy5zY2VuYXJpb0lkLFxuICAgICAgZW5hYmxlZDogb3B0aW9ucy5lbmFibGVkLFxuICAgICAgdXBkYXRlQXNzZW1ibHksXG4gICAgICBjcmVhdGVSZWNlaXZlcnMsXG4gICAgICB1cGRhdGVSZWNlaXZlcnMsXG4gICAgICBkZWxldGVSZWNlaXZlcnM6IG9wdGlvbnMuZGVsZXRlUmVjZWl2ZXJzLFxuICAgICAgY3JlYXRlQ2xhaW1hbnRzLFxuICAgICAgdXBkYXRlQ2xhaW1hbnRzLFxuICAgICAgZGVsZXRlQ2xhaW1hbnRzOiBvcHRpb25zLmRlbGV0ZUNsYWltYW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVjZWl2ZXJJdGVtKG9wdGlvbnM6IHtcbiAgICByZWNlaXZlckl0ZW1PcHRpb25zOiBSZWNlaXZlckl0ZW1PcHRpb25zO1xuICAgIHJlY2VpdmVyU2hhcmVkS2V5OiBKV0suS2V5O1xuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5O1xuICAgIGRpcmVjdG9yeT86IElkS2V5UGFpcjtcbiAgICBmaWxlPzogSWRLZXlQYWlyO1xuICB9KSB7XG4gICAgY29uc3Qge1xuICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9ucyxcbiAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBkaXJlY3RvcnksXG4gICAgICBmaWxlLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgYXNzZXJ0X3hvcih7IGRpcmVjdG9yeSwgZmlsZSB9KTtcblxuICAgIGNvbnN0IHsgYWNjZXNzUm9sZSB9ID0gcmVjZWl2ZXJJdGVtT3B0aW9ucztcblxuICAgIGlmIChhY2Nlc3NSb2xlID09IEFjY2Vzc1JvbGVDaG9pY2UuREVOWSkge1xuICAgICAgY29uc3QgcmV0ID0ge1xuICAgICAgICBhY2Nlc3NSb2xlLFxuICAgICAgICB3cmFwcGVkSXRlbUtleTogbnVsbCxcbiAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogbnVsbCxcbiAgICAgIH07XG5cbiAgICAgIGlmIChkaXJlY3RvcnkpIHtcbiAgICAgICAgLy8gQ3J5cHRvZ3JhcGhpYyBhY2Nlc3MgdG8gaXRlbSBpcyBub3QgcmVxdWlyZWQuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmV0LFxuICAgICAgICAgIGRpcmVjdG9yeUlkOiBkaXJlY3RvcnkuaWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBmaWxlSWQ6IGZpbGUuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE8gdGhpcyBzaG91bGQgYmUgYmF0Y2hlZFxuICAgICAgbGV0IGl0ZW1LZXk7XG4gICAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICAgIGl0ZW1LZXkgPSBhd2FpdCB0aGlzLml0ZW1TZXJ2aWNlLmdldERpcmVjdG9yeUtleShcbiAgICAgICAgICBkaXJlY3RvcnkuaWQsXG4gICAgICAgICAgZGlyZWN0b3J5LmtleUlkXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtS2V5ID0gYXdhaXQgdGhpcy5pdGVtU2VydmljZS5nZXRGaWxlS2V5KGZpbGUuaWQsIGZpbGUua2V5SWQpO1xuICAgICAgfVxuXG4gICAgICBsZXQgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgcmVjZWl2ZXJTaGFyZWRLZXksXG4gICAgICAgIGl0ZW1LZXkuandrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc2hhcmVkQ2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICByZWNlaXZlclNoYXJlZEtleSxcbiAgICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9ucy5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgICApO1xuXG4gICAgICB3cmFwcGVkSXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBhc3NlbWJseUtleSxcbiAgICAgICAgd3JhcHBlZEl0ZW1LZXlcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJldCA9IHtcbiAgICAgICAgYWNjZXNzUm9sZSxcbiAgICAgICAgd3JhcHBlZEl0ZW1LZXksXG4gICAgICAgIHNoYXJlZENpcGhlckRhdGEsXG4gICAgICB9O1xuXG4gICAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmV0LFxuICAgICAgICAgIGRpcmVjdG9yeUlkOiBkaXJlY3RvcnkuaWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBmaWxlSWQ6IGZpbGUuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVjZWl2ZXJEaXJlY3RvcnkoXG4gICAgb3B0aW9uczogUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zLFxuICAgIHJlY2VpdmVyU2hhcmVkS2V5OiBKV0suS2V5LFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVSZWNlaXZlckl0ZW0oe1xuICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBkaXJlY3Rvcnk6IHtcbiAgICAgICAgaWQ6IG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICAgIGtleUlkOiBvcHRpb25zLmRpcmVjdG9yeUtleUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY2VpdmVyRmlsZShcbiAgICBvcHRpb25zOiBSZWNlaXZlckZpbGVPcHRpb25zLFxuICAgIHJlY2VpdmVyU2hhcmVkS2V5OiBKV0suS2V5LFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVSZWNlaXZlckl0ZW0oe1xuICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBmaWxlOiB7XG4gICAgICAgIGlkOiBvcHRpb25zLmZpbGVJZCxcbiAgICAgICAga2V5SWQ6IG9wdGlvbnMuZmlsZUtleUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZVJlY2VpdmVyKFxuICAgIG9wdGlvbnM6IENyZWF0ZVJlY2VpdmVyT3B0aW9ucyxcbiAgICBhc3NlbWJseUtleTogSldLLktleVxuICApIHtcbiAgICBjb25zdCB7IHNoYXJlZEtleSwgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlUGFydGljaXBhbnQoXG4gICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGFkZERpcmVjdG9yaWVzID1cbiAgICAgIG9wdGlvbnMuYWRkRGlyZWN0b3JpZXMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5hZGREaXJlY3Rvcmllcy5tYXAoKHgpID0+XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQWRkUmVjZWl2ZXJEaXJlY3RvcnkoeCwgc2hhcmVkS2V5LmtleSwgYXNzZW1ibHlLZXkpXG4gICAgICAgIClcbiAgICAgICkpO1xuXG4gICAgY29uc3QgYWRkRmlsZXMgPVxuICAgICAgb3B0aW9ucy5hZGRGaWxlcyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLmFkZEZpbGVzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnByZXBhcmVBZGRSZWNlaXZlckZpbGUoeCwgc2hhcmVkS2V5LmtleSwgYXNzZW1ibHlLZXkpXG4gICAgICAgIClcbiAgICAgICkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm11dGF0aW9uSW5wdXQsXG4gICAgICBhZGREaXJlY3RvcmllcyxcbiAgICAgIGFkZEZpbGVzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVVcGRhdGVSZWNlaXZlcihcbiAgICBvcHRpb25zOiBVcGRhdGVSZWNlaXZlck9wdGlvbnMsXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXksXG4gICAgZXhpc3RpbmdSZWNlaXZlcjogU2NlbmFyaW9SZWNlaXZlck5vZGVcbiAgKSB7XG4gICAgY29uc3Qgc2hhcmVkS2V5SWQgPSBleGlzdGluZ1JlY2VpdmVyLnNoYXJlZEtleS5pZDtcblxuICAgIGNvbnN0IGRlbGV0ZURpcmVjdG9yaWVzT3B0aW9ucyA9IG9wdGlvbnMuZGVsZXRlRGlyZWN0b3JpZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlRGlyZWN0b3JpZXNPcHRpb25zID0gb3B0aW9ucy51cGRhdGVEaXJlY3RvcmllcyB8fCBbXTtcblxuICAgIGNvbnN0IGRlbGV0ZUZpbGVzT3B0aW9ucyA9IG9wdGlvbnMuZGVsZXRlRmlsZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlRmlsZXNPcHRpb25zID0gb3B0aW9ucy51cGRhdGVGaWxlcyB8fCBbXTtcblxuICAgIC8vIEZpbGwgaW4gYW55IG1pc3NpbmcgdXBkYXRlIGRpcmVjdG9yaWVzXG4gICAgbWFwRWRnZXMoZXhpc3RpbmdSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRGlyZWN0b3JpZXMpLmZvckVhY2goXG4gICAgICAoZXhpc3RpbmdEaXJlY3RvcnkpID0+IHtcbiAgICAgICAgaWYgKGRlbGV0ZURpcmVjdG9yaWVzT3B0aW9ucy5pbmNsdWRlcyhleGlzdGluZ0RpcmVjdG9yeS5kaXJlY3RvcnkuaWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHVwZGF0ZURpcmVjdG9yaWVzT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKHgpID0+IHguZGlyZWN0b3J5SWQgPT09IGV4aXN0aW5nRGlyZWN0b3J5LmRpcmVjdG9yeS5pZFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlRGlyZWN0b3JpZXNPcHRpb25zLnB1c2goe1xuICAgICAgICAgIGFjY2Vzc1JvbGU6IGV4aXN0aW5nRGlyZWN0b3J5LmFjY2Vzc1JvbGUsXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IGV4aXN0aW5nRGlyZWN0b3J5LmRpcmVjdG9yeS5pZCxcbiAgICAgICAgICBkaXJlY3RvcnlLZXlJZDogZXhpc3RpbmdEaXJlY3RvcnkuZGlyZWN0b3J5LmtleUlkLFxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246XG4gICAgICAgICAgICBleGlzdGluZ0RpcmVjdG9yeS5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gRmlsbCBpbiBhbnkgbWlzc2luZyB1cGRhdGUgZGlyZWN0b3JpZXNcbiAgICBtYXBFZGdlcyhleGlzdGluZ1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJGaWxlcykuZm9yRWFjaChcbiAgICAgIChleGlzdGluZ0ZpbGUpID0+IHtcbiAgICAgICAgaWYgKGRlbGV0ZUZpbGVzT3B0aW9ucy5pbmNsdWRlcyhleGlzdGluZ0ZpbGUuZmlsZS5pZCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBkYXRlRmlsZXNPcHRpb25zLmZpbmQoKHgpID0+IHguZmlsZUlkID09PSBleGlzdGluZ0ZpbGUuZmlsZS5pZCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVGaWxlc09wdGlvbnMucHVzaCh7XG4gICAgICAgICAgYWNjZXNzUm9sZTogZXhpc3RpbmdGaWxlLmFjY2Vzc1JvbGUsXG4gICAgICAgICAgZmlsZUlkOiBleGlzdGluZ0ZpbGUuZmlsZS5pZCxcbiAgICAgICAgICBmaWxlS2V5SWQ6IGV4aXN0aW5nRmlsZS5maWxlLmtleUlkLFxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246IGV4aXN0aW5nRmlsZS5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgeyBzaGFyZWRLZXksIG11dGF0aW9uSW5wdXQgfSA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVBhcnRpY2lwYW50KFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNoYXJlZEtleUlkXG4gICAgKTtcblxuICAgIGNvbnN0IGFkZERpcmVjdG9yaWVzID1cbiAgICAgIG9wdGlvbnMuYWRkRGlyZWN0b3JpZXMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5hZGREaXJlY3Rvcmllcy5tYXAoKHgpID0+XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQWRkUmVjZWl2ZXJEaXJlY3RvcnkoeCwgc2hhcmVkS2V5LCBhc3NlbWJseUtleSlcbiAgICAgICAgKVxuICAgICAgKSk7XG5cbiAgICBjb25zdCBhZGRGaWxlcyA9XG4gICAgICBvcHRpb25zLmFkZEZpbGVzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMuYWRkRmlsZXMubWFwKCh4KSA9PlxuICAgICAgICAgIHRoaXMucHJlcGFyZUFkZFJlY2VpdmVyRmlsZSh4LCBzaGFyZWRLZXksIGFzc2VtYmx5S2V5KVxuICAgICAgICApXG4gICAgICApKTtcblxuICAgIGNvbnN0IHVwZGF0ZURpcmVjdG9yaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB1cGRhdGVEaXJlY3Rvcmllc09wdGlvbnMubWFwKCh4KSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVVcGRhdGVSZWNlaXZlckRpcmVjdG9yeSh4LCBzaGFyZWRLZXksIGFzc2VtYmx5S2V5KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCB1cGRhdGVGaWxlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdXBkYXRlRmlsZXNPcHRpb25zLm1hcCgoeCkgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlVXBkYXRlUmVjZWl2ZXJGaWxlKHgsIHNoYXJlZEtleSwgYXNzZW1ibHlLZXkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tdXRhdGlvbklucHV0LFxuICAgICAgYWRkRGlyZWN0b3JpZXMsXG4gICAgICBhZGRGaWxlcyxcbiAgICAgIHVwZGF0ZURpcmVjdG9yaWVzLFxuICAgICAgdXBkYXRlRmlsZXMsXG4gICAgICBkZWxldGVEaXJlY3Rvcmllczogb3B0aW9ucy5kZWxldGVEaXJlY3RvcmllcyxcbiAgICAgIGRlbGV0ZUZpbGVzOiBvcHRpb25zLmRlbGV0ZUZpbGVzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVFeGlzdGluZ1JlY2VpdmVyKFxuICAgIGV4aXN0aW5nUmVjZWl2ZXI6IFNjZW5hcmlvUmVjZWl2ZXJOb2RlLFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIGNvbnN0IHVwZGF0ZURpcmVjdG9yaWVzID0gbWFwRWRnZXMoXG4gICAgICBleGlzdGluZ1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJEaXJlY3Rvcmllc1xuICAgICkubWFwKCh7IGFjY2Vzc1JvbGUsIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sIGRpcmVjdG9yeSB9KSA9PiAoe1xuICAgICAgYWNjZXNzUm9sZSxcbiAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICBkaXJlY3RvcnlJZDogZGlyZWN0b3J5LmlkLFxuICAgICAgZGlyZWN0b3J5S2V5SWQ6IGRpcmVjdG9yeS5rZXlJZCxcbiAgICB9KSk7XG5cbiAgICBjb25zdCB1cGRhdGVGaWxlcyA9IG1hcEVkZ2VzKFxuICAgICAgZXhpc3RpbmdSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRmlsZXNcbiAgICApLm1hcCgoeyBhY2Nlc3NSb2xlLCBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLCBmaWxlIH0pID0+ICh7XG4gICAgICBhY2Nlc3NSb2xlLFxuICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIGZpbGVJZDogZmlsZS5pZCxcbiAgICAgIGZpbGVLZXlJZDogZmlsZS5rZXlJZCxcbiAgICB9KSk7XG5cbiAgICAvLyBGaWxsIGl0IGluIHdpdGggZXhpc3RpbmcgcmVjZWl2ZXIuXG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZVVwZGF0ZVJlY2VpdmVyKFxuICAgICAge1xuICAgICAgICB0cElkOiBleGlzdGluZ1JlY2VpdmVyLnRwLmlkLFxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uOiBleGlzdGluZ1JlY2VpdmVyLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICAgIHVwZGF0ZURpcmVjdG9yaWVzLFxuICAgICAgICB1cGRhdGVGaWxlcyxcbiAgICAgIH0sXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIGV4aXN0aW5nUmVjZWl2ZXJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlRXhpc3RpbmdSZWNlaXZlcnMoXG4gICAgZXhpc3RpbmdSZWNlaXZlcnM6IFNjZW5hcmlvUmVjZWl2ZXJOb2RlW10sXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXlcbiAgKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZXhpc3RpbmdSZWNlaXZlcnMubWFwKChleGlzdGluZ1JlY2VpdmVyKSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVFeGlzdGluZ1JlY2VpdmVyKGV4aXN0aW5nUmVjZWl2ZXIsIGFzc2VtYmx5S2V5KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDcmVhdGVQYXJ0aWNpcGFudChvcHRpb25zOiBDcmVhdGVQYXJ0aWNpcGFudE9wdGlvbnMpIHtcbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRXaXRoTmV3S2V5KFxuICAgICAgb3B0aW9ucy50cFNoYXJlZEtleUlkLFxuICAgICAgb3B0aW9ucy5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hhcmVkS2V5LFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICB0cElkOiBvcHRpb25zLnRwSWQsXG4gICAgICAgIHRwU2hhcmVkS2V5SWQ6IG9wdGlvbnMudHBTaGFyZWRLZXlJZCxcbiAgICAgICAgdHBTaGFyZWRLZXlXcmFwcGVkU2hhcmVkS2V5OiBzaGFyZWRLZXkud3JhcHBlZEtleSxcbiAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogc2hhcmVkS2V5LmNpcGhlcixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZVBhcnRpY2lwYW50KFxuICAgIG9wdGlvbnM6IFBhcnRpY2lwYW50T3B0aW9ucyxcbiAgICBzaGFyZWRLZXlJZDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KHNoYXJlZEtleUlkKTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIG9wdGlvbnMuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2hhcmVkS2V5LFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICB0cElkOiBvcHRpb25zLnRwSWQsXG4gICAgICAgIHNoYXJlZEtleUlkLFxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ3JlYXRlQ2xhaW1hbnQob3B0aW9uczogQ3JlYXRlQ2xhaW1hbnRPcHRpb25zKSB7XG4gICAgY29uc3QgeyBtdXRhdGlvbklucHV0IH0gPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVQYXJ0aWNpcGFudChvcHRpb25zKTtcbiAgICByZXR1cm4gbXV0YXRpb25JbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZUNsYWltYW50KFxuICAgIG9wdGlvbnM6IFVwZGF0ZUNsYWltYW50T3B0aW9ucyxcbiAgICBzaGFyZWRLZXlJZDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IHsgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlUGFydGljaXBhbnQoXG4gICAgICBvcHRpb25zLFxuICAgICAgc2hhcmVkS2V5SWRcbiAgICApO1xuXG4gICAgcmV0dXJuIG11dGF0aW9uSW5wdXQ7XG4gIH1cblxuICBhc3luYyBwcmVwYXJlUmVjZWl2ZUNsYWltMihzY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIC8vIEdldCBhbGwgdGhlIHNoYXJlZCBpdGVtc1xuICAgIGNvbnN0IHNoYXJlZFNjZW5hcmlvID0gKFxuICAgICAgYXdhaXQgdGhpcy5nZXRTaGFyZWRTY2VuYXJpbyhzY2VuYXJpb0lkLCBzaGFyZWRDbGFpbUlkKVxuICAgICkuc2hhcmVkU2NlbmFyaW87XG5cbiAgICBpZiAoc2hhcmVkU2NlbmFyaW8uc3RhdGUgIT09IFNjZW5hcmlvU3RhdGUuQVBQUk9WRUQpIHtcbiAgICAgIHRocm93Q2xhaW1Ob3RBcHByb3ZlZCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcHJvdmFscyA9IG1hcEVkZ2VzKFxuICAgICAgc2hhcmVkU2NlbmFyaW8uc2hhcmVkQ2xhaW0uYXNDbGFpbVJlY2VpdmVyLmFwcHJvdmFsc1xuICAgICk7XG5cbiAgICBjb25zdCBhc3NlbWJseUtleSA9IGF3YWl0IHRoaXMucmVjb3ZlckFzc2VtYmx5S2V5KGFwcHJvdmFscyk7XG5cbiAgICAvLyBXcmFwIGFzc2VtYmx5IGtleSB3aXRoIHNoYXJlZCBrZXkuXG4gICAgLy8/Pz9cbiAgICAvLyBUaGlzIHNoYXJlZEtleSBpcyBjcmVhdGVkIGp1c3QgZm9yIHRoaXMgc2NlbmFyaW8uIEl0J3Mgd3JhcHBlZCBieSB0aGUgdHBTaGFyZWRLZXkuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICBzaGFyZWRTY2VuYXJpby5hc1JlY2VpdmVyLnNoYXJlZEtleS5pZFxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXlXcmFwcGVkQXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NlbmFyaW9DbGFpbUlkOiBzaGFyZWRDbGFpbUlkLFxuICAgICAgc2hhcmVkS2V5V3JhcHBlZEFzc2VtYmx5S2V5LFxuICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgIGFzc2VtYmx5S2V5SWQ6IHNoYXJlZFNjZW5hcmlvLnNoYXJlZENsYWltLmFzQ2xhaW1SZWNlaXZlci5hc3NlbWJseUtleUlkLFxuICAgIH07XG4gIH1cblxuICAvLyBhc3luYyBwcmVwYXJlUmVjZWl2ZUNsYWltKHNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gIC8vICAgLy8gR2V0IGFsbCB0aGUgc2hhcmVkIGl0ZW1zXG4gIC8vICAgY29uc3Qgc2hhcmVkU2NlbmFyaW8gPSAoXG4gIC8vICAgICBhd2FpdCB0aGlzLmdldFNoYXJlZFNjZW5hcmlvKHNjZW5hcmlvSWQsIHNoYXJlZENsYWltSWQpXG4gIC8vICAgKS5zaGFyZWRTY2VuYXJpbztcblxuICAvLyAgIGlmIChzaGFyZWRTY2VuYXJpby5zdGF0ZSAhPT0gU2NlbmFyaW9TdGF0ZS5BUFBST1ZFRCkge1xuICAvLyAgICAgdGhyb3dDbGFpbU5vdEFwcHJvdmVkKCk7XG4gIC8vICAgfVxuXG4gIC8vICAgY29uc3QgYXBwcm92YWxzID0gbWFwRWRnZXMoXG4gIC8vICAgICBzaGFyZWRTY2VuYXJpby5zaGFyZWRDbGFpbS5hc0NsYWltUmVjZWl2ZXIuYXBwcm92YWxzXG4gIC8vICAgKTtcblxuICAvLyAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5yZWNvdmVyQXNzZW1ibHlLZXkoYXBwcm92YWxzKTtcblxuICAvLyAgIC8vIERlY3J5cHQgYWxsIGl0ZW1zXG4gIC8vICAgY29uc3QgcmVjZWl2ZXJEaXJlY3RvcmllcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAvLyAgICAgc2hhcmVkU2NlbmFyaW8uYXNSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRGlyZWN0b3JpZXMuZWRnZXNcbiAgLy8gICAgICAgLm1hcCgoZWRnZSkgPT4gZWRnZS5ub2RlKVxuICAvLyAgICAgICAubWFwKGFzeW5jIChyZWNlaXZlckRpcmVjdG9yeSkgPT4ge1xuICAvLyAgICAgICAgIGNvbnN0IHdyYXBwZWRJdGVtS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAvLyAgICAgICAgICAgYXNzZW1ibHlLZXksXG4gIC8vICAgICAgICAgICByZWNlaXZlckRpcmVjdG9yeS53cmFwcGVkSXRlbUtleVxuICAvLyAgICAgICAgICk7XG5cbiAgLy8gICAgICAgICByZXR1cm4ge1xuICAvLyAgICAgICAgICAgcmVjZWl2ZXJEaXJlY3RvcnlJZDogcmVjZWl2ZXJEaXJlY3RvcnkuaWQsXG4gIC8vICAgICAgICAgICAvLyBMb29rcyBsaWtlIHJlY2VpdmVyRGlyZWN0b3J5LndyYXBwZWRJdGVtS2V5IGhhcyBubyBvdGhlciBjb250ZW50IGluIHNpZGUgaXQgZXhjZXB0IGEgd3JhcHBlZCBrZXkuXG4gIC8vICAgICAgICAgICAvLyBTbyB3ZSBjYW4gdHVybiB0aGlzIGluIHRvIGEgZG91Ymx5IHdyYXBwZWQga2V5IGFuZCBqdXN0IHJlbGVhc2UgdGhlIGFzc2VtYmx5IGtleS5cblxuICAvLyAgICAgICAgICAgcmVjZWl2ZXJTaGFyZWRLZXlXcmFwcGVkSXRlbUtleTogd3JhcHBlZEl0ZW1LZXksIC8vIHRoZSB3cmFwcGVkSXRlbUtleSBpcyBhbHJlYWR5IHdyYXBwZWQgYnkgcmVjZWl2ZXJTaGFyZWRLZXlcbiAgLy8gICAgICAgICB9O1xuICAvLyAgICAgICB9KVxuICAvLyAgICk7XG5cbiAgLy8gICByZXR1cm4ge1xuICAvLyAgICAgc2NlbmFyaW9DbGFpbUlkOiBzaGFyZWRDbGFpbUlkLFxuICAvLyAgICAgcmVjZWl2ZXJEaXJlY3RvcmllcyxcbiAgLy8gICB9O1xuICAvLyB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvdmVyQXNzZW1ibHlLZXkoXG4gICAgYXBwcm92YWxzOiBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZWRBcHByb3ZhbE5vZGVbXVxuICApIHtcbiAgICBjb25zdCBwYXJ0aWFscyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBwcm92YWxzLm1hcCgoYXBwcm92YWwpID0+XG4gICAgICAgIHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmc8UGFydGlhbEFzc2VtYmx5S2V5PihcbiAgICAgICAgICBhcHByb3ZhbC5weGsuaWQsXG4gICAgICAgICAgYXBwcm92YWwucmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXNDbGFpbUFwcHJvdmVycyhcbiAgICBzaGFyZWRTY2VuYXJpb0lkLFxuICAgIGNsYWltSWQsXG4gICAgc3RhdGU6IFRwQ2xhaW1BcHByb3ZlclN0YXRlXG4gICkge1xuICAgIGNvbnN0IHNoYXJlZFNjZW5hcmlvID0gKFxuICAgICAgYXdhaXQgdGhpcy5nZXRTaGFyZWRTY2VuYXJpbyhzaGFyZWRTY2VuYXJpb0lkLCBjbGFpbUlkKVxuICAgICkuc2hhcmVkU2NlbmFyaW87XG5cbiAgICByZXR1cm4gbWFwRWRnZXMoc2hhcmVkU2NlbmFyaW8uc2hhcmVkQ2xhaW0uY2xhaW0uYXNDbGFpbUFwcHJvdmVycykuZmlsdGVyKFxuICAgICAgKGFzQ2xhaW1BcHByb3ZlcikgPT4gYXNDbGFpbUFwcHJvdmVyLnN0YXRlID09PSBzdGF0ZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVBcHByb3ZlQ2xhaW1NdXRhdGlvbnMoXG4gICAgc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLFxuICAgIGNsYWltSWQ6IHN0cmluZ1xuICApIHtcbiAgICAvLyBUaGUgY3VycmVudCB1c2VyIG1heSBiZSBhY3RpbmcgYXMgYXBwcm92ZXJzIGluIG11bHRpcGxlIHN1Yi1hc3NlbWJsaWVzIHNvXG4gICAgLy8gd2UgYXBwcm92ZSB0aGVtIGFsbC5cbiAgICBjb25zdCBhc0NsYWltQXBwcm92ZXJzID0gYXdhaXQgdGhpcy5hc0NsYWltQXBwcm92ZXJzKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIGNsYWltSWQsXG4gICAgICBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEXG4gICAgKTtcblxuICAgIHJldHVybiBhc0NsYWltQXBwcm92ZXJzLm1hcChcbiAgICAgIGFzeW5jIChhc0NsYWltQXBwcm92ZXIpID0+XG4gICAgICAgIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICBtdXRhdGlvbjogQXBwcm92ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVBcHByb3ZlQ2xhaW0oYXNDbGFpbUFwcHJvdmVyKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVBcHByb3ZlQ2xhaW0oXG4gICAgYXNDbGFpbUFwcHJvdmVyOiBTaGFyZWRUcENsYWltQXBwcm92ZXJOb2RlXG4gICkge1xuICAgIGNvbnN0IHJlY2VpdmVyQXBwcm92YWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXBFZGdlcyhhc0NsYWltQXBwcm92ZXIucmVjZWl2ZXJBcHByb3ZhbHMpLm1hcCgocmVjZWl2ZXJBcHByb3ZhbCkgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlUmVjZWl2ZXJBcHByb3ZhbCh7XG4gICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbElkOiByZWNlaXZlckFwcHJvdmFsLmlkLFxuICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxQeGtJZDogcmVjZWl2ZXJBcHByb3ZhbC5weGsuaWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uOlxuICAgICAgICAgICAgYXNDbGFpbUFwcHJvdmVyLnNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbixcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYWltQXBwcm92ZXJJZDogYXNDbGFpbUFwcHJvdmVyLmlkLFxuICAgICAgcmVjZWl2ZXJBcHByb3ZhbHMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY2VpdmVyQXBwcm92YWwob3B0aW9uczoge1xuICAgIHJlY2VpdmVyQXBwcm92YWxJZDogc3RyaW5nO1xuICAgIHJlY2VpdmVyQXBwcm92YWxQeGtJZDogc3RyaW5nO1xuICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbjogSlNPTk9iamVjdDtcbiAgfSkge1xuICAgIHJldHVybiB7XG4gICAgICByZWNlaXZlckFwcHJvdmFsSWQ6IG9wdGlvbnMucmVjZWl2ZXJBcHByb3ZhbElkLFxuICAgICAgLy8gVE9ETyBhbGxvdyBzZW5kaW5nIG9mIG1lc3NhZ2VzIHRvIHJlY2VpdmVyLlxuICAgICAgcmVjZWl2ZXJDaXBoZXI6ICcnLFxuICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBvcHRpb25zLnJlY2VpdmVyQXBwcm92YWxQeGtJZCxcbiAgICAgICAgb3B0aW9ucy5zaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb25cbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlamVjdENsYWltTXV0YXRpb25zKFxuICAgIHNoYXJlZFNjZW5hcmlvSWQ6IHN0cmluZyxcbiAgICBjbGFpbUlkOiBzdHJpbmdcbiAgKSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgdXNlciBtYXkgYmUgYWN0aW5nIGFzIGFwcHJvdmVycyBpbiBtdWx0aXBsZSBzdWItYXNzZW1ibGllcyBzb1xuICAgIC8vIHdlIHJlamVjdCB0aGVtIGFsbC5cbiAgICBjb25zdCBhc0NsYWltQXBwcm92ZXJzID0gYXdhaXQgdGhpcy5hc0NsYWltQXBwcm92ZXJzKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIGNsYWltSWQsXG4gICAgICBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEXG4gICAgKTtcblxuICAgIHJldHVybiBhc0NsYWltQXBwcm92ZXJzLm1hcChcbiAgICAgIGFzeW5jIChhc0NsYWltQXBwcm92ZXIpID0+XG4gICAgICAgIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICBtdXRhdGlvbjogUmVqZWN0U2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IHsgY2xhaW1BcHByb3ZlcklkOiBhc0NsYWltQXBwcm92ZXIuaWQgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
677
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zY2VuYXJpby9zY2VuYXJpby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLFFBQVEsRUFHUixhQUFhLEVBR2Isb0JBQW9CLEdBRXJCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXRFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBQ2hDLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLHNCQUFzQixHQUN2QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxh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ZTs7WUFFZiw0RUFBNEU7WUFDNUUsc0JBQXNCO1lBQ3RCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQ2xELGdCQUFnQixFQUNoQixPQUFPLEVBQ1Asb0JBQW9CLENBQUMsT0FBTyxDQUM3QixDQUFDO1lBRUYsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQ3pCLENBQU8sZUFBZSxFQUFFLEVBQUU7Z0JBQ3hCLE9BQUEsSUFBSSxVQUFVLENBQUM7b0JBQ2IsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsU0FBUyxFQUFFO3dCQUNULEtBQUssRUFBRSxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFO3FCQUMvQztpQkFDRixDQUFDLENBQUE7Y0FBQSxDQUNMLENBQUM7UUFDSixDQUFDO0tBQUE7Q0FDRixDQUFBO0FBNzRCZSxpQ0FBaUIsR0FBRyxXQUFXLENBQUM7OztZQWQvQyxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXRFOEIsTUFBTTtZQUFoQixRQUFRO1lBa0JwQixlQUFlO1lBRmYsV0FBVztZQVdYLDBCQUEwQjtZQVoxQixpQkFBaUI7O0FBd0RiLGVBQWU7SUFOM0IsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLGVBQWUsQ0F3NUIzQjtTQXg1QlksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQgeyBMck1lcmdlZE11dGF0aW9uLCBMck11dGF0aW9uLCBMclNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQge1xuICBBY2Nlc3NSb2xlQ2hvaWNlLFxuICBKU09OT2JqZWN0LFxuICBtYXBFZGdlcyxcbiAgU2NlbmFyaW9Ob2RlLFxuICBTY2VuYXJpb1JlY2VpdmVyTm9kZSxcbiAgU2NlbmFyaW9TdGF0ZSxcbiAgU2hhcmVkU2NlbmFyaW9DbGFpbVJlY2VpdmVkQXBwcm92YWxOb2RlLFxuICBTaGFyZWRUcENsYWltQXBwcm92ZXJOb2RlLFxuICBUcENsYWltQXBwcm92ZXJTdGF0ZSxcbiAgVHBOb2RlLFxufSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJdGVtU2VydmljZSB9IGZyb20gJy4uL2l0ZW0vaXRlbS5zZXJ2aWNlJztcbmltcG9ydCB7IElkS2V5UGFpciB9IGZyb20gJy4uL2l0ZW0vaXRlbS50eXBlcyc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHBzS2V5c1F1ZXJ5IH0gZnJvbSAnLi4vdHAtYXNzZW1ibHkvdHAtYXNzZW1ibHkucHJpdmF0ZS5ncWwnO1xuaW1wb3J0IHsgUGFydGlhbEFzc2VtYmx5S2V5IH0gZnJvbSAnLi4vdHAtYXNzZW1ibHkvdHAtYXNzZW1ibHkudHlwZXMnO1xuaW1wb3J0IHtcbiAgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbixcbiAgS2NCYWRTdGF0ZUV4Y2VwdGlvbixcbn0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7IGFzc2VydF94b3IgfSBmcm9tICcuLi9fY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IFNjZW5hcmlvQXNzZW1ibHlDb250cm9sbGVyIH0gZnJvbSAnLi9zY2VuYXJpby5jb250cm9sbGVyJztcbmltcG9ydCB7XG4gIEFwcHJvdmVTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gIENhbmNlbFNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgQ3JlYXRlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBDcmVhdGVTY2VuYXJpb011dGF0aW9uLFxuICBEZWJ1Z0V4cGlyZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgRGVsZXRlU2NlbmFyaW9NdXRhdGlvbixcbiAgUmVjZWl2ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgUmVqZWN0U2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICBVcGRhdGVTY2VuYXJpb011dGF0aW9uLFxufSBmcm9tICcuL3NjZW5hcmlvLmdxbCc7XG5pbXBvcnQgeyBTY2VuYXJpb1F1ZXJ5LCBTaGFyZWRTY2VuYXJpb1F1ZXJ5IH0gZnJvbSAnLi9zY2VuYXJpby5wcml2YXRlLmdxbCc7XG5pbXBvcnQge1xuICBDcmVhdGVDbGFpbWFudE9wdGlvbnMsXG4gIENyZWF0ZVBhcnRpY2lwYW50T3B0aW9ucyxcbiAgQ3JlYXRlUmVjZWl2ZXJPcHRpb25zLFxuICBDcmVhdGVTY2VuYXJpb09wdGlvbnMsXG4gIFBhcnRpY2lwYW50T3B0aW9ucyxcbiAgUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zLFxuICBSZWNlaXZlckZpbGVPcHRpb25zLFxuICBSZWNlaXZlckl0ZW1PcHRpb25zLFxuICBSZXNldFNjZW5hcmlvT3B0aW9ucyxcbiAgVXBkYXRlQ2xhaW1hbnRPcHRpb25zLFxuICBVcGRhdGVSZWNlaXZlck9wdGlvbnMsXG4gIFVwZGF0ZVNjZW5hcmlvT3B0aW9ucyxcbn0gZnJvbSAnLi9zY2VuYXJpby50eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0NsYWltSWRNaXNtYXRjaCgpIHtcbiAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgJ2NsYWltSWQgZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgY3VycmVudCBjbGFpbUlkIG9mIHRoZSBzY2VuYXJpbydcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93Q2xhaW1Ob3RBcHByb3ZlZCgpIHtcbiAgdGhyb3cgbmV3IEtjQmFkU3RhdGVFeGNlcHRpb24oJ1NjZW5hcmlvIGNsYWltIGhhcyBub3QgYmVlbiBhcHByb3ZlZCcpO1xufVxuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NlbmFyaW9TZXJ2aWNlIGV4dGVuZHMgTHJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhc3NlbWJseUNvbnRyb2xsZXI6IFNjZW5hcmlvQXNzZW1ibHlDb250cm9sbGVyLFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIFNMSVAzOV9QQVNTUEhSQVNFID0gJ2xpZmVyZWFkeSc7XG5cbiAgcHJpdmF0ZSBwcmVwYXJlQWRkUmVjZWl2ZXJEaXJlY3RvcnkgPSB0aGlzLnByZXBhcmVSZWNlaXZlckRpcmVjdG9yeTtcbiAgcHJpdmF0ZSBwcmVwYXJlVXBkYXRlUmVjZWl2ZXJEaXJlY3RvcnkgPSB0aGlzLnByZXBhcmVSZWNlaXZlckRpcmVjdG9yeTtcblxuICBwcml2YXRlIHByZXBhcmVBZGRSZWNlaXZlckZpbGUgPSB0aGlzLnByZXBhcmVSZWNlaXZlckZpbGU7XG4gIHByaXZhdGUgcHJlcGFyZVVwZGF0ZVJlY2VpdmVyRmlsZSA9IHRoaXMucHJlcGFyZVJlY2VpdmVyRmlsZTtcblxuICAvLyBTY2VuYXJpb3NcbiAgYXN5bmMgY3JlYXRlU2NlbmFyaW8ob3B0aW9uczogQ3JlYXRlU2NlbmFyaW9PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY3JlYXRlU2NlbmFyaW9NdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnM6IENyZWF0ZVNjZW5hcmlvT3B0aW9ucykge1xuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlU2NlbmFyaW9NdXRhdGlvbihvcHRpb25zKTtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZVNjZW5hcmlvTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlU2NlbmFyaW8ob3B0aW9uczogVXBkYXRlU2NlbmFyaW9PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudXBkYXRlU2NlbmFyaW9NdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVTY2VuYXJpb011dGF0aW9uKG9wdGlvbnM6IFVwZGF0ZVNjZW5hcmlvT3B0aW9ucykge1xuICAgIGNvbnN0IHNjZW5hcmlvID0gKGF3YWl0IHRoaXMuZ2V0U2NlbmFyaW8ob3B0aW9ucy5zY2VuYXJpb0lkKSkuc2NlbmFyaW87XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVTY2VuYXJpbyhvcHRpb25zLCBzY2VuYXJpbyk7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVTY2VuYXJpb011dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0U2NlbmFyaW8ob3B0aW9uczogUmVzZXRTY2VuYXJpb09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5yZXNldFNjZW5hcmlvTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgcmVzZXRTY2VuYXJpb011dGF0aW9uKG9wdGlvbnM6IFJlc2V0U2NlbmFyaW9PcHRpb25zKSB7XG4gICAgY29uc3Qgc2NlbmFyaW8gPSAoYXdhaXQgdGhpcy5nZXRTY2VuYXJpbyhvcHRpb25zLnNjZW5hcmlvSWQpKS5zY2VuYXJpbztcblxuICAgIGNvbnN0IHsgYXNzZW1ibHkgfSA9IHNjZW5hcmlvO1xuXG4gICAgLy8gSnVzdCBuZWVkIHRvIGRvIGFuIHVwZGF0ZSB3aXRob3V0IGNoYW5naW5nIGFwcHJvdmVycy4gVGhpcyB3aWxsIHJlY3JlYXRlXG4gICAgLy8gYWxsIGFzc2VtYmx5IGtleXMuXG4gICAgY29uc3QgdXBkYXRlU3ViQXNzZW1ibGllcyA9IG1hcEVkZ2VzKGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMpLm1hcCgoc2EpID0+IHtcbiAgICAgIGNvbnN0IGFwcHJvdmVyVHBzID0gbWFwRWRnZXMoc2EuYXBwcm92ZXJzKS5tYXAoKGFwcHJvdmVyKSA9PiAoe1xuICAgICAgICB0cElkOiBhcHByb3Zlci50cC5pZCxcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHNhLmlkLFxuICAgICAgICBxdW9ydW06IHNhLnF1b3J1bSxcbiAgICAgICAgc2luZ2xlUmVqZWN0OiBzYS5zaW5nbGVSZWplY3QsXG4gICAgICAgIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uOiBzYS5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgICAgYXBwcm92ZXJUcHMsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVTY2VuYXJpbyhcbiAgICAgIHtcbiAgICAgICAgc2NlbmFyaW9JZDogb3B0aW9ucy5zY2VuYXJpb0lkLFxuICAgICAgICBlbmFibGVkOiBvcHRpb25zLmVuYWJsZWQsXG4gICAgICAgIHVwZGF0ZUFzc2VtYmx5OiB7XG4gICAgICAgICAgcXVvcnVtOiBhc3NlbWJseS5xdW9ydW0sXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBhc3NlbWJseS5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgdXBkYXRlU3ViQXNzZW1ibGllcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzY2VuYXJpb1xuICAgICk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZVNjZW5hcmlvTXV0YXRpb24sIC8vIHVwZGF0aW5nIHNjZW5hcmlvIHJlc2V0cyBpdFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNjZW5hcmlvKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZSh0aGlzLmRlbGV0ZVNjZW5hcmlvTXV0YXRpb24oc2NlbmFyaW9JZCkpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2NlbmFyaW9NdXRhdGlvbihzY2VuYXJpb0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZVNjZW5hcmlvTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQ6IHsgc2NlbmFyaW9JZCB9IH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyBDbGFpbXNcbiAgYXN5bmMgY3JlYXRlQ2xhaW0oc2NlbmFyaW9JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY3JlYXRlQ2xhaW1NdXRhdGlvbihzY2VuYXJpb0lkKSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVDbGFpbU11dGF0aW9uKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ3JlYXRlU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7IGlucHV0OiB7IHNjZW5hcmlvSWQgfSB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsQ2xhaW0oY2xhaW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY2FuY2VsQ2xhaW1NdXRhdGlvbihjbGFpbUlkKSk7XG4gIH1cblxuICBhc3luYyBjYW5jZWxDbGFpbU11dGF0aW9uKGNsYWltSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ2FuY2VsU2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7IGlucHV0OiB7IGNsYWltSWQgfSB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVqZWN0Q2xhaW0oc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLCBjbGFpbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5yZWplY3RDbGFpbU11dGF0aW9uKHNoYXJlZFNjZW5hcmlvSWQsIGNsYWltSWQpKTtcbiAgfVxuXG4gIGFzeW5jIHJlamVjdENsYWltTXV0YXRpb24oc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLCBjbGFpbUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtdXRhdGlvbnMgPSBhd2FpdCB0aGlzLnByZXBhcmVSZWplY3RDbGFpbU11dGF0aW9ucyhcbiAgICAgIHNoYXJlZFNjZW5hcmlvSWQsXG4gICAgICBjbGFpbUlkXG4gICAgKTtcbiAgICByZXR1cm4gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoYXdhaXQgUHJvbWlzZS5hbGwobXV0YXRpb25zKSk7XG4gIH1cblxuICBhc3luYyBhcHByb3ZlQ2xhaW0oc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLCBzaGFyZWRDbGFpbUlkOiBzdHJpbmcpIHtcbiAgICAvLyBUT0RPIHRoaXMgbmVlZHMgYSBjYXN0IHNvIHRoZSByZXN1bHQgaXMgbm90IEFOWS5cbiAgICByZXR1cm4gdGhpcy5tdXRhdGUoXG4gICAgICB0aGlzLmFwcHJvdmVDbGFpbU11dGF0aW9uKHNoYXJlZFNjZW5hcmlvSWQsIHNoYXJlZENsYWltSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGFwcHJvdmVDbGFpbU11dGF0aW9uKHNoYXJlZFNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbXV0YXRpb25zID0gYXdhaXQgdGhpcy5wcmVwYXJlQXBwcm92ZUNsYWltTXV0YXRpb25zKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIHNoYXJlZENsYWltSWRcbiAgICApO1xuICAgIHJldHVybiBMck1lcmdlZE11dGF0aW9uLmNyZWF0ZShhd2FpdCBQcm9taXNlLmFsbChtdXRhdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmVDbGFpbShzY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJlY2VpdmVDbGFpbTJNdXRhdGlvbihzY2VuYXJpb0lkLCBzaGFyZWRDbGFpbUlkKSk7XG4gIH1cblxuICBhc3luYyByZWNlaXZlQ2xhaW0yTXV0YXRpb24oc2NlbmFyaW9JZDogc3RyaW5nLCBzaGFyZWRDbGFpbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFJlY2VpdmVTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IGF3YWl0IHRoaXMucHJlcGFyZVJlY2VpdmVDbGFpbTIoc2NlbmFyaW9JZCwgc2hhcmVkQ2xhaW1JZCksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVidWdFeHBpcmVDbGFpbShzY2VuYXJpb0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5kZWJ1Z0V4cGlyZUNsYWltTXV0YXRpb24oc2NlbmFyaW9JZCkpO1xuICB9XG5cbiAgYXN5bmMgZGVidWdFeHBpcmVDbGFpbU11dGF0aW9uKHNjZW5hcmlvSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVidWdFeHBpcmVTY2VuYXJpb0NsYWltTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHsgc2NlbmFyaW9JZCB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcHJpdmF0ZSBhc3luYyBnZXRTY2VuYXJpbyhzY2VuYXJpb0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeSh7XG4gICAgICBxdWVyeTogU2NlbmFyaW9RdWVyeSxcbiAgICAgIHZhcmlhYmxlczogeyBzY2VuYXJpb0lkIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFNoYXJlZFNjZW5hcmlvKHNjZW5hcmlvSWQ6IHN0cmluZywgY2xhaW1JZD86IHN0cmluZykge1xuICAgIGNvbnN0IHJldCA9IGF3YWl0IHRoaXMucXVlcnkoe1xuICAgICAgcXVlcnk6IFNoYXJlZFNjZW5hcmlvUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgc2NlbmFyaW9JZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoY2xhaW1JZCAmJiByZXQuc2hhcmVkU2NlbmFyaW8uc2hhcmVkQ2xhaW0uaWQgIT09IGNsYWltSWQpIHtcbiAgICAgIHRocm93Q2xhaW1JZE1pc21hdGNoKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UGFydGljaXBhbnRUcHNLZXlzKG9wdGlvbnM6IENyZWF0ZVBhcnRpY2lwYW50T3B0aW9uc1tdKSB7XG4gICAgY29uc3QgdHBJZHMgPSBvcHRpb25zLm1hcCgoeCkgPT4geC50cElkKTtcblxuICAgIC8vIFRoaXMgc2hvdWxkIGNvbnRhaW4gYWxsIHRoZSBUUHMgdGhhdCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgYXNzZW1ibHkuXG4gICAgY29uc3QgdHBzID0gbWFwRWRnZXMoXG4gICAgICAoXG4gICAgICAgIGF3YWl0IHRoaXMubHJHcmFwaFFMLnF1ZXJ5KHtcbiAgICAgICAgICBxdWVyeTogVHBzS2V5c1F1ZXJ5LFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaWRzOiB0cElkcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKS50cHNcbiAgICApO1xuXG4gICAgcmV0dXJuIHRwcztcbiAgfVxuXG4gIHByaXZhdGUgZmlsbFRwU2hhcmVkS2V5SWQoXG4gICAgb3B0aW9uczogQ3JlYXRlUGFydGljaXBhbnRPcHRpb25zW10sXG4gICAgdHBzOiBUcE5vZGVbXVxuICApIHtcbiAgICBvcHRpb25zLmZvckVhY2goKHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICBpZiAoIXBhcnRpY2lwYW50LnRwU2hhcmVkS2V5SWQpIHtcbiAgICAgICAgY29uc3QgdHAgPSB0cHMuZmluZCgoeCkgPT4geC5pZCA9PT0gcGFydGljaXBhbnQudHBJZCk7XG4gICAgICAgIHBhcnRpY2lwYW50LnRwU2hhcmVkS2V5SWQgPVxuICAgICAgICAgIHRwLmN1cnJlbnRVc2VyU2hhcmVkS2V5LnVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ3JlYXRlU2NlbmFyaW9NdXRhdGlvbihvcHRpb25zOiBDcmVhdGVTY2VuYXJpb09wdGlvbnMpIHtcbiAgICBjb25zdCB7IGFzc2VtYmx5S2V5LCBtdXRhdGlvbklucHV0OiBjcmVhdGVBc3NlbWJseSB9ID1cbiAgICAgIGF3YWl0IHRoaXMuYXNzZW1ibHlDb250cm9sbGVyLnByZXBhcmVDcmVhdGUob3B0aW9ucy5jcmVhdGVBc3NlbWJseSk7XG5cbiAgICBjb25zdCBjcmVhdGVSZWNlaXZlcnNPcHRpb25zID0gb3B0aW9ucy5jcmVhdGVSZWNlaXZlcnMgfHwgW107XG4gICAgY29uc3QgY3JlYXRlQ2xhaW1hbnRzT3B0aW9ucyA9IG9wdGlvbnMuY3JlYXRlQ2xhaW1hbnRzIHx8IFtdO1xuXG4gICAgLy8gRmV0Y2ggYWxsIHRoZSBUUHMgc28gd2UgZG9uJ3QgaGF2ZSB0byBwYXNzIGluIHRwU2hhcmVkS2V5SWRcbiAgICBjb25zdCBjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMgPSBjcmVhdGVSZWNlaXZlcnNPcHRpb25zLmNvbmNhdChcbiAgICAgIGNyZWF0ZUNsYWltYW50c09wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgdHBzID0gYXdhaXQgdGhpcy5nZXRQYXJ0aWNpcGFudFRwc0tleXMoY3JlYXRQYXJ0aWNpcGFudHNPcHRpb25zKTtcblxuICAgIHRoaXMuZmlsbFRwU2hhcmVkS2V5SWQoY3JlYXRQYXJ0aWNpcGFudHNPcHRpb25zLCB0cHMpO1xuXG4gICAgY29uc3QgY3JlYXRlUmVjZWl2ZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjcmVhdGVSZWNlaXZlcnNPcHRpb25zLm1hcCgocmVjZWl2ZXIpID0+XG4gICAgICAgIHRoaXMucHJlcGFyZUNyZWF0ZVJlY2VpdmVyKHJlY2VpdmVyLCBhc3NlbWJseUtleSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgY29uc3QgY3JlYXRlQ2xhaW1hbnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjcmVhdGVDbGFpbWFudHNPcHRpb25zLm1hcCgoeCkgPT4gdGhpcy5wcmVwYXJlQ3JlYXRlQ2xhaW1hbnQoeCkpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiBvcHRpb25zLmVuYWJsZWQsXG4gICAgICBpbmFjdGl2ZVNlY29uZHM6IG9wdGlvbnMuaW5hY3RpdmVTZWNvbmRzLFxuICAgICAgY3JlYXRlQXNzZW1ibHksXG4gICAgICBjcmVhdGVSZWNlaXZlcnMsXG4gICAgICBjcmVhdGVDbGFpbWFudHMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZVNjZW5hcmlvKFxuICAgIG9wdGlvbnM6IFVwZGF0ZVNjZW5hcmlvT3B0aW9ucyxcbiAgICBzY2VuYXJpbzogU2NlbmFyaW9Ob2RlXG4gICkge1xuICAgIGxldCBhc3NlbWJseUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KFxuICAgICAgc2NlbmFyaW8uYXNzZW1ibHkuYXNzZW1ibHlLZXkuaWRcbiAgICApO1xuXG4gICAgY29uc3QgdXBkYXRlQXNzZW1ibHkgPSBvcHRpb25zLnVwZGF0ZUFzc2VtYmx5XG4gICAgICA/IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgLy8gQXNzZW1ibHkga2V5IGlzIGFsd2F5cyByb3RhdGVkIHdoZW4gdXBkYXRpbmcgYXNzZW1ibHkuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucHJlcGFyZVVwZGF0ZShcbiAgICAgICAgICAgIG9wdGlvbnMudXBkYXRlQXNzZW1ibHksXG4gICAgICAgICAgICBzY2VuYXJpby5hc3NlbWJseVxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gVXNlIG5ldyBhc3NlbWJseSBrZXkuXG4gICAgICAgICAgYXNzZW1ibHlLZXkgPSByZXN1bHQuYXNzZW1ibHlLZXk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5tdXRhdGlvbklucHV0O1xuICAgICAgICB9KSgpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNyZWF0ZVJlY2VpdmVyc09wdGlvbnMgPSBvcHRpb25zLmNyZWF0ZVJlY2VpdmVycyB8fCBbXTtcbiAgICBjb25zdCBjcmVhdGVDbGFpbWFudHNPcHRpb25zID0gb3B0aW9ucy5jcmVhdGVDbGFpbWFudHMgfHwgW107XG5cbiAgICAvLyBGZXRjaCBhbGwgdGhlIFRQcyBzbyB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgaW4gdHBTaGFyZWRLZXlJZFxuICAgIGNvbnN0IGNyZWF0UGFydGljaXBhbnRzT3B0aW9ucyA9IGNyZWF0ZVJlY2VpdmVyc09wdGlvbnMuY29uY2F0KFxuICAgICAgY3JlYXRlQ2xhaW1hbnRzT3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCB0cHMgPSBhd2FpdCB0aGlzLmdldFBhcnRpY2lwYW50VHBzS2V5cyhjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMpO1xuXG4gICAgdGhpcy5maWxsVHBTaGFyZWRLZXlJZChjcmVhdFBhcnRpY2lwYW50c09wdGlvbnMsIHRwcyk7XG5cbiAgICBjb25zdCBjcmVhdGVSZWNlaXZlcnMgPVxuICAgICAgb3B0aW9ucy5jcmVhdGVSZWNlaXZlcnMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5jcmVhdGVSZWNlaXZlcnMubWFwKCh4KSA9PlxuICAgICAgICAgIHRoaXMucHJlcGFyZUNyZWF0ZVJlY2VpdmVyKHgsIGFzc2VtYmx5S2V5KVxuICAgICAgICApXG4gICAgICApKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nUmVjZWl2ZXJzID0gbWFwRWRnZXMoc2NlbmFyaW8ucmVjZWl2ZXJzKTtcbiAgICBsZXQgdXBkYXRlUmVjZWl2ZXJzID0gb3B0aW9ucy51cGRhdGVSZWNlaXZlcnNcbiAgICAgID8gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgb3B0aW9ucy51cGRhdGVSZWNlaXZlcnMubWFwKCh1cGRhdGVSZWNlaXZlcikgPT4ge1xuICAgICAgICAgICAgLy8gRmluZCB0aGUgcmVjZWl2ZXIgd2UgYXJlIHVwZGF0aW5nXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1JlY2VpdmVyID0gZXhpc3RpbmdSZWNlaXZlcnMuZmluZChcbiAgICAgICAgICAgICAgKHgpID0+IHgudHAuaWQgPT09IHVwZGF0ZVJlY2VpdmVyLnRwSWRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZXBhcmVVcGRhdGVSZWNlaXZlcihcbiAgICAgICAgICAgICAgdXBkYXRlUmVjZWl2ZXIsXG4gICAgICAgICAgICAgIGFzc2VtYmx5S2V5LFxuICAgICAgICAgICAgICBleGlzdGluZ1JlY2VpdmVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIDogW107XG5cbiAgICAvLyBGaWxsIGluIGFueSBtaXNzaW5nIHJlY2VpdmVycyB3aGVuIHVwZGF0aW5nIGFzc2VtYmx5LlxuICAgIGlmIChvcHRpb25zLnVwZGF0ZUFzc2VtYmx5KSB7XG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSByZWNlaXZlcnMgdGhhdCB3aWxsIGJlIGRlbGV0ZWQgb3IgYWxyZWFkeSB1cGRhdGVkLlxuICAgICAgY29uc3QgZXhpc3RpbmcgPSBleGlzdGluZ1JlY2VpdmVycy5maWx0ZXIoXG4gICAgICAgIChleGlzdGluZ1JlY2VpdmVyKSA9PlxuICAgICAgICAgICEob3B0aW9ucy5kZWxldGVSZWNlaXZlcnMgfHwgW10pLmluY2x1ZGVzKGV4aXN0aW5nUmVjZWl2ZXIudHAuaWQpICYmXG4gICAgICAgICAgIXVwZGF0ZVJlY2VpdmVycy5zb21lKFxuICAgICAgICAgICAgKHVwZGF0ZVJlY2VpdmVyKSA9PiB1cGRhdGVSZWNlaXZlci50cElkID09PSBleGlzdGluZ1JlY2VpdmVyLnRwLmlkXG4gICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHVwZGF0ZVJlY2VpdmVycyA9IHVwZGF0ZVJlY2VpdmVycy5jb25jYXQoXG4gICAgICAgIGF3YWl0IHRoaXMucHJlcGFyZUV4aXN0aW5nUmVjZWl2ZXJzKGV4aXN0aW5nLCBhc3NlbWJseUtleSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlQ2xhaW1hbnRzID1cbiAgICAgIG9wdGlvbnMuY3JlYXRlQ2xhaW1hbnRzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMuY3JlYXRlQ2xhaW1hbnRzLm1hcCgoeCkgPT4gdGhpcy5wcmVwYXJlQ3JlYXRlQ2xhaW1hbnQoeCkpXG4gICAgICApKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQ2xhaW1hbnRzID0gbWFwRWRnZXMoc2NlbmFyaW8uY2xhaW1hbnRzKTtcbiAgICBjb25zdCB1cGRhdGVDbGFpbWFudHMgPVxuICAgICAgb3B0aW9ucy51cGRhdGVDbGFpbWFudHMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy51cGRhdGVDbGFpbWFudHMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgY2xhaW1hbnQgd2UgYXJlIHVwZGF0aW5nXG4gICAgICAgICAgY29uc3QgY2xhaW1hbnQgPSBleGlzdGluZ0NsYWltYW50cy5maW5kKFxuICAgICAgICAgICAgKGV4aXN0aW5nQ2xhaW1hbnQpID0+IGV4aXN0aW5nQ2xhaW1hbnQudHAuaWQgPT09IHgudHBJZFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucHJlcGFyZVVwZGF0ZUNsYWltYW50KHgsIGNsYWltYW50LnNoYXJlZEtleS5pZCk7XG4gICAgICAgIH0pXG4gICAgICApKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzY2VuYXJpb0lkOiBvcHRpb25zLnNjZW5hcmlvSWQsXG4gICAgICBlbmFibGVkOiBvcHRpb25zLmVuYWJsZWQsXG4gICAgICBpbmFjdGl2ZVNlY29uZHM6IG9wdGlvbnMuaW5hY3RpdmVTZWNvbmRzLFxuICAgICAgdXBkYXRlQXNzZW1ibHksXG4gICAgICBjcmVhdGVSZWNlaXZlcnMsXG4gICAgICB1cGRhdGVSZWNlaXZlcnMsXG4gICAgICBkZWxldGVSZWNlaXZlcnM6IG9wdGlvbnMuZGVsZXRlUmVjZWl2ZXJzLFxuICAgICAgY3JlYXRlQ2xhaW1hbnRzLFxuICAgICAgdXBkYXRlQ2xhaW1hbnRzLFxuICAgICAgZGVsZXRlQ2xhaW1hbnRzOiBvcHRpb25zLmRlbGV0ZUNsYWltYW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVjZWl2ZXJJdGVtKG9wdGlvbnM6IHtcbiAgICByZWNlaXZlckl0ZW1PcHRpb25zOiBSZWNlaXZlckl0ZW1PcHRpb25zO1xuICAgIHJlY2VpdmVyU2hhcmVkS2V5OiBKV0suS2V5O1xuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5O1xuICAgIGRpcmVjdG9yeT86IElkS2V5UGFpcjtcbiAgICBmaWxlPzogSWRLZXlQYWlyO1xuICB9KSB7XG4gICAgY29uc3Qge1xuICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9ucyxcbiAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBkaXJlY3RvcnksXG4gICAgICBmaWxlLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgYXNzZXJ0X3hvcih7IGRpcmVjdG9yeSwgZmlsZSB9KTtcblxuICAgIGNvbnN0IHsgYWNjZXNzUm9sZSB9ID0gcmVjZWl2ZXJJdGVtT3B0aW9ucztcblxuICAgIGlmIChhY2Nlc3NSb2xlID09IEFjY2Vzc1JvbGVDaG9pY2UuREVOWSkge1xuICAgICAgY29uc3QgcmV0ID0ge1xuICAgICAgICBhY2Nlc3NSb2xlLFxuICAgICAgICB3cmFwcGVkSXRlbUtleTogbnVsbCxcbiAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogbnVsbCxcbiAgICAgIH07XG5cbiAgICAgIGlmIChkaXJlY3RvcnkpIHtcbiAgICAgICAgLy8gQ3J5cHRvZ3JhcGhpYyBhY2Nlc3MgdG8gaXRlbSBpcyBub3QgcmVxdWlyZWQuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmV0LFxuICAgICAgICAgIGRpcmVjdG9yeUlkOiBkaXJlY3RvcnkuaWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBmaWxlSWQ6IGZpbGUuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE8gdGhpcyBzaG91bGQgYmUgYmF0Y2hlZFxuICAgICAgbGV0IGl0ZW1LZXk7XG4gICAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICAgIGl0ZW1LZXkgPSBhd2FpdCB0aGlzLml0ZW1TZXJ2aWNlLmdldERpcmVjdG9yeUtleShcbiAgICAgICAgICBkaXJlY3RvcnkuaWQsXG4gICAgICAgICAgZGlyZWN0b3J5LmtleUlkXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtS2V5ID0gYXdhaXQgdGhpcy5pdGVtU2VydmljZS5nZXRGaWxlS2V5KGZpbGUuaWQsIGZpbGUua2V5SWQpO1xuICAgICAgfVxuXG4gICAgICBsZXQgd3JhcHBlZEl0ZW1LZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgcmVjZWl2ZXJTaGFyZWRLZXksXG4gICAgICAgIGl0ZW1LZXkuandrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc2hhcmVkQ2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICByZWNlaXZlclNoYXJlZEtleSxcbiAgICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9ucy5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgICApO1xuXG4gICAgICB3cmFwcGVkSXRlbUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBhc3NlbWJseUtleSxcbiAgICAgICAgd3JhcHBlZEl0ZW1LZXlcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJldCA9IHtcbiAgICAgICAgYWNjZXNzUm9sZSxcbiAgICAgICAgd3JhcHBlZEl0ZW1LZXksXG4gICAgICAgIHNoYXJlZENpcGhlckRhdGEsXG4gICAgICB9O1xuXG4gICAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmV0LFxuICAgICAgICAgIGRpcmVjdG9yeUlkOiBkaXJlY3RvcnkuaWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJldCxcbiAgICAgICAgICBmaWxlSWQ6IGZpbGUuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVjZWl2ZXJEaXJlY3RvcnkoXG4gICAgb3B0aW9uczogUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zLFxuICAgIHJlY2VpdmVyU2hhcmVkS2V5OiBKV0suS2V5LFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVSZWNlaXZlckl0ZW0oe1xuICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBkaXJlY3Rvcnk6IHtcbiAgICAgICAgaWQ6IG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICAgIGtleUlkOiBvcHRpb25zLmRpcmVjdG9yeUtleUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY2VpdmVyRmlsZShcbiAgICBvcHRpb25zOiBSZWNlaXZlckZpbGVPcHRpb25zLFxuICAgIHJlY2VpdmVyU2hhcmVkS2V5OiBKV0suS2V5LFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVSZWNlaXZlckl0ZW0oe1xuICAgICAgcmVjZWl2ZXJJdGVtT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIHJlY2VpdmVyU2hhcmVkS2V5LFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICBmaWxlOiB7XG4gICAgICAgIGlkOiBvcHRpb25zLmZpbGVJZCxcbiAgICAgICAga2V5SWQ6IG9wdGlvbnMuZmlsZUtleUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZVJlY2VpdmVyKFxuICAgIG9wdGlvbnM6IENyZWF0ZVJlY2VpdmVyT3B0aW9ucyxcbiAgICBhc3NlbWJseUtleTogSldLLktleVxuICApIHtcbiAgICBjb25zdCB7IHNoYXJlZEtleSwgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlUGFydGljaXBhbnQoXG4gICAgICBvcHRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGFkZERpcmVjdG9yaWVzID1cbiAgICAgIG9wdGlvbnMuYWRkRGlyZWN0b3JpZXMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5hZGREaXJlY3Rvcmllcy5tYXAoKHgpID0+XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQWRkUmVjZWl2ZXJEaXJlY3RvcnkoeCwgc2hhcmVkS2V5LmtleSwgYXNzZW1ibHlLZXkpXG4gICAgICAgIClcbiAgICAgICkpO1xuXG4gICAgY29uc3QgYWRkRmlsZXMgPVxuICAgICAgb3B0aW9ucy5hZGRGaWxlcyAmJlxuICAgICAgKGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLmFkZEZpbGVzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnByZXBhcmVBZGRSZWNlaXZlckZpbGUoeCwgc2hhcmVkS2V5LmtleSwgYXNzZW1ibHlLZXkpXG4gICAgICAgIClcbiAgICAgICkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm11dGF0aW9uSW5wdXQsXG4gICAgICBhZGREaXJlY3RvcmllcyxcbiAgICAgIGFkZEZpbGVzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVVcGRhdGVSZWNlaXZlcihcbiAgICBvcHRpb25zOiBVcGRhdGVSZWNlaXZlck9wdGlvbnMsXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXksXG4gICAgZXhpc3RpbmdSZWNlaXZlcjogU2NlbmFyaW9SZWNlaXZlck5vZGVcbiAgKSB7XG4gICAgY29uc3Qgc2hhcmVkS2V5SWQgPSBleGlzdGluZ1JlY2VpdmVyLnNoYXJlZEtleS5pZDtcblxuICAgIGNvbnN0IGRlbGV0ZURpcmVjdG9yaWVzT3B0aW9ucyA9IG9wdGlvbnMuZGVsZXRlRGlyZWN0b3JpZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlRGlyZWN0b3JpZXNPcHRpb25zID0gb3B0aW9ucy51cGRhdGVEaXJlY3RvcmllcyB8fCBbXTtcblxuICAgIGNvbnN0IGRlbGV0ZUZpbGVzT3B0aW9ucyA9IG9wdGlvbnMuZGVsZXRlRmlsZXMgfHwgW107XG4gICAgY29uc3QgdXBkYXRlRmlsZXNPcHRpb25zID0gb3B0aW9ucy51cGRhdGVGaWxlcyB8fCBbXTtcblxuICAgIC8vIEZpbGwgaW4gYW55IG1pc3NpbmcgdXBkYXRlIGRpcmVjdG9yaWVzXG4gICAgbWFwRWRnZXMoZXhpc3RpbmdSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRGlyZWN0b3JpZXMpLmZvckVhY2goXG4gICAgICAoZXhpc3RpbmdEaXJlY3RvcnkpID0+IHtcbiAgICAgICAgaWYgKGRlbGV0ZURpcmVjdG9yaWVzT3B0aW9ucy5pbmNsdWRlcyhleGlzdGluZ0RpcmVjdG9yeS5kaXJlY3RvcnkuaWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHVwZGF0ZURpcmVjdG9yaWVzT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKHgpID0+IHguZGlyZWN0b3J5SWQgPT09IGV4aXN0aW5nRGlyZWN0b3J5LmRpcmVjdG9yeS5pZFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlRGlyZWN0b3JpZXNPcHRpb25zLnB1c2goe1xuICAgICAgICAgIGFjY2Vzc1JvbGU6IGV4aXN0aW5nRGlyZWN0b3J5LmFjY2Vzc1JvbGUsXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IGV4aXN0aW5nRGlyZWN0b3J5LmRpcmVjdG9yeS5pZCxcbiAgICAgICAgICBkaXJlY3RvcnlLZXlJZDogZXhpc3RpbmdEaXJlY3RvcnkuZGlyZWN0b3J5LmtleUlkLFxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246XG4gICAgICAgICAgICBleGlzdGluZ0RpcmVjdG9yeS5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gRmlsbCBpbiBhbnkgbWlzc2luZyB1cGRhdGUgZGlyZWN0b3JpZXNcbiAgICBtYXBFZGdlcyhleGlzdGluZ1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJGaWxlcykuZm9yRWFjaChcbiAgICAgIChleGlzdGluZ0ZpbGUpID0+IHtcbiAgICAgICAgaWYgKGRlbGV0ZUZpbGVzT3B0aW9ucy5pbmNsdWRlcyhleGlzdGluZ0ZpbGUuZmlsZS5pZCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBkYXRlRmlsZXNPcHRpb25zLmZpbmQoKHgpID0+IHguZmlsZUlkID09PSBleGlzdGluZ0ZpbGUuZmlsZS5pZCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVGaWxlc09wdGlvbnMucHVzaCh7XG4gICAgICAgICAgYWNjZXNzUm9sZTogZXhpc3RpbmdGaWxlLmFjY2Vzc1JvbGUsXG4gICAgICAgICAgZmlsZUlkOiBleGlzdGluZ0ZpbGUuZmlsZS5pZCxcbiAgICAgICAgICBmaWxlS2V5SWQ6IGV4aXN0aW5nRmlsZS5maWxlLmtleUlkLFxuICAgICAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246IGV4aXN0aW5nRmlsZS5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgeyBzaGFyZWRLZXksIG11dGF0aW9uSW5wdXQgfSA9IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZVBhcnRpY2lwYW50KFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNoYXJlZEtleUlkXG4gICAgKTtcblxuICAgIGNvbnN0IGFkZERpcmVjdG9yaWVzID1cbiAgICAgIG9wdGlvbnMuYWRkRGlyZWN0b3JpZXMgJiZcbiAgICAgIChhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3B0aW9ucy5hZGREaXJlY3Rvcmllcy5tYXAoKHgpID0+XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQWRkUmVjZWl2ZXJEaXJlY3RvcnkoeCwgc2hhcmVkS2V5LCBhc3NlbWJseUtleSlcbiAgICAgICAgKVxuICAgICAgKSk7XG5cbiAgICBjb25zdCBhZGRGaWxlcyA9XG4gICAgICBvcHRpb25zLmFkZEZpbGVzICYmXG4gICAgICAoYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wdGlvbnMuYWRkRmlsZXMubWFwKCh4KSA9PlxuICAgICAgICAgIHRoaXMucHJlcGFyZUFkZFJlY2VpdmVyRmlsZSh4LCBzaGFyZWRLZXksIGFzc2VtYmx5S2V5KVxuICAgICAgICApXG4gICAgICApKTtcblxuICAgIGNvbnN0IHVwZGF0ZURpcmVjdG9yaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB1cGRhdGVEaXJlY3Rvcmllc09wdGlvbnMubWFwKCh4KSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVVcGRhdGVSZWNlaXZlckRpcmVjdG9yeSh4LCBzaGFyZWRLZXksIGFzc2VtYmx5S2V5KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCB1cGRhdGVGaWxlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdXBkYXRlRmlsZXNPcHRpb25zLm1hcCgoeCkgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlVXBkYXRlUmVjZWl2ZXJGaWxlKHgsIHNoYXJlZEtleSwgYXNzZW1ibHlLZXkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tdXRhdGlvbklucHV0LFxuICAgICAgYWRkRGlyZWN0b3JpZXMsXG4gICAgICBhZGRGaWxlcyxcbiAgICAgIHVwZGF0ZURpcmVjdG9yaWVzLFxuICAgICAgdXBkYXRlRmlsZXMsXG4gICAgICBkZWxldGVEaXJlY3Rvcmllczogb3B0aW9ucy5kZWxldGVEaXJlY3RvcmllcyxcbiAgICAgIGRlbGV0ZUZpbGVzOiBvcHRpb25zLmRlbGV0ZUZpbGVzLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVFeGlzdGluZ1JlY2VpdmVyKFxuICAgIGV4aXN0aW5nUmVjZWl2ZXI6IFNjZW5hcmlvUmVjZWl2ZXJOb2RlLFxuICAgIGFzc2VtYmx5S2V5OiBKV0suS2V5XG4gICkge1xuICAgIGNvbnN0IHVwZGF0ZURpcmVjdG9yaWVzID0gbWFwRWRnZXMoXG4gICAgICBleGlzdGluZ1JlY2VpdmVyLnJlY2VpdmVySXRlbXMucmVjZWl2ZXJEaXJlY3Rvcmllc1xuICAgICkubWFwKCh7IGFjY2Vzc1JvbGUsIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sIGRpcmVjdG9yeSB9KSA9PiAoe1xuICAgICAgYWNjZXNzUm9sZSxcbiAgICAgIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICBkaXJlY3RvcnlJZDogZGlyZWN0b3J5LmlkLFxuICAgICAgZGlyZWN0b3J5S2V5SWQ6IGRpcmVjdG9yeS5rZXlJZCxcbiAgICB9KSk7XG5cbiAgICBjb25zdCB1cGRhdGVGaWxlcyA9IG1hcEVkZ2VzKFxuICAgICAgZXhpc3RpbmdSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRmlsZXNcbiAgICApLm1hcCgoeyBhY2Nlc3NSb2xlLCBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLCBmaWxlIH0pID0+ICh7XG4gICAgICBhY2Nlc3NSb2xlLFxuICAgICAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbixcbiAgICAgIGZpbGVJZDogZmlsZS5pZCxcbiAgICAgIGZpbGVLZXlJZDogZmlsZS5rZXlJZCxcbiAgICB9KSk7XG5cbiAgICAvLyBGaWxsIGl0IGluIHdpdGggZXhpc3RpbmcgcmVjZWl2ZXIuXG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZVVwZGF0ZVJlY2VpdmVyKFxuICAgICAge1xuICAgICAgICB0cElkOiBleGlzdGluZ1JlY2VpdmVyLnRwLmlkLFxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uOiBleGlzdGluZ1JlY2VpdmVyLnNoYXJlZENpcGhlckRhdGFDbGVhckpzb24sXG4gICAgICAgIHVwZGF0ZURpcmVjdG9yaWVzLFxuICAgICAgICB1cGRhdGVGaWxlcyxcbiAgICAgIH0sXG4gICAgICBhc3NlbWJseUtleSxcbiAgICAgIGV4aXN0aW5nUmVjZWl2ZXJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlRXhpc3RpbmdSZWNlaXZlcnMoXG4gICAgZXhpc3RpbmdSZWNlaXZlcnM6IFNjZW5hcmlvUmVjZWl2ZXJOb2RlW10sXG4gICAgYXNzZW1ibHlLZXk6IEpXSy5LZXlcbiAgKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZXhpc3RpbmdSZWNlaXZlcnMubWFwKChleGlzdGluZ1JlY2VpdmVyKSA9PlxuICAgICAgICB0aGlzLnByZXBhcmVFeGlzdGluZ1JlY2VpdmVyKGV4aXN0aW5nUmVjZWl2ZXIsIGFzc2VtYmx5S2V5KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDcmVhdGVQYXJ0aWNpcGFudChvcHRpb25zOiBDcmVhdGVQYXJ0aWNpcGFudE9wdGlvbnMpIHtcbiAgICBjb25zdCBzaGFyZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRXaXRoTmV3S2V5KFxuICAgICAgb3B0aW9ucy50cFNoYXJlZEtleUlkLFxuICAgICAgb3B0aW9ucy5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIHx8ICcnXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hhcmVkS2V5LFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICB0cElkOiBvcHRpb25zLnRwSWQsXG4gICAgICAgIHRwU2hhcmVkS2V5SWQ6IG9wdGlvbnMudHBTaGFyZWRLZXlJZCxcbiAgICAgICAgdHBTaGFyZWRLZXlXcmFwcGVkU2hhcmVkS2V5OiBzaGFyZWRLZXkud3JhcHBlZEtleSxcbiAgICAgICAgc2hhcmVkQ2lwaGVyRGF0YTogc2hhcmVkS2V5LmNpcGhlcixcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZVBhcnRpY2lwYW50KFxuICAgIG9wdGlvbnM6IFBhcnRpY2lwYW50T3B0aW9ucyxcbiAgICBzaGFyZWRLZXlJZDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IHNoYXJlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KHNoYXJlZEtleUlkKTtcblxuICAgIGNvbnN0IHNoYXJlZENpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIG9wdGlvbnMuc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbiB8fCAnJ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2hhcmVkS2V5LFxuICAgICAgbXV0YXRpb25JbnB1dDoge1xuICAgICAgICB0cElkOiBvcHRpb25zLnRwSWQsXG4gICAgICAgIHNoYXJlZEtleUlkLFxuICAgICAgICBzaGFyZWRDaXBoZXJEYXRhLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ3JlYXRlQ2xhaW1hbnQob3B0aW9uczogQ3JlYXRlQ2xhaW1hbnRPcHRpb25zKSB7XG4gICAgY29uc3QgeyBtdXRhdGlvbklucHV0IH0gPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVQYXJ0aWNpcGFudChvcHRpb25zKTtcbiAgICByZXR1cm4gbXV0YXRpb25JbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZUNsYWltYW50KFxuICAgIG9wdGlvbnM6IFVwZGF0ZUNsYWltYW50T3B0aW9ucyxcbiAgICBzaGFyZWRLZXlJZDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IHsgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlUGFydGljaXBhbnQoXG4gICAgICBvcHRpb25zLFxuICAgICAgc2hhcmVkS2V5SWRcbiAgICApO1xuXG4gICAgcmV0dXJuIG11dGF0aW9uSW5wdXQ7XG4gIH1cblxuICBhc3luYyBwcmVwYXJlUmVjZWl2ZUNsYWltMihzY2VuYXJpb0lkOiBzdHJpbmcsIHNoYXJlZENsYWltSWQ6IHN0cmluZykge1xuICAgIC8vIEdldCBhbGwgdGhlIHNoYXJlZCBpdGVtc1xuICAgIGNvbnN0IHNoYXJlZFNjZW5hcmlvID0gKFxuICAgICAgYXdhaXQgdGhpcy5nZXRTaGFyZWRTY2VuYXJpbyhzY2VuYXJpb0lkLCBzaGFyZWRDbGFpbUlkKVxuICAgICkuc2hhcmVkU2NlbmFyaW87XG5cbiAgICBpZiAoc2hhcmVkU2NlbmFyaW8uc3RhdGUgIT09IFNjZW5hcmlvU3RhdGUuQVBQUk9WRUQpIHtcbiAgICAgIHRocm93Q2xhaW1Ob3RBcHByb3ZlZCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGFwcHJvdmFscyA9IG1hcEVkZ2VzKFxuICAgICAgc2hhcmVkU2NlbmFyaW8uc2hhcmVkQ2xhaW0uYXNDbGFpbVJlY2VpdmVyLmFwcHJvdmFsc1xuICAgICk7XG5cbiAgICBjb25zdCBhc3NlbWJseUtleSA9IGF3YWl0IHRoaXMucmVjb3ZlckFzc2VtYmx5S2V5KGFwcHJvdmFscyk7XG5cbiAgICAvLyBXcmFwIGFzc2VtYmx5IGtleSB3aXRoIHNoYXJlZCBrZXkuXG4gICAgLy8/Pz9cbiAgICAvLyBUaGlzIHNoYXJlZEtleSBpcyBjcmVhdGVkIGp1c3QgZm9yIHRoaXMgc2NlbmFyaW8uIEl0J3Mgd3JhcHBlZCBieSB0aGUgdHBTaGFyZWRLZXkuXG4gICAgY29uc3Qgc2hhcmVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICBzaGFyZWRTY2VuYXJpby5hc1JlY2VpdmVyLnNoYXJlZEtleS5pZFxuICAgICk7XG5cbiAgICBjb25zdCBzaGFyZWRLZXlXcmFwcGVkQXNzZW1ibHlLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHNoYXJlZEtleSxcbiAgICAgIGFzc2VtYmx5S2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NlbmFyaW9DbGFpbUlkOiBzaGFyZWRDbGFpbUlkLFxuICAgICAgc2hhcmVkS2V5V3JhcHBlZEFzc2VtYmx5S2V5LFxuICAgICAgc2hhcmVkS2V5SWQ6IHNoYXJlZEtleS5pZCxcbiAgICAgIGFzc2VtYmx5S2V5SWQ6IHNoYXJlZFNjZW5hcmlvLnNoYXJlZENsYWltLmFzQ2xhaW1SZWNlaXZlci5hc3NlbWJseUtleUlkLFxuICAgIH07XG4gIH1cblxuICAvLyBhc3luYyBwcmVwYXJlUmVjZWl2ZUNsYWltKHNjZW5hcmlvSWQ6IHN0cmluZywgc2hhcmVkQ2xhaW1JZDogc3RyaW5nKSB7XG4gIC8vICAgLy8gR2V0IGFsbCB0aGUgc2hhcmVkIGl0ZW1zXG4gIC8vICAgY29uc3Qgc2hhcmVkU2NlbmFyaW8gPSAoXG4gIC8vICAgICBhd2FpdCB0aGlzLmdldFNoYXJlZFNjZW5hcmlvKHNjZW5hcmlvSWQsIHNoYXJlZENsYWltSWQpXG4gIC8vICAgKS5zaGFyZWRTY2VuYXJpbztcblxuICAvLyAgIGlmIChzaGFyZWRTY2VuYXJpby5zdGF0ZSAhPT0gU2NlbmFyaW9TdGF0ZS5BUFBST1ZFRCkge1xuICAvLyAgICAgdGhyb3dDbGFpbU5vdEFwcHJvdmVkKCk7XG4gIC8vICAgfVxuXG4gIC8vICAgY29uc3QgYXBwcm92YWxzID0gbWFwRWRnZXMoXG4gIC8vICAgICBzaGFyZWRTY2VuYXJpby5zaGFyZWRDbGFpbS5hc0NsYWltUmVjZWl2ZXIuYXBwcm92YWxzXG4gIC8vICAgKTtcblxuICAvLyAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5yZWNvdmVyQXNzZW1ibHlLZXkoYXBwcm92YWxzKTtcblxuICAvLyAgIC8vIERlY3J5cHQgYWxsIGl0ZW1zXG4gIC8vICAgY29uc3QgcmVjZWl2ZXJEaXJlY3RvcmllcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAvLyAgICAgc2hhcmVkU2NlbmFyaW8uYXNSZWNlaXZlci5yZWNlaXZlckl0ZW1zLnJlY2VpdmVyRGlyZWN0b3JpZXMuZWRnZXNcbiAgLy8gICAgICAgLm1hcCgoZWRnZSkgPT4gZWRnZS5ub2RlKVxuICAvLyAgICAgICAubWFwKGFzeW5jIChyZWNlaXZlckRpcmVjdG9yeSkgPT4ge1xuICAvLyAgICAgICAgIGNvbnN0IHdyYXBwZWRJdGVtS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAvLyAgICAgICAgICAgYXNzZW1ibHlLZXksXG4gIC8vICAgICAgICAgICByZWNlaXZlckRpcmVjdG9yeS53cmFwcGVkSXRlbUtleVxuICAvLyAgICAgICAgICk7XG5cbiAgLy8gICAgICAgICByZXR1cm4ge1xuICAvLyAgICAgICAgICAgcmVjZWl2ZXJEaXJlY3RvcnlJZDogcmVjZWl2ZXJEaXJlY3RvcnkuaWQsXG4gIC8vICAgICAgICAgICAvLyBMb29rcyBsaWtlIHJlY2VpdmVyRGlyZWN0b3J5LndyYXBwZWRJdGVtS2V5IGhhcyBubyBvdGhlciBjb250ZW50IGluIHNpZGUgaXQgZXhjZXB0IGEgd3JhcHBlZCBrZXkuXG4gIC8vICAgICAgICAgICAvLyBTbyB3ZSBjYW4gdHVybiB0aGlzIGluIHRvIGEgZG91Ymx5IHdyYXBwZWQga2V5IGFuZCBqdXN0IHJlbGVhc2UgdGhlIGFzc2VtYmx5IGtleS5cblxuICAvLyAgICAgICAgICAgcmVjZWl2ZXJTaGFyZWRLZXlXcmFwcGVkSXRlbUtleTogd3JhcHBlZEl0ZW1LZXksIC8vIHRoZSB3cmFwcGVkSXRlbUtleSBpcyBhbHJlYWR5IHdyYXBwZWQgYnkgcmVjZWl2ZXJTaGFyZWRLZXlcbiAgLy8gICAgICAgICB9O1xuICAvLyAgICAgICB9KVxuICAvLyAgICk7XG5cbiAgLy8gICByZXR1cm4ge1xuICAvLyAgICAgc2NlbmFyaW9DbGFpbUlkOiBzaGFyZWRDbGFpbUlkLFxuICAvLyAgICAgcmVjZWl2ZXJEaXJlY3RvcmllcyxcbiAgLy8gICB9O1xuICAvLyB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvdmVyQXNzZW1ibHlLZXkoXG4gICAgYXBwcm92YWxzOiBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZWRBcHByb3ZhbE5vZGVbXVxuICApIHtcbiAgICBjb25zdCBwYXJ0aWFscyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBwcm92YWxzLm1hcCgoYXBwcm92YWwpID0+XG4gICAgICAgIHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmc8UGFydGlhbEFzc2VtYmx5S2V5PihcbiAgICAgICAgICBhcHByb3ZhbC5weGsuaWQsXG4gICAgICAgICAgYXBwcm92YWwucmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXNDbGFpbUFwcHJvdmVycyhcbiAgICBzaGFyZWRTY2VuYXJpb0lkLFxuICAgIGNsYWltSWQsXG4gICAgc3RhdGU6IFRwQ2xhaW1BcHByb3ZlclN0YXRlXG4gICkge1xuICAgIGNvbnN0IHNoYXJlZFNjZW5hcmlvID0gKFxuICAgICAgYXdhaXQgdGhpcy5nZXRTaGFyZWRTY2VuYXJpbyhzaGFyZWRTY2VuYXJpb0lkLCBjbGFpbUlkKVxuICAgICkuc2hhcmVkU2NlbmFyaW87XG5cbiAgICByZXR1cm4gbWFwRWRnZXMoc2hhcmVkU2NlbmFyaW8uc2hhcmVkQ2xhaW0uY2xhaW0uYXNDbGFpbUFwcHJvdmVycykuZmlsdGVyKFxuICAgICAgKGFzQ2xhaW1BcHByb3ZlcikgPT4gYXNDbGFpbUFwcHJvdmVyLnN0YXRlID09PSBzdGF0ZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVBcHByb3ZlQ2xhaW1NdXRhdGlvbnMoXG4gICAgc2hhcmVkU2NlbmFyaW9JZDogc3RyaW5nLFxuICAgIGNsYWltSWQ6IHN0cmluZ1xuICApIHtcbiAgICAvLyBUaGUgY3VycmVudCB1c2VyIG1heSBiZSBhY3RpbmcgYXMgYXBwcm92ZXJzIGluIG11bHRpcGxlIHN1Yi1hc3NlbWJsaWVzIHNvXG4gICAgLy8gd2UgYXBwcm92ZSB0aGVtIGFsbC5cbiAgICBjb25zdCBhc0NsYWltQXBwcm92ZXJzID0gYXdhaXQgdGhpcy5hc0NsYWltQXBwcm92ZXJzKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIGNsYWltSWQsXG4gICAgICBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEXG4gICAgKTtcblxuICAgIHJldHVybiBhc0NsYWltQXBwcm92ZXJzLm1hcChcbiAgICAgIGFzeW5jIChhc0NsYWltQXBwcm92ZXIpID0+XG4gICAgICAgIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICBtdXRhdGlvbjogQXBwcm92ZVNjZW5hcmlvQ2xhaW1NdXRhdGlvbixcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVBcHByb3ZlQ2xhaW0oYXNDbGFpbUFwcHJvdmVyKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVBcHByb3ZlQ2xhaW0oXG4gICAgYXNDbGFpbUFwcHJvdmVyOiBTaGFyZWRUcENsYWltQXBwcm92ZXJOb2RlXG4gICkge1xuICAgIGNvbnN0IHJlY2VpdmVyQXBwcm92YWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtYXBFZGdlcyhhc0NsYWltQXBwcm92ZXIucmVjZWl2ZXJBcHByb3ZhbHMpLm1hcCgocmVjZWl2ZXJBcHByb3ZhbCkgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlUmVjZWl2ZXJBcHByb3ZhbCh7XG4gICAgICAgICAgcmVjZWl2ZXJBcHByb3ZhbElkOiByZWNlaXZlckFwcHJvdmFsLmlkLFxuICAgICAgICAgIHJlY2VpdmVyQXBwcm92YWxQeGtJZDogcmVjZWl2ZXJBcHByb3ZhbC5weGsuaWQsXG4gICAgICAgICAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uOlxuICAgICAgICAgICAgYXNDbGFpbUFwcHJvdmVyLnNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbixcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYWltQXBwcm92ZXJJZDogYXNDbGFpbUFwcHJvdmVyLmlkLFxuICAgICAgcmVjZWl2ZXJBcHByb3ZhbHMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY2VpdmVyQXBwcm92YWwob3B0aW9uczoge1xuICAgIHJlY2VpdmVyQXBwcm92YWxJZDogc3RyaW5nO1xuICAgIHJlY2VpdmVyQXBwcm92YWxQeGtJZDogc3RyaW5nO1xuICAgIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbjogSlNPTk9iamVjdDtcbiAgfSkge1xuICAgIHJldHVybiB7XG4gICAgICByZWNlaXZlckFwcHJvdmFsSWQ6IG9wdGlvbnMucmVjZWl2ZXJBcHByb3ZhbElkLFxuICAgICAgLy8gVE9ETyBhbGxvdyBzZW5kaW5nIG9mIG1lc3NhZ2VzIHRvIHJlY2VpdmVyLlxuICAgICAgcmVjZWl2ZXJDaXBoZXI6ICcnLFxuICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk6IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBvcHRpb25zLnJlY2VpdmVyQXBwcm92YWxQeGtJZCxcbiAgICAgICAgb3B0aW9ucy5zaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb25cbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlamVjdENsYWltTXV0YXRpb25zKFxuICAgIHNoYXJlZFNjZW5hcmlvSWQ6IHN0cmluZyxcbiAgICBjbGFpbUlkOiBzdHJpbmdcbiAgKSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgdXNlciBtYXkgYmUgYWN0aW5nIGFzIGFwcHJvdmVycyBpbiBtdWx0aXBsZSBzdWItYXNzZW1ibGllcyBzb1xuICAgIC8vIHdlIHJlamVjdCB0aGVtIGFsbC5cbiAgICBjb25zdCBhc0NsYWltQXBwcm92ZXJzID0gYXdhaXQgdGhpcy5hc0NsYWltQXBwcm92ZXJzKFxuICAgICAgc2hhcmVkU2NlbmFyaW9JZCxcbiAgICAgIGNsYWltSWQsXG4gICAgICBUcENsYWltQXBwcm92ZXJTdGF0ZS5DTEFJTUVEXG4gICAgKTtcblxuICAgIHJldHVybiBhc0NsYWltQXBwcm92ZXJzLm1hcChcbiAgICAgIGFzeW5jIChhc0NsYWltQXBwcm92ZXIpID0+XG4gICAgICAgIG5ldyBMck11dGF0aW9uKHtcbiAgICAgICAgICBtdXRhdGlvbjogUmVqZWN0U2NlbmFyaW9DbGFpbU11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IHsgY2xhaW1BcHByb3ZlcklkOiBhc0NsYWltQXBwcm92ZXIuaWQgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc2NlbmFyaW8vc2NlbmFyaW8udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY2Vzc1JvbGVDaG9pY2UsIEpTT05PYmplY3QgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlVHBBc3NlbWJseUlucHV0LFxuICBVcGRhdGVUcEFzc2VtYmx5SW5wdXQsXG59IGZyb20gJy4uL3RwLWFzc2VtYmx5L3RwLWFzc2VtYmx5LnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWNpcGFudE9wdGlvbnMge1xuICB0cElkOiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVBhcnRpY2lwYW50T3B0aW9ucyBleHRlbmRzIFBhcnRpY2lwYW50T3B0aW9ucyB7XG4gIC8qKiBUaGlzIGlzIHRoZSBUUC5zaGFyZWRLZXkgdXNlZCB0byB3cmFwIHRoZSBhcHByb3ZlciBzaGFyZWQga2V5IHdoaWNoIHdpbGwgYmUgY3JlYXRlZC4gKi9cbiAgdHBTaGFyZWRLZXlJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlUGFydGljaXBhbnRPcHRpb25zID0gUGFydGljaXBhbnRPcHRpb25zO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVySXRlbU9wdGlvbnMge1xuICBhY2Nlc3NSb2xlOiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICAvLyBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIG11c3Qgbm90IGJlIGdpdmVuIGlmIGFjY2VzcyByb2xlIGlzIERFTllcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zIGV4dGVuZHMgUmVjZWl2ZXJJdGVtT3B0aW9ucyB7XG4gIGRpcmVjdG9yeUlkOiBzdHJpbmc7XG4gIGRpcmVjdG9yeUtleUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVyRmlsZU9wdGlvbnMgZXh0ZW5kcyBSZWNlaXZlckl0ZW1PcHRpb25zIHtcbiAgZmlsZUlkOiBzdHJpbmc7XG4gIGZpbGVLZXlJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zID0gUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zO1xuZXhwb3J0IHR5cGUgVXBkYXRlUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zID0gUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVSZWNlaXZlckZpbGVPcHRpb25zID0gUmVjZWl2ZXJGaWxlT3B0aW9ucztcbmV4cG9ydCB0eXBlIFVwZGF0ZVJlY2VpdmVyRmlsZU9wdGlvbnMgPSBSZWNlaXZlckZpbGVPcHRpb25zO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJlY2VpdmVyT3B0aW9ucyBleHRlbmRzIENyZWF0ZVBhcnRpY2lwYW50T3B0aW9ucyB7XG4gIGFkZERpcmVjdG9yaWVzPzogQ3JlYXRlUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zW107XG4gIGFkZEZpbGVzPzogQ3JlYXRlUmVjZWl2ZXJGaWxlT3B0aW9uc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJlY2VpdmVyT3B0aW9ucyBleHRlbmRzIFVwZGF0ZVBhcnRpY2lwYW50T3B0aW9ucyB7XG4gIGFkZERpcmVjdG9yaWVzPzogQ3JlYXRlUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zW107XG4gIGFkZEZpbGVzPzogQ3JlYXRlUmVjZWl2ZXJGaWxlT3B0aW9uc1tdO1xuICB1cGRhdGVEaXJlY3Rvcmllcz86IFVwZGF0ZVJlY2VpdmVyRGlyZWN0b3J5T3B0aW9uc1tdO1xuICB1cGRhdGVGaWxlcz86IFVwZGF0ZVJlY2VpdmVyRmlsZU9wdGlvbnNbXTtcbiAgZGVsZXRlRGlyZWN0b3JpZXM/OiBzdHJpbmdbXTtcbiAgZGVsZXRlRmlsZXM/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc2NlbmFyaW8vc2NlbmFyaW8udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY2Vzc1JvbGVDaG9pY2UsIEpTT05PYmplY3QgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlVHBBc3NlbWJseUlucHV0LFxuICBVcGRhdGVUcEFzc2VtYmx5SW5wdXQsXG59IGZyb20gJy4uL3RwLWFzc2VtYmx5L3RwLWFzc2VtYmx5LnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWNpcGFudE9wdGlvbnMge1xuICB0cElkOiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVBhcnRpY2lwYW50T3B0aW9ucyBleHRlbmRzIFBhcnRpY2lwYW50T3B0aW9ucyB7XG4gIC8qKiBUaGlzIGlzIHRoZSBUUC5zaGFyZWRLZXkgdXNlZCB0byB3cmFwIHRoZSBhcHByb3ZlciBzaGFyZWQga2V5IHdoaWNoIHdpbGwgYmUgY3JlYXRlZC4gKi9cbiAgdHBTaGFyZWRLZXlJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlUGFydGljaXBhbnRPcHRpb25zID0gUGFydGljaXBhbnRPcHRpb25zO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVySXRlbU9wdGlvbnMge1xuICBhY2Nlc3NSb2xlOiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICAvLyBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uIG11c3Qgbm90IGJlIGdpdmVuIGlmIGFjY2VzcyByb2xlIGlzIERFTllcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zIGV4dGVuZHMgUmVjZWl2ZXJJdGVtT3B0aW9ucyB7XG4gIGRpcmVjdG9yeUlkOiBzdHJpbmc7XG4gIGRpcmVjdG9yeUtleUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVyRmlsZU9wdGlvbnMgZXh0ZW5kcyBSZWNlaXZlckl0ZW1PcHRpb25zIHtcbiAgZmlsZUlkOiBzdHJpbmc7XG4gIGZpbGVLZXlJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zID0gUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zO1xuZXhwb3J0IHR5cGUgVXBkYXRlUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zID0gUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVSZWNlaXZlckZpbGVPcHRpb25zID0gUmVjZWl2ZXJGaWxlT3B0aW9ucztcbmV4cG9ydCB0eXBlIFVwZGF0ZVJlY2VpdmVyRmlsZU9wdGlvbnMgPSBSZWNlaXZlckZpbGVPcHRpb25zO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJlY2VpdmVyT3B0aW9ucyBleHRlbmRzIENyZWF0ZVBhcnRpY2lwYW50T3B0aW9ucyB7XG4gIGFkZERpcmVjdG9yaWVzPzogQ3JlYXRlUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zW107XG4gIGFkZEZpbGVzPzogQ3JlYXRlUmVjZWl2ZXJGaWxlT3B0aW9uc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJlY2VpdmVyT3B0aW9ucyBleHRlbmRzIFVwZGF0ZVBhcnRpY2lwYW50T3B0aW9ucyB7XG4gIGFkZERpcmVjdG9yaWVzPzogQ3JlYXRlUmVjZWl2ZXJEaXJlY3RvcnlPcHRpb25zW107XG4gIGFkZEZpbGVzPzogQ3JlYXRlUmVjZWl2ZXJGaWxlT3B0aW9uc1tdO1xuICB1cGRhdGVEaXJlY3Rvcmllcz86IFVwZGF0ZVJlY2VpdmVyRGlyZWN0b3J5T3B0aW9uc1tdO1xuICB1cGRhdGVGaWxlcz86IFVwZGF0ZVJlY2VpdmVyRmlsZU9wdGlvbnNbXTtcbiAgZGVsZXRlRGlyZWN0b3JpZXM/OiBzdHJpbmdbXTtcbiAgZGVsZXRlRmlsZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2xhaW1hbnRPcHRpb25zID0gQ3JlYXRlUGFydGljaXBhbnRPcHRpb25zO1xuZXhwb3J0IHR5cGUgVXBkYXRlQ2xhaW1hbnRPcHRpb25zID0gVXBkYXRlUGFydGljaXBhbnRPcHRpb25zO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNjZW5hcmlvT3B0aW9ucyB7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGluYWN0aXZlU2Vjb25kcz86IG51bWJlcjtcbiAgY3JlYXRlQXNzZW1ibHk/OiBDcmVhdGVUcEFzc2VtYmx5SW5wdXQ7XG4gIGNyZWF0ZVJlY2VpdmVycz86IENyZWF0ZVJlY2VpdmVyT3B0aW9uc1tdO1xuICBjcmVhdGVDbGFpbWFudHM/OiBDcmVhdGVDbGFpbWFudE9wdGlvbnNbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVTY2VuYXJpb09wdGlvbnMge1xuICBzY2VuYXJpb0lkOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGluYWN0aXZlU2Vjb25kcz86IG51bWJlcjtcbiAgdXBkYXRlQXNzZW1ibHk/OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQ7XG4gIGNyZWF0ZVJlY2VpdmVycz86IENyZWF0ZVJlY2VpdmVyT3B0aW9uc1tdO1xuICB1cGRhdGVSZWNlaXZlcnM/OiBVcGRhdGVSZWNlaXZlck9wdGlvbnNbXTtcbiAgZGVsZXRlUmVjZWl2ZXJzPzogc3RyaW5nW107XG4gIGNyZWF0ZUNsYWltYW50cz86IENyZWF0ZUNsYWltYW50T3B0aW9uc1tdO1xuICB1cGRhdGVDbGFpbWFudHM/OiBVcGRhdGVDbGFpbWFudE9wdGlvbnNbXTtcbiAgZGVsZXRlQ2xhaW1hbnRzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRTY2VuYXJpb09wdGlvbnMge1xuICBzY2VuYXJpb0lkOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG59XG4iXX0=
|