vcomply-workflow-engine 6.1.11 → 6.1.13
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/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +14 -10
- package/esm2022/lib/sharedComponents/floating-bar/floating-bar.component.mjs +5 -4
- package/esm2022/lib/sharedComponents/floating-bar/floating-bar.module.mjs +6 -5
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +2 -2
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +39 -17
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.interface.mjs +1 -1
- package/esm2022/lib/sharedComponents/pipes/parentResponsibilitySelection.pipe.mjs +2 -2
- package/esm2022/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +5 -4
- package/esm2022/lib/workflow/shared/workflow-pipes/get-user-details.pipe.mjs +2 -2
- package/esm2022/lib/workflow/shared/workflow-pipes/user-short-name.pipe.mjs +33 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +13 -8
- package/fesm2022/vcomply-workflow-engine.mjs +134 -73
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/sharedComponents/floating-bar/floating-bar.module.d.ts +4 -3
- package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +3 -0
- package/lib/sharedComponents/link-responsibility/link-responsibility.interface.d.ts +2 -0
- package/lib/workflow/shared/workflow-pipes/user-short-name.pipe.d.ts +7 -0
- package/lib/workflow/shared/workflow-pipes/workflow-pipes.module.d.ts +6 -5
- package/package.json +1 -1
|
@@ -114,7 +114,7 @@ export class LinkResponsibilityListComponent {
|
|
|
114
114
|
if (!Array.isArray(this.selectedResponsibilityValues))
|
|
115
115
|
return;
|
|
116
116
|
this.selectedResponsibilityValues =
|
|
117
|
-
this.selectedResponsibilityValues.flatMap(({ responsibilityId, reportName, assigneeIds = [], responsibilityCenters = [], }) => {
|
|
117
|
+
this.selectedResponsibilityValues.flatMap(({ responsibilityId, reportName, assigneeIds = [], responsibilityCenters = [], assigneeBridgeId = [], responsibilityCenterBridgeId = [], }) => {
|
|
118
118
|
if (!Array.isArray(assigneeIds) ||
|
|
119
119
|
!Array.isArray(responsibilityCenters))
|
|
120
120
|
return [];
|
|
@@ -123,6 +123,8 @@ export class LinkResponsibilityListComponent {
|
|
|
123
123
|
assigneeId,
|
|
124
124
|
responsibilityCenter,
|
|
125
125
|
reportName,
|
|
126
|
+
assigneeBridgeId,
|
|
127
|
+
responsibilityCenterBridgeId,
|
|
126
128
|
})));
|
|
127
129
|
});
|
|
128
130
|
}
|
|
@@ -200,18 +202,36 @@ export class LinkResponsibilityListComponent {
|
|
|
200
202
|
responsibilityId,
|
|
201
203
|
assigneeIds: [],
|
|
202
204
|
responsibilityCenters: [],
|
|
205
|
+
assigneeBridgeId: [],
|
|
206
|
+
responsibilityCenterBridgeId: [],
|
|
203
207
|
reportName: item?.reportName,
|
|
204
208
|
};
|
|
205
209
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
210
|
+
// Add assigneeId if not already present
|
|
211
|
+
if (!result[responsibilityId]?.assigneeIds?.includes(assigneeId)) {
|
|
212
|
+
result[responsibilityId]?.assigneeIds?.push(assigneeId);
|
|
213
|
+
}
|
|
214
|
+
// Add responsibilityCenter if not already present
|
|
215
|
+
if (!result[responsibilityId]?.responsibilityCenters?.includes(responsibilityCenter)) {
|
|
216
|
+
result[responsibilityId]?.responsibilityCenters?.push(responsibilityCenter);
|
|
217
|
+
}
|
|
218
|
+
this.getBridgeIds(result);
|
|
219
|
+
}
|
|
220
|
+
getBridgeIds(result) {
|
|
221
|
+
for (const key in result) {
|
|
222
|
+
const item = result[key];
|
|
223
|
+
item.assigneeIds.forEach((assigneeId) => {
|
|
224
|
+
const assignee = this.userList.find((user) => user?.id === assigneeId);
|
|
225
|
+
if (!item.assigneeBridgeId.find((id) => id === assignee?.uid)) {
|
|
226
|
+
item.assigneeBridgeId?.push(assignee?.uid);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
item.responsibilityCenters.forEach((responsibilityCenter) => {
|
|
230
|
+
const rc = this.rcList.find((rc) => rc?.id === responsibilityCenter);
|
|
231
|
+
if (!item.responsibilityCenterBridgeId.find((id) => id === rc?.rcid)) {
|
|
232
|
+
item.responsibilityCenterBridgeId?.push(rc?.rcid);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
215
235
|
}
|
|
216
236
|
}
|
|
217
237
|
onClickTabChange(tab) {
|
|
@@ -247,10 +267,10 @@ export class LinkResponsibilityListComponent {
|
|
|
247
267
|
this.isOnCompletionRc = this.feature.isFeatureEnabled('ff_on_completion_rc');
|
|
248
268
|
}
|
|
249
269
|
selectResp(resp, mode) {
|
|
250
|
-
const
|
|
251
|
-
if (!
|
|
270
|
+
const checkedResp = this.generateResponsibilityId(resp);
|
|
271
|
+
if (!checkedResp?.length)
|
|
252
272
|
return;
|
|
253
|
-
|
|
273
|
+
checkedResp.forEach((item) => {
|
|
254
274
|
const existsIndex = this.selectedResponsibilityValues.findIndex((ele) => ele.responsibilityId === item.responsibilityId &&
|
|
255
275
|
ele.assigneeId === item.assigneeId &&
|
|
256
276
|
ele.responsibilityCenter === item.responsibilityCenter);
|
|
@@ -286,10 +306,12 @@ export class LinkResponsibilityListComponent {
|
|
|
286
306
|
}
|
|
287
307
|
generateRespObj(resp, assigneeId, responsibilityCenter) {
|
|
288
308
|
return {
|
|
289
|
-
responsibilityId: resp?.
|
|
309
|
+
responsibilityId: resp?.rid,
|
|
290
310
|
assigneeId: assigneeId,
|
|
291
311
|
responsibilityCenter: responsibilityCenter,
|
|
292
312
|
reportName: resp?.title,
|
|
313
|
+
assigneeBridgeId: [],
|
|
314
|
+
responsibilityCenterBridgeId: [],
|
|
293
315
|
};
|
|
294
316
|
}
|
|
295
317
|
viewResponsibility(id) {
|
|
@@ -343,11 +365,11 @@ export class LinkResponsibilityListComponent {
|
|
|
343
365
|
return newResponsibilities;
|
|
344
366
|
}
|
|
345
367
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LinkResponsibilityListComponent, deps: [{ token: i1.FrequencyService }, { token: i2.ComplianceCommonService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
346
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LinkResponsibilityListComponent, selector: "app-link-responsibility-list", inputs: { onCompletionOfResponsibility: "onCompletionOfResponsibility", feature: "feature", respIdKey: "respIdKey", selectedResponsibilityValues: "selectedResponsibilityValues", radioSelection: "radioSelection" }, outputs: { closeButton: "closeButton", selectedResponsibility: "selectedResponsibility" }, ngImport: i0, template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-row clickable\"\n [class.active]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n [class.open]=\"this.viewResponsibilityId === responsibility?.id\"\n [class.selected]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"'1'\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [value]=\"responsibility?.id\"\n [ngValue]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n (ngValueChange)=\"selectResp(responsibility, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"\n ></app-avatar>\n <ng-container\n *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n <app-avatar\n [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\"\n [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \"\n [userDetails]=\"assigneeDetails\"\n appStopPropagation\n ></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\"\n [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button\n *ngIf=\"responsibility?.responsibilityCenters?.length > 1\"\n class=\"vx-badgeNum xs minimal\"\n appPopover\n (click)=\"respPopover.popover()\"\n placement=\"left\"\n >\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [appTooltip]=\"rc\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ rc }}</span\n >\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n >\n <button\n *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \"\n (click)=\"viewResponsibility(responsibility?.id)\"\n class=\"vx-icon-button minimal small\"\n >\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"\"\n : \"\"\n }}</i\n >\n </button>\n </div>\n </div>\n <div\n *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \"\n class=\"open-more\"\n >\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <app-cs-checkbox\n [value]=\"data?.id\"\n [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \"\n (ngValueChange)=\"selectResp(data, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <ng-container\n *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n \n <div class=\"avatar-area\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"assigneeDetails\"\n ></app-avatar>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\"\n [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n ></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!responsibilityFloaterBarData?.length\"\n [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\"\n [pluralText]=\"floaterBarText.PLURAL_TEXT\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "isResponsibility", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i6.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: i7.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i10.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i11.PaginationComponentUI, selector: "app-pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.AvatarComponent, selector: "app-avatar", inputs: ["userDetails", "type", "avatarClass"] }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i14.GetUserDetailsPipe, name: "getUserDetails" }, { kind: "pipe", type: i15.GetRCListPipe, name: "getRCList" }, { kind: "pipe", type: i16.ParentResponsibilitySelectionPipe, name: "isRespSelected" }] }); }
|
|
368
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LinkResponsibilityListComponent, selector: "app-link-responsibility-list", inputs: { onCompletionOfResponsibility: "onCompletionOfResponsibility", feature: "feature", respIdKey: "respIdKey", selectedResponsibilityValues: "selectedResponsibilityValues", radioSelection: "radioSelection" }, outputs: { closeButton: "closeButton", selectedResponsibility: "selectedResponsibility" }, ngImport: i0, template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-row clickable\"\n [class.active]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n [class.open]=\"this.viewResponsibilityId === responsibility?.id\"\n [class.selected]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"'1'\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [value]=\"responsibility?.rid\"\n [ngValue]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n (ngValueChange)=\"selectResp(responsibility, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"\n ></app-avatar>\n <ng-container\n *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n <app-avatar\n [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\"\n [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \"\n [userDetails]=\"assigneeDetails\"\n appStopPropagation\n ></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\"\n [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button\n *ngIf=\"responsibility?.responsibilityCenters?.length > 1\"\n class=\"vx-badgeNum xs minimal\"\n appPopover\n (click)=\"respPopover.popover()\"\n placement=\"left\"\n >\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [appTooltip]=\"rc\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ rc }}</span\n >\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n >\n <button\n *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \"\n (click)=\"viewResponsibility(responsibility?.id)\"\n class=\"vx-icon-button minimal small\"\n >\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"\"\n : \"\"\n }}</i\n >\n </button>\n </div>\n </div>\n <div\n *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \"\n class=\"open-more\"\n >\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <app-cs-checkbox\n [value]=\"data?.rid\"\n [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \"\n (ngValueChange)=\"selectResp(data, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <ng-container\n *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n \n <div class=\"avatar-area\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"assigneeDetails\"\n ></app-avatar>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\"\n [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n ></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!responsibilityFloaterBarData?.length\"\n [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\"\n [pluralText]=\"floaterBarText.PLURAL_TEXT\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "isResponsibility", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i6.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: i7.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i10.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i11.PaginationComponentUI, selector: "app-pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.AvatarComponent, selector: "app-avatar", inputs: ["userDetails", "type", "avatarClass"] }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i14.GetUserDetailsPipe, name: "getUserDetails" }, { kind: "pipe", type: i15.GetRCListPipe, name: "getRCList" }, { kind: "pipe", type: i16.ParentResponsibilitySelectionPipe, name: "isRespSelected" }] }); }
|
|
347
369
|
}
|
|
348
370
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LinkResponsibilityListComponent, decorators: [{
|
|
349
371
|
type: Component,
|
|
350
|
-
args: [{ selector: 'app-link-responsibility-list', template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-row clickable\"\n [class.active]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n [class.open]=\"this.viewResponsibilityId === responsibility?.id\"\n [class.selected]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"'1'\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [value]=\"responsibility?.id\"\n [ngValue]=\"\n responsibility?.id\n | isRespSelected : selectedResponsibilityValues\n \"\n (ngValueChange)=\"selectResp(responsibility, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"\n ></app-avatar>\n <ng-container\n *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n <app-avatar\n [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\"\n [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \"\n [userDetails]=\"assigneeDetails\"\n appStopPropagation\n ></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\"\n [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button\n *ngIf=\"responsibility?.responsibilityCenters?.length > 1\"\n class=\"vx-badgeNum xs minimal\"\n appPopover\n (click)=\"respPopover.popover()\"\n placement=\"left\"\n >\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [appTooltip]=\"rc\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ rc }}</span\n >\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n >\n <button\n *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \"\n (click)=\"viewResponsibility(responsibility?.id)\"\n class=\"vx-icon-button minimal small\"\n >\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"\"\n : \"\"\n }}</i\n >\n </button>\n </div>\n </div>\n <div\n *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \"\n class=\"open-more\"\n >\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <app-cs-checkbox\n [value]=\"data?.id\"\n [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \"\n (ngValueChange)=\"selectResp(data, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <ng-container\n *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n \n <div class=\"avatar-area\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"assigneeDetails\"\n ></app-avatar>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\"\n [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n ></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!responsibilityFloaterBarData?.length\"\n [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\"\n [pluralText]=\"floaterBarText.PLURAL_TEXT\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
372
|
+
args: [{ selector: 'app-link-responsibility-list', template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-row clickable\"\n [class.active]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n [class.open]=\"this.viewResponsibilityId === responsibility?.id\"\n [class.selected]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"'1'\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [value]=\"responsibility?.rid\"\n [ngValue]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n (ngValueChange)=\"selectResp(responsibility, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"\n ></app-avatar>\n <ng-container\n *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n <app-avatar\n [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\"\n [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \"\n [userDetails]=\"assigneeDetails\"\n appStopPropagation\n ></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\"\n [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button\n *ngIf=\"responsibility?.responsibilityCenters?.length > 1\"\n class=\"vx-badgeNum xs minimal\"\n appPopover\n (click)=\"respPopover.popover()\"\n placement=\"left\"\n >\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [appTooltip]=\"rc\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ rc }}</span\n >\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n >\n <button\n *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \"\n (click)=\"viewResponsibility(responsibility?.id)\"\n class=\"vx-icon-button minimal small\"\n >\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"\"\n : \"\"\n }}</i\n >\n </button>\n </div>\n </div>\n <div\n *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \"\n class=\"open-more\"\n >\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <app-cs-checkbox\n [value]=\"data?.rid\"\n [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \"\n (ngValueChange)=\"selectResp(data, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <ng-container\n *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n \n <div class=\"avatar-area\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"assigneeDetails\"\n ></app-avatar>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\"\n [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n ></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!responsibilityFloaterBarData?.length\"\n [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\"\n [pluralText]=\"floaterBarText.PLURAL_TEXT\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
351
373
|
}], ctorParameters: function () { return [{ type: i1.FrequencyService }, { type: i2.ComplianceCommonService }]; }, propDecorators: { onCompletionOfResponsibility: [{
|
|
352
374
|
type: Input
|
|
353
375
|
}], feature: [{
|
|
@@ -363,4 +385,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
363
385
|
}], selectedResponsibility: [{
|
|
364
386
|
type: Output
|
|
365
387
|
}] } });
|
|
366
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVF4RSxNQUFNLE9BQU8sK0JBQStCO0lBcUYxQyxZQUNVLGdCQUFrQyxFQUNsQyx1QkFBZ0Q7UUFEaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBcEZqRCxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGlDQUE0QixHQUFRLEVBQUUsQ0FBQztRQUN2QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUUvQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxjQUFTLEdBQVks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bUIsRUFBRSxJQUFJO3lCQUMxQjtxQkFDRjtpQkFDRixDQUFDO2dCQUNGLG1CQUFtQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7K0dBdFpVLCtCQUErQjttR0FBL0IsK0JBQStCLHFYQ2I1QyxxNWNBc1dBOzs0RkR6VmEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDhCQUE4Qjs2SUFLL0IsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IExJTktfUkVTUE9OU0lCSUxJVFlfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2xpbmstcmVzcG9uc2liaWxpdHkuY29uc3RhbnRzJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9mcmVxdWVuY3kvZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBBVkFUQVJfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vdWkta2l0L2F2YXRhci9hdmF0YXIuY29uc3RhbnRzJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5IH0gZnJvbSAnLi9saW5rLXJlc3BvbnNpYmlsaXR5LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1saW5rLXJlc3BvbnNpYmlsaXR5LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmstcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlua1Jlc3BvbnNpYmlsaXR5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9uQ29tcGxldGlvbk9mUmVzcG9uc2liaWxpdHk6IGFueTtcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBASW5wdXQoKSByZXNwSWRLZXk6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgcmFkaW9TZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2xvc2VCdXR0b24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEFWQVRBUl9DT05TVEFOVFMgPSBBVkFUQVJfQ09OU1RBTlRTO1xuXG4gIGFuaW1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICByZXNwb25zaWJpbGl0eUxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1ZhbGlkT2JqOiBib29sZWFuID0gZmFsc2U7XG4gIGlzT25Db21wbGV0aW9uUmM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICByZXNwb25zaWJpbGl0aWVzRGF0YTogYW55ID0ge307XG4gIHJlc3BvbnNpYmlsaXR5VGFiQ291bnQ6IGFueSA9IHtcbiAgICByZWd1bGF0aW9uQ291bnQ6IDAsXG4gICAgc3RhbmRhcmRDb3VudDogMCxcbiAgICBpbnRlcm5hbENvdW50OiAwLFxuICAgIG90aGVyc0NvdW50OiAwLFxuICB9O1xuICB0eXBlVG9Db3VudFByb3BlcnR5OiBhbnkgPSB7XG4gICAgMDogJ290aGVyc0NvdW50JyxcbiAgICAxOiAncmVndWxhdGlvbkNvdW50JyxcbiAgICAyOiAnc3RhbmRhcmRDb3VudCcsXG4gICAgMzogJ2ludGVybmFsQ291bnQnLFxuICB9O1xuICByZXNwb25zaWJpbGl0eVBheWxvYWQgPSB7XG4gICAgdHlwZTogJ2FsbCcsXG4gICAgcGFnaW5hdGlvblR5cGU6ICdsYXJnZScsXG4gICAgYTogJycsXG4gICAgc2VhcmNoVGV4dDogJycsXG4gICAgZmlsdGVyRGF0YToge1xuICAgICAgYXBwTGlzdDogW10sXG4gICAgICByaXNrSWRzOiBbXSxcbiAgICAgIHJldmlld2VySWQ6IFtdLFxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxuICAgICAgZW50cnVzdGVkQnk6IFtdLFxuICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgcmVzcG9uc2liaWxpdHlDYXRlZ29yeTogW10sXG4gICAgICBjb21wbGlhbmNlVHlwZTogWzFdLFxuICAgIH0sXG4gICAgcGFnZU5vOiAxLFxuICAgIHNvcnRPYmo6IHtcbiAgICAgIHNvcnRCeTogJycsXG4gICAgICB0eXBlOiAnJyxcbiAgICB9LFxuICAgIHBhZ2VOYW1lOiAnb3ZlcnZpZXcnLFxuICB9O1xuXG4gIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZDogYW55W10gPSBbXTtcbiAgcmVzcG9uc2liaWxpdHlUYWJzOiBhbnlbXSA9IFtcbiAgICB7IG5hbWU6ICdSRUdVTEFUSU9OUycsIHR5cGU6IDEgfSxcbiAgICB7IG5hbWU6ICdTVEFOREFSRFMnLCB0eXBlOiAyIH0sXG4gICAgeyBuYW1lOiAnSU5URVJOQUwgQ09OVFJPTFMnLCB0eXBlOiAzIH0sXG4gICAgeyBuYW1lOiAnT1RIRVJTJywgdHlwZTogMCB9LFxuICBdO1xuXG4gIGN1cnJlbnRUYWI6IG51bWJlciA9IDE7XG4gIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIHJlZ3VsYXRpb25Db3VudDogbnVtYmVyID0gMDtcbiAgc3RhbmRhcmRzQ291bnQ6IG51bWJlciA9IDA7XG4gIGludGVybmFsc0NvdW50OiBudW1iZXIgPSAwO1xuICBvdGhlcnNDb3VudDogbnVtYmVyID0gMDtcblxuICByZXNwb25zaWJpbGl0eVNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUy5OT19EQVRBX01FU1NBR0UuTk9fREFUQTtcbiAgbm9EYXRhSW1hZ2VQYXRoOiBzdHJpbmcgPSBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUy5OT19EQVRBLklNQUdFO1xuICBmbG9hdGVyQmFyVGV4dDogYW55ID0gTElOS19SRVNQT05TSUJJTElUWV9DT05TVEFOVFMuRkxPQVRJTkdfQkFSO1xuXG4gIHJlc3BvbnNpYmlsaXR5TGlzdDogYW55O1xuICBmZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mOiBhbnk7XG4gIGNsb3NlOiBhbnk7XG4gIHVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICByY0xpc3Q6IGFueVtdID0gW107XG4gIGFsbFJjTGlzdDogYW55W10gPSBbXTtcbiAgdmlld1Jlc3BvbnNpYmlsaXR5SWQ6IGFueTtcbiAgdmlld1Jlc3BvbnNpYmlsaXR5RGF0YTogYW55ID0ge307XG4gIHJlc3BvbnNpYmlsaXR5RmxvYXRlckJhckRhdGE6IGFueSA9IFtdO1xuXG4gIGlzUmVzcG9uc2liaWxpdHlTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcbiAgICBwcml2YXRlIGNvbXBsaWFuY2VDb21tb25TZXJ2aWNlOiBDb21wbGlhbmNlQ29tbW9uU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRSZXNwb25zaWJpbGl0eVZhbHVlcygpO1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KCk7XG4gICAgdGhpcy5nZXRSY0xpc3QoKTtcbiAgfVxuXG4gIGJhY2soKSB7XG4gICAgdGhpcy5jbG9zZUJ1dHRvbi5lbWl0KCk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eVZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGbG9hdGVyQmFyRGF0YSA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5tYXAoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnJlc3BvbnNpYmlsaXR5SWRcbiAgICAgICk7XG4gICAgICB0aGlzLnBvcHVsYXRlUmVzcG9uc2liaWxpdHlWYWx1ZXMoKTtcbiAgICB9XG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICB9XG5cbiAgcG9wdWxhdGVSZXNwb25zaWJpbGl0eVZhbHVlcygpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5mbGF0TWFwKFxuICAgICAgICAoe1xuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5SWQsXG4gICAgICAgICAgcmVwb3J0TmFtZSxcbiAgICAgICAgICBhc3NpZ25lZUlkcyA9IFtdLFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IFtdLFxuICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYXNzaWduZWVJZHMpIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShyZXNwb25zaWJpbGl0eUNlbnRlcnMpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgcmV0dXJuIGFzc2lnbmVlSWRzLmZsYXRNYXAoKGFzc2lnbmVlSWQpID0+XG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMubWFwKChyZXNwb25zaWJpbGl0eUNlbnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlJZCxcbiAgICAgICAgICAgICAgYXNzaWduZWVJZCxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXIsXG4gICAgICAgICAgICAgIHJlcG9ydE5hbWUsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0UmNMaXN0KCkge1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2UuZ2V0UmNMaXN0SW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsUmNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VObzogbnVtYmVyID0gMSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObywgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YSA9IHRoaXMubWFwUmVzcG9uc2liaWxpdGllc0RhdGEocmVzPy5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXM/LmRhdGE/LnVzZXJzO1xuICAgICAgICAgICAgdGhpcy5yY0xpc3QgPSByZXM/LmRhdGE/LnJlc3BvbnNpYmlsaXR5Q2VudGVycztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBSZXNwb25zaWJpbGl0aWVzRGF0YShyZXM6IGFueSkge1xuICAgIGNvbnN0IHBhZ2VTaXplID0gMTA7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXM/LnBhZ2UgfHwgMTtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gcmVzPy50b3RhbCB8fCAwO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplIC0gMSwgdG90YWxJdGVtcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogcmVzPy5yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgdG90YWxfcmVzcG9uc2liaWxpdGllczogdG90YWxJdGVtcyxcbiAgICAgIHRvdGFsX3BhZ2VzOiBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLFxuICAgICAgcmVzcG9uc2liaWxpdGllc19mcm9tOiBzdGFydEluZGV4LFxuICAgICAgcmVzcG9uc2liaWxpdGllc190bzogZW5kSW5kZXgsXG4gICAgfTtcbiAgfVxuXG4gIHJlc3BvbnNpYmlsaXR5UGFnZUNoYW5nZShwYWdlTnVtYmVyOiBudW1iZXIpIHtcbiAgICBpZiAocGFnZU51bWJlciAhPT0gdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YS5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQucGFnZU5vID0gcGFnZU51bWJlcjtcbiAgICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VOdW1iZXIpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUl0ZW0oaXRlbTogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5maW5kSW5kZXgoXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGl0ZW1bdGhpcy5yZXNwSWRLZXldXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZmlsdGVyKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZVt0aGlzLnJlc3BJZEtleV0gIT09IGl0ZW1bdGhpcy5yZXNwSWRLZXldXG4gICAgICApO1xuICAgIHRoaXMuaXNWYWxpZE9iaiA9IGZhbHNlO1xuICB9XG5cbiAgc2F2ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5jbG9zZUJ1dHRvbi5lbWl0KCk7XG4gICAgdGhpcy5maWx0ZXJVbmlxdWVSZXNwb25zaWJpbGl0eVZhbHVlcygpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eS5lbWl0KHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyk7XG4gIH1cblxuICBmaWx0ZXJVbmlxdWVSZXNwb25zaWJpbGl0eVZhbHVlcygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcz8ubGVuZ3RoKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgcmVzdWx0OiBSZXNwb25zaWJpbGl0eSA9IHt9O1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuXG4gICAgICB0aGlzLmluc2VydFVuaXF1ZVJlc3BvbnNpYmlsaXR5KHJlc3VsdCwgaXRlbSk7XG4gICAgfSk7XG4gICAgLy8gQ29udmVydCB0aGUgcmVzdWx0IG9iamVjdCBpbnRvIGFuIGFycmF5XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQpO1xuICB9XG5cbiAgaW5zZXJ0VW5pcXVlUmVzcG9uc2liaWxpdHkocmVzdWx0OiBSZXNwb25zaWJpbGl0eSwgaXRlbTogYW55KSB7XG4gICAgY29uc3QgeyByZXNwb25zaWJpbGl0eUlkLCBhc3NpZ25lZUlkLCByZXNwb25zaWJpbGl0eUNlbnRlciB9ID0gaXRlbTtcbiAgICBpZiAoIXJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXSkge1xuICAgICAgcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdID0ge1xuICAgICAgICByZXNwb25zaWJpbGl0eUlkLFxuICAgICAgICBhc3NpZ25lZUlkczogW10sXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyczogW10sXG4gICAgICAgIHJlcG9ydE5hbWU6IGl0ZW0/LnJlcG9ydE5hbWUsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBZGQgYXNzaWduZWVJZCBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgICBpZiAoIXJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXT8uYXNzaWduZWVJZHM/LmluY2x1ZGVzKGFzc2lnbmVlSWQpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXT8uYXNzaWduZWVJZHM/LnB1c2goYXNzaWduZWVJZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCByZXNwb25zaWJpbGl0eUNlbnRlciBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgICBpZiAoXG4gICAgICAgICFyZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0/LnJlc3BvbnNpYmlsaXR5Q2VudGVycz8uaW5jbHVkZXMoXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzPy5wdXNoKFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25DbGlja1RhYkNoYW5nZSh0YWI6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFRhYiA9IHRhYj8udHlwZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5maWx0ZXJEYXRhLmNvbXBsaWFuY2VUeXBlID0gW3RoaXMuY3VycmVudFRhYl07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQuc2VhcmNoVGV4dCA9IHRoaXMucmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0O1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcztcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnNlYXJjaFRleHQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dDtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnBhZ2VObyA9IHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgc2V0UmVzcG9uc2liaWxpdGllc0NvdW50KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkKSk7XG4gICAgcGF5bG9hZC5maWx0ZXJEYXRhLmNvbXBsaWFuY2VUeXBlID0gWzAsIDEsIDIsIDNdO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRSZXNwb25zaWJpbGl0aWVzQ291bnQocGF5bG9hZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5yZWd1bGF0aW9uQ291bnQgPSByZXM/LnJlZ3VsYXRpb25fY291bnQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5zdGFuZGFyZENvdW50ID0gcmVzPy5zdGFuZGFyZF9jb3VudDtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVRhYkNvdW50LmludGVybmFsQ291bnQgPSByZXM/LmludGVybmFsX2NvdW50O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5VGFiQ291bnQub3RoZXJzQ291bnQgPSByZXM/Lm90aGVyc19jb3VudDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYWxpemUgYWxsIHRoZSBGZWF0dXJlIGZsYWcgYmFzZWQgdmFyaWFibGVzXG4gIGZlYXR1cmVGbGFnSW5pdGlhbGl6YXRpb24oKSB7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfZnJlcXVlbmN5X29uX2NvbXBsZXRpb25fb2YnXG4gICAgKTtcbiAgICB0aGlzLmlzT25Db21wbGV0aW9uUmMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9vbl9jb21wbGV0aW9uX3JjJ1xuICAgICk7XG4gIH1cblxuICBzZWxlY3RSZXNwKHJlc3A6IGFueSwgbW9kZTogYm9vbGVhbikge1xuICAgIGNvbnN0IHNlbGVjdGVkUmVzcCA9IHRoaXMuZ2VuZXJhdGVSZXNwb25zaWJpbGl0eUlkKHJlc3ApO1xuICAgIGlmICghc2VsZWN0ZWRSZXNwPy5sZW5ndGgpIHJldHVybjtcblxuICAgIHNlbGVjdGVkUmVzcC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0c0luZGV4ID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PlxuICAgICAgICAgIGVsZS5yZXNwb25zaWJpbGl0eUlkID09PSBpdGVtLnJlc3BvbnNpYmlsaXR5SWQgJiZcbiAgICAgICAgICBlbGUuYXNzaWduZWVJZCA9PT0gaXRlbS5hc3NpZ25lZUlkICYmXG4gICAgICAgICAgZWxlLnJlc3BvbnNpYmlsaXR5Q2VudGVyID09PSBpdGVtLnJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICApO1xuICAgICAgaWYgKG1vZGUgJiYgZXhpc3RzSW5kZXggPT09IC0xKSB7XG4gICAgICAgIC8vIEFkZCBpZiBub3QgcHJlc2VudFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMucHVzaChpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSBpZiBwcmVzZW50XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5zcGxpY2UoZXhpc3RzSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGUucmVzcG9uc2liaWxpdHlJZFxuICAgICk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuc29tZShcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5yZXNwb25zaWJpbGl0eUlkID09PSByZXNwPy5pZFxuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhID0gW1xuICAgICAgLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZCksXG4gICAgXTtcbiAgfVxuXG4gIGdlbmVyYXRlUmVzcG9uc2liaWxpdHlJZChyZXNwOiBhbnkpIHtcbiAgICBjb25zdCBhc3NpZ25lZUlkcyA9IHJlc3A/LmFzc2lnbmVlcz8udXNlcklkIHx8IFtdO1xuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IHJlc3A/LnJlc3BvbnNpYmlsaXR5Q2VudGVycyB8fCBbbnVsbF07XG5cbiAgICBjb25zdCByZXNwT2JqOiBhbnlbXSA9IFtdO1xuXG4gICAgYXNzaWduZWVJZHMuZm9yRWFjaCgoYXNzaWduZWVJZDogYW55KSA9PiB7XG4gICAgICBpZighcmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgcmVzcE9iai5wdXNoKHRoaXMuZ2VuZXJhdGVSZXNwT2JqKHJlc3AsIGFzc2lnbmVlSWQsIG51bGwpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzLmZvckVhY2goKHJjOiBhbnkpID0+IHtcbiAgICAgICAgcmVzcE9iai5wdXNoKHRoaXMuZ2VuZXJhdGVSZXNwT2JqKHJlc3AsIGFzc2lnbmVlSWQsIHJjKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXNwT2JqO1xuICB9XG5cbiAgZ2VuZXJhdGVSZXNwT2JqKHJlc3A6IGFueSwgYXNzaWduZWVJZDogYW55LCByZXNwb25zaWJpbGl0eUNlbnRlcjogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3BvbnNpYmlsaXR5SWQ6IHJlc3A/LmlkLFxuICAgICAgYXNzaWduZWVJZDogYXNzaWduZWVJZCxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXNwb25zaWJpbGl0eUNlbnRlcixcbiAgICAgIHJlcG9ydE5hbWU6IHJlc3A/LnRpdGxlLFxuICAgIH1cbiAgfVxuXG5cbiAgdmlld1Jlc3BvbnNpYmlsaXR5KGlkOiBhbnkpIHtcbiAgICBpZiAodGhpcy52aWV3UmVzcG9uc2liaWxpdHlJZCA9PT0gaWQpIHtcbiAgICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPSBudWxsO1xuICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlEYXRhID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPSBpZDtcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eSA9IHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/LmZpbmQoXG4gICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5pZCA9PT0gaWRcbiAgICApO1xuICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5RGF0YVtpZF0gPVxuICAgICAgdGhpcy5jcmVhdGVTZXBhcmF0ZVJlc3BvbnNpYmlsaXRpZXMocmVzcG9uc2liaWxpdHkpO1xuICB9XG5cbiAgY3JlYXRlU2VwYXJhdGVSZXNwb25zaWJpbGl0aWVzKHJlc3BvbnNpYmlsaXR5OiBhbnkpOiBhbnlbXSB7XG4gICAgaWYgKCFyZXNwb25zaWJpbGl0eSkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgYXNzaWduZWVzID0gcmVzcG9uc2liaWxpdHkuYXNzaWduZWVzPy51c2VySWQgfHwgW107XG4gICAgY29uc3QgcmVzcG9uc2liaWxpdHlDZW50ZXJzID0gcmVzcG9uc2liaWxpdHkucmVzcG9uc2liaWxpdHlDZW50ZXJzIHx8IFtcbiAgICAgIG51bGwsXG4gICAgXTtcbiAgICAvLyBJZiBubyBhc3NpZ25lZXMgb3IgUkNzLCByZXR1cm4gb3JpZ2luYWwgcmVzcG9uc2liaWxpdHlcbiAgICBpZiAoYXNzaWduZWVzLmxlbmd0aCA9PT0gMCAmJiByZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW3Jlc3BvbnNpYmlsaXR5XTtcbiAgICB9XG4gICAgY29uc3QgbmV3UmVzcG9uc2liaWxpdGllczogYW55W10gPSBbXTtcblxuICAgIC8vIENyZWF0ZSBhIG5ldyByZXNwb25zaWJpbGl0eSBmb3IgZWFjaCBhc3NpZ25lZS1SQyBjb21iaW5hdGlvblxuICAgIGFzc2lnbmVlcy5mb3JFYWNoKChhc3NpZ25lZUlkOiBudW1iZXIpID0+IHtcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5mb3JFYWNoKChyY0lkOiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3UmVzcG9uc2liaWxpdHkgPSB7XG4gICAgICAgICAgLi4uY2xvbmVEZWVwKHJlc3BvbnNpYmlsaXR5KSxcbiAgICAgICAgICBhc3NpZ25lZXM6IHtcbiAgICAgICAgICAgIC4uLnJlc3BvbnNpYmlsaXR5LmFzc2lnbmVlcyxcbiAgICAgICAgICAgIHVzZXJJZDogW2Fzc2lnbmVlSWRdLFxuICAgICAgICAgICAgYWN0aXZlVXNlcklkOiBbYXNzaWduZWVJZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnM6IFtyY0lkXSxcbiAgICAgICAgICBhc3NpZ25lZURldGFpbHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXNzaWduZWU6IGFzc2lnbmVlSWQsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByY0lkLFxuICAgICAgICAgICAgICBwZXJmb3JtYW5jZTogbnVsbCxcbiAgICAgICAgICAgICAgbmV4dER1ZURhdGU6IG51bGwsXG4gICAgICAgICAgICAgIHJldmlld2VyUGVyZm9ybWFuY2U6IG51bGwsXG4gICAgICAgICAgICAgIHJldmlld2VyTmV4dER1ZURhdGU6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIG5ld1Jlc3BvbnNpYmlsaXRpZXMucHVzaChuZXdSZXNwb25zaWJpbGl0eSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXdSZXNwb25zaWJpbGl0aWVzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtaGVhZCB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgUmVzcG9uc2liaWxpdHk8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1ib2R5XCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8uYWxsUmVzcG9uc2liaWxpdHlDb3VudCA+IDBcIlxuICAgICAgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgcmVzcG9uc2liaWxpdHlUYWJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LXRhYmxlLWNhcmQgdngtYmctd2hpdGUgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXIgdngtbXItMSB2eC1wdC0yIHZ4LXBiLTIgdngtcGwtMyB2eC1wci0zIHZ4LXctMTAwXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUYWIgPT09IGkgKyAxIHx8IChjdXJyZW50VGFiID09PSAwICYmIGkgPT09IDMpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYkNoYW5nZSh0YWIpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ub25lXT1cInJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IHZ4LWQtYmxvY2sgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+e3sgdGFiLm5hbWUgfX08L2xhYmVsXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodCB2eC1kLWZsZXggdngtanVzdGlmeS1lbmQgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtdHh0LXdoaXRlIHZ4LWZ3LTUwMCB2eC1kLWlubGluZS1ibG9jayB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5VGFiQ291bnRbdHlwZVRvQ291bnRQcm9wZXJ0eVt0YWIudHlwZV1dIHx8IDBcbiAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1zZWFyY2ggdngtbWItMlwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMlwiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyZXNwb25zaWJpbGl0eVNlYXJjaFRleHRcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSZXNwb25zaWJpbGl0aWVzXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwicmVzcG9uc2liaWxpdHlMb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtbWlkIHZ4LW1iLTRcIlxuICAgICAgW2NsYXNzLndpdGgtcGFnaW5hdGlvbl09XCJcbiAgICAgICAgIXJlc3BvbnNpYmlsaXR5TG9hZGVyICYmIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9wYWdlcyA+IDFcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/Lmxlbmd0aCA9PT0gMCAmJiAhcmVzcG9uc2liaWxpdHlMb2FkZXJcbiAgICAgICAgXCJcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIm5vRGF0YUltYWdlUGF0aFwiXG4gICAgICAgIFtub0RhdGFUZXh0XT1cIm5vRGF0YU1lc3NhZ2VcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/Lmxlbmd0aCA+IDAgJiYgIXJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICNcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgICAgICBbY2xhc3Mud2l0aC1yY109XCJpc09uQ29tcGxldGlvblJjXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUkVTUE9OU0lCSUxJVElFU1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1jZW50ZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImlzT25Db21wbGV0aW9uUmNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNpYmlsaXR5IG9mIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5kYXRhO1xuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3cgY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uaWRcbiAgICAgICAgICAgICAgICAgIHwgaXNSZXNwU2VsZWN0ZWQgOiBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5vcGVuXT1cInRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uaWRcbiAgICAgICAgICAgICAgICAgIHwgaXNSZXNwU2VsZWN0ZWQgOiBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzZXJpYWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1ub1wiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInMSdcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfZnJvbSArIGkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicmVzcG9uc2liaWxpdHk/LmlkXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uaWRcbiAgICAgICAgICAgICAgICAgICAgICB8IGlzUmVzcFNlbGVjdGVkIDogc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdFJlc3AocmVzcG9uc2liaWxpdHksICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXJGaWxlQXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJBVkFUQVJfQ09OU1RBTlRTLlRZUEUuQVNTSUdOT1JcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlckRldGFpbHNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNpYmlsaXR5Py5hc3NpZ25vcl0gfCBnZXRVc2VyRGV0YWlscyA6IHVzZXJMaXN0XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9hcHAtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZXM/LnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRVc2VyRGV0YWlscyA6IHVzZXJMaXN0IGFzIGFzc2lnbmVlRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgIFthdmF0YXJDbGFzc109XCJBVkFUQVJfQ09OU1RBTlRTLkNPTE9SLkdSRUVOXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRGV0YWlscz8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IEFWQVRBUl9DT05TVEFOVFMuQU5ZT05FXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogQVZBVEFSX0NPTlNUQU5UUy5BTExcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFt1c2VyRGV0YWlsc109XCJhc3NpZ25lZURldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIGFwcFN0b3BQcm9wYWdhdGlvblxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlIHZ4LWZzLTEzIHZ4LW5ldXRyYWwtMTAwIHZ4LWxoLTVcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eT8udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdHk/LnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1uZXV0cmFsLTEwMCB2eC1saC00IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRZIENFTlRFUjpcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdldFJDTGlzdCA6IHJjTGlzdCA6IGFsbFJjTGlzdCBhcyByY0xpc3RcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNwLW5hbWUgdngtZnMtMTEgdngtZ3JheS02MCB2eC1saC00IHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmNMaXN0Py5sZW5ndGggPiAwID8gcmNMaXN0WzBdIDogJy0tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByY0xpc3Q/Lmxlbmd0aCA+IDAgPyByY0xpc3RbMF0gOiBcIi0tXCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtYmFkZ2VOdW0geHMgbWluaW1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNwUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmVzcFBvcG92ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJjIG9mIHJjTGlzdCB8IHNsaWNlIDogMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyByYyB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGFjdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uYXNzaWduZWVUeXBlID09PSBBVkFUQVJfQ09OU1RBTlRTLkFMTC50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5yY1R5cGUgPT09IEFWQVRBUl9DT05TVEFOVFMuQUxMLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld1Jlc3BvbnNpYmlsaXR5KHJlc3BvbnNpYmlsaXR5Py5pZClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1pY29uLWJ1dHRvbiBtaW5pbWFsIHNtYWxsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgdmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIiYjeGU5ZTc7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCImI3hlOWU4O1wiXG4gICAgICAgICAgICAgICAgICAgIH19PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgdmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZCAmJlxuICAgICAgICAgICAgICAgIHZpZXdSZXNwb25zaWJpbGl0eURhdGFbdmlld1Jlc3BvbnNpYmlsaXR5SWRdPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJvcGVuLW1vcmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygdmlld1Jlc3BvbnNpYmlsaXR5RGF0YVt2aWV3UmVzcG9uc2liaWxpdHlJZF1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgaXNSZXNwU2VsZWN0ZWQgOiBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzIDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RSZXNwKGRhdGEsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHktbmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmFzc2lnbmVlcz8udXNlcklkXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGdldFVzZXJEZXRhaWxzIDogdXNlckxpc3QgYXMgYXNzaWduZWVEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItYXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIkFWQVRBUl9DT05TVEFOVFMuVFlQRS5BU1NJR05PUlwiXG4gICAgICAgICAgICAgICAgICAgICAgW3VzZXJEZXRhaWxzXT1cImFzc2lnbmVlRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUgdngtZnMtMTEgdngtbmV1dHJhbC0xMDAgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXNzaWduZWVEZXRhaWxzWzBdPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGFzc2lnbmVlRGV0YWlsc1swXT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1uZXV0cmFsLTEwMCB2eC1saC00IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVI6XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRSQ0xpc3QgOiByY0xpc3QgOiBhbGxSY0xpc3QgYXMgY2hpbGRSY0xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc3AtbmFtZSB2eC1mcy0xMSB2eC1ncmF5LTYwIHZ4LWxoLTQgdngtbXItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUmNMaXN0Py5sZW5ndGggPiAwID8gY2hpbGRSY0xpc3RbMF0gOiAnLS0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGlsZFJjTGlzdD8ubGVuZ3RoID4gMCA/IGNoaWxkUmNMaXN0WzBdIDogXCItLVwiIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtcGFnaW5hdGlvblxuICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgcmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3BhZ2VzID4gMVwiXG4gICAgICBbc3RhcnRdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfZnJvbVwiXG4gICAgICBbZW5kXT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzX3RvXCJcbiAgICAgIFt0b3RhbF09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8udG90YWxfcmVzcG9uc2liaWxpdGllc1wiXG4gICAgICBbcGFnZUNvdW50XT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9wYWdlc1wiXG4gICAgICBbY3VycmVudFBhZ2VdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2VcIlxuICAgICAgKHNlbGVjdGVkUGFnZSk9XCJyZXNwb25zaWJpbGl0eVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYXBwLXBhZ2luYXRpb24+XG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgIFtzZWxlY3RlZERhdGFdPVwicmVzcG9uc2liaWxpdHlGbG9hdGVyQmFyRGF0YVwiXG4gICAgICBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ1JlcG9ydE5hbWUnXCJcbiAgICAgIChjbG9zZUxpc3QpPVwiYmFjaygpXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlSXRlbSgkZXZlbnQpXCJcbiAgICAgIFtpc0Rpc2FibGVkXT1cIiFyZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhPy5sZW5ndGhcIlxuICAgICAgW2lzUmVzcG9uc2liaWxpdHldPVwidHJ1ZVwiXG4gICAgICBbc2luZ3VsYXJUZXh0XT1cImZsb2F0ZXJCYXJUZXh0LlNJTkdVTEFSX1RFWFRcIlxuICAgICAgW3BsdXJhbFRleHRdPVwiZmxvYXRlckJhclRleHQuUExVUkFMX1RFWFRcIlxuICAgID48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
388
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVF4RSxNQUFNLE9BQU8sK0JBQStCO0lBcUYxQyxZQUNVLGdCQUFrQyxFQUNsQyx1QkFBZ0Q7UUFEaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBcEZqRCxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGlDQUE0QixHQUFRLEVBQUUsQ0FBQztRQUN2QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUUvQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxjQUFTLEdBQVks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SUFBSSxDQUFDO29CQUM3QixlQUFlLEVBQUU7d0JBQ2Y7NEJBQ0UsUUFBUSxFQUFFLFVBQVU7NEJBQ3BCLG9CQUFvQixFQUFFLElBQUk7NEJBQzFCLFdBQVcsRUFBRSxJQUFJOzRCQUNqQixXQUFXLEVBQUUsSUFBSTs0QkFDakIsbUJBQW1CLEVBQUUsSUFBSTs0QkFDekIsbUJBQW1CLEVBQUUsSUFBSTt5QkFDMUI7cUJBQ0Y7aUJBQ0YsQ0FBQztnQkFDRixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDOytHQXRiVSwrQkFBK0I7bUdBQS9CLCtCQUErQixxWENiNUMsMDVjQXNXQTs7NEZEelZhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSw4QkFBOEI7NklBSy9CLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL2NvbXBsaWFuY2UtY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVZBVEFSX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL3VpLWtpdC9hdmF0YXIvYXZhdGFyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eSB9IGZyb20gJy4vbGluay1yZXNwb25zaWJpbGl0eS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbGluay1yZXNwb25zaWJpbGl0eS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpbmstcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExpbmtSZXNwb25zaWJpbGl0eUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBvbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5OiBhbnk7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQElucHV0KCkgcmVzcElkS2V5OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlczogYW55ID0gW107XG4gIEBJbnB1dCgpIHJhZGlvU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIGNsb3NlQnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBBVkFUQVJfQ09OU1RBTlRTID0gQVZBVEFSX0NPTlNUQU5UUztcblxuICBhbmltYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVzcG9uc2liaWxpdHlMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNWYWxpZE9iajogYm9vbGVhbiA9IGZhbHNlO1xuICBpc09uQ29tcGxldGlvblJjOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVzcG9uc2liaWxpdGllc0RhdGE6IGFueSA9IHt9O1xuICByZXNwb25zaWJpbGl0eVRhYkNvdW50OiBhbnkgPSB7XG4gICAgcmVndWxhdGlvbkNvdW50OiAwLFxuICAgIHN0YW5kYXJkQ291bnQ6IDAsXG4gICAgaW50ZXJuYWxDb3VudDogMCxcbiAgICBvdGhlcnNDb3VudDogMCxcbiAgfTtcbiAgdHlwZVRvQ291bnRQcm9wZXJ0eTogYW55ID0ge1xuICAgIDA6ICdvdGhlcnNDb3VudCcsXG4gICAgMTogJ3JlZ3VsYXRpb25Db3VudCcsXG4gICAgMjogJ3N0YW5kYXJkQ291bnQnLFxuICAgIDM6ICdpbnRlcm5hbENvdW50JyxcbiAgfTtcbiAgcmVzcG9uc2liaWxpdHlQYXlsb2FkID0ge1xuICAgIHR5cGU6ICdhbGwnLFxuICAgIHBhZ2luYXRpb25UeXBlOiAnbGFyZ2UnLFxuICAgIGE6ICcnLFxuICAgIHNlYXJjaFRleHQ6ICcnLFxuICAgIGZpbHRlckRhdGE6IHtcbiAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgcmlza0lkczogW10sXG4gICAgICByZXZpZXdlcklkOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBbXSxcbiAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgY29tcGxpYW5jZVR5cGU6IFsxXSxcbiAgICB9LFxuICAgIHBhZ2VObzogMSxcbiAgICBzb3J0T2JqOiB7XG4gICAgICBzb3J0Qnk6ICcnLFxuICAgICAgdHlwZTogJycsXG4gICAgfSxcbiAgICBwYWdlTmFtZTogJ292ZXJ2aWV3JyxcbiAgfTtcblxuICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQ6IGFueVtdID0gW107XG4gIHJlc3BvbnNpYmlsaXR5VGFiczogYW55W10gPSBbXG4gICAgeyBuYW1lOiAnUkVHVUxBVElPTlMnLCB0eXBlOiAxIH0sXG4gICAgeyBuYW1lOiAnU1RBTkRBUkRTJywgdHlwZTogMiB9LFxuICAgIHsgbmFtZTogJ0lOVEVSTkFMIENPTlRST0xTJywgdHlwZTogMyB9LFxuICAgIHsgbmFtZTogJ09USEVSUycsIHR5cGU6IDAgfSxcbiAgXTtcblxuICBjdXJyZW50VGFiOiBudW1iZXIgPSAxO1xuICByZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICByZWd1bGF0aW9uQ291bnQ6IG51bWJlciA9IDA7XG4gIHN0YW5kYXJkc0NvdW50OiBudW1iZXIgPSAwO1xuICBpbnRlcm5hbHNDb3VudDogbnVtYmVyID0gMDtcbiAgb3RoZXJzQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgcmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgbm9EYXRhTWVzc2FnZTogc3RyaW5nID0gTElOS19SRVNQT05TSUJJTElUWV9DT05TVEFOVFMuTk9fREFUQV9NRVNTQUdFLk5PX0RBVEE7XG4gIG5vRGF0YUltYWdlUGF0aDogc3RyaW5nID0gTElOS19SRVNQT05TSUJJTElUWV9DT05TVEFOVFMuTk9fREFUQS5JTUFHRTtcbiAgZmxvYXRlckJhclRleHQ6IGFueSA9IExJTktfUkVTUE9OU0lCSUxJVFlfQ09OU1RBTlRTLkZMT0FUSU5HX0JBUjtcblxuICByZXNwb25zaWJpbGl0eUxpc3Q6IGFueTtcbiAgZmVhdHVyZUZsYWdfb25fY29tcGxldGlvbl9vZjogYW55O1xuICBjbG9zZTogYW55O1xuICB1c2VyTGlzdDogYW55W10gPSBbXTtcbiAgcmNMaXN0OiBhbnlbXSA9IFtdO1xuICBhbGxSY0xpc3Q6IGFueVtdID0gW107XG4gIHZpZXdSZXNwb25zaWJpbGl0eUlkOiBhbnk7XG4gIHZpZXdSZXNwb25zaWJpbGl0eURhdGE6IGFueSA9IHt9O1xuICByZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhOiBhbnkgPSBbXTtcblxuICBpc1Jlc3BvbnNpYmlsaXR5U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wbGlhbmNlQ29tbW9uU2VydmljZTogQ29tcGxpYW5jZUNvbW1vblNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlWYWx1ZXMoKTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICAgIHRoaXMuZ2V0UmNMaXN0KCk7XG4gIH1cblxuICBiYWNrKCkge1xuICAgIHRoaXMuY2xvc2VCdXR0b24uZW1pdCgpO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlWYWx1ZXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RmxvYXRlckJhckRhdGEgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMubWFwKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5yZXNwb25zaWJpbGl0eUlkXG4gICAgICApO1xuICAgICAgdGhpcy5wb3B1bGF0ZVJlc3BvbnNpYmlsaXR5VmFsdWVzKCk7XG4gICAgfVxuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgMzAwKTtcbiAgfVxuXG4gIHBvcHVsYXRlUmVzcG9uc2liaWxpdHlWYWx1ZXMoKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcykpIHJldHVybjtcblxuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZmxhdE1hcChcbiAgICAgICAgKHtcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUlkLFxuICAgICAgICAgIHJlcG9ydE5hbWUsXG4gICAgICAgICAgYXNzaWduZWVJZHMgPSBbXSxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMgPSBbXSxcbiAgICAgICAgICBhc3NpZ25lZUJyaWRnZUlkID0gW10sXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJCcmlkZ2VJZCA9IFtdLFxuICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYXNzaWduZWVJZHMpIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShyZXNwb25zaWJpbGl0eUNlbnRlcnMpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgcmV0dXJuIGFzc2lnbmVlSWRzLmZsYXRNYXAoKGFzc2lnbmVlSWQpID0+XG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMubWFwKChyZXNwb25zaWJpbGl0eUNlbnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlJZCxcbiAgICAgICAgICAgICAgYXNzaWduZWVJZCxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXIsXG4gICAgICAgICAgICAgIHJlcG9ydE5hbWUsXG4gICAgICAgICAgICAgIGFzc2lnbmVlQnJpZGdlSWQsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyQnJpZGdlSWQsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0UmNMaXN0KCkge1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2UuZ2V0UmNMaXN0SW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsUmNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VObzogbnVtYmVyID0gMSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObywgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YSA9IHRoaXMubWFwUmVzcG9uc2liaWxpdGllc0RhdGEocmVzPy5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXM/LmRhdGE/LnVzZXJzO1xuICAgICAgICAgICAgdGhpcy5yY0xpc3QgPSByZXM/LmRhdGE/LnJlc3BvbnNpYmlsaXR5Q2VudGVycztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBSZXNwb25zaWJpbGl0aWVzRGF0YShyZXM6IGFueSkge1xuICAgIGNvbnN0IHBhZ2VTaXplID0gMTA7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXM/LnBhZ2UgfHwgMTtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gcmVzPy50b3RhbCB8fCAwO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplIC0gMSwgdG90YWxJdGVtcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogcmVzPy5yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgdG90YWxfcmVzcG9uc2liaWxpdGllczogdG90YWxJdGVtcyxcbiAgICAgIHRvdGFsX3BhZ2VzOiBNYXRoLmNlaWwodG90YWxJdGVtcyAvIHBhZ2VTaXplKSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLFxuICAgICAgcmVzcG9uc2liaWxpdGllc19mcm9tOiBzdGFydEluZGV4LFxuICAgICAgcmVzcG9uc2liaWxpdGllc190bzogZW5kSW5kZXgsXG4gICAgfTtcbiAgfVxuXG4gIHJlc3BvbnNpYmlsaXR5UGFnZUNoYW5nZShwYWdlTnVtYmVyOiBudW1iZXIpIHtcbiAgICBpZiAocGFnZU51bWJlciAhPT0gdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YS5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSBwYWdlTnVtYmVyO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQucGFnZU5vID0gcGFnZU51bWJlcjtcbiAgICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VOdW1iZXIpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZUl0ZW0oaXRlbTogYW55KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5maW5kSW5kZXgoXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGl0ZW1bdGhpcy5yZXNwSWRLZXldXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZmlsdGVyKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZVt0aGlzLnJlc3BJZEtleV0gIT09IGl0ZW1bdGhpcy5yZXNwSWRLZXldXG4gICAgICApO1xuICAgIHRoaXMuaXNWYWxpZE9iaiA9IGZhbHNlO1xuICB9XG5cbiAgc2F2ZShldmVudDogYW55KSB7XG4gICAgdGhpcy5jbG9zZUJ1dHRvbi5lbWl0KCk7XG4gICAgdGhpcy5maWx0ZXJVbmlxdWVSZXNwb25zaWJpbGl0eVZhbHVlcygpO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eS5lbWl0KHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyk7XG4gIH1cblxuICBmaWx0ZXJVbmlxdWVSZXNwb25zaWJpbGl0eVZhbHVlcygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcz8ubGVuZ3RoKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgcmVzdWx0OiBSZXNwb25zaWJpbGl0eSA9IHt9O1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuXG4gICAgICB0aGlzLmluc2VydFVuaXF1ZVJlc3BvbnNpYmlsaXR5KHJlc3VsdCwgaXRlbSk7XG4gICAgfSk7XG4gICAgLy8gQ29udmVydCB0aGUgcmVzdWx0IG9iamVjdCBpbnRvIGFuIGFycmF5XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQpO1xuICB9XG5cbiAgaW5zZXJ0VW5pcXVlUmVzcG9uc2liaWxpdHkocmVzdWx0OiBSZXNwb25zaWJpbGl0eSwgaXRlbTogYW55KSB7XG4gICAgY29uc3QgeyByZXNwb25zaWJpbGl0eUlkLCBhc3NpZ25lZUlkLCByZXNwb25zaWJpbGl0eUNlbnRlciB9ID0gaXRlbTtcbiAgICBpZiAoIXJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXSkge1xuICAgICAgcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdID0ge1xuICAgICAgICByZXNwb25zaWJpbGl0eUlkLFxuICAgICAgICBhc3NpZ25lZUlkczogW10sXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyczogW10sXG4gICAgICAgIGFzc2lnbmVlQnJpZGdlSWQ6IFtdLFxuICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlckJyaWRnZUlkOiBbXSxcbiAgICAgICAgcmVwb3J0TmFtZTogaXRlbT8ucmVwb3J0TmFtZSxcbiAgICAgIH07XG4gICAgfSBcbiAgICAgIC8vIEFkZCBhc3NpZ25lZUlkIGlmIG5vdCBhbHJlYWR5IHByZXNlbnRcbiAgICAgIGlmICghcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdPy5hc3NpZ25lZUlkcz8uaW5jbHVkZXMoYXNzaWduZWVJZCkpIHtcbiAgICAgICAgcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdPy5hc3NpZ25lZUlkcz8ucHVzaChhc3NpZ25lZUlkKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHJlc3BvbnNpYmlsaXR5Q2VudGVyIGlmIG5vdCBhbHJlYWR5IHByZXNlbnRcbiAgICAgIGlmIChcbiAgICAgICAgIXJlc3VsdFtyZXNwb25zaWJpbGl0eUlkXT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzPy5pbmNsdWRlcyhcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlclxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdPy5yZXNwb25zaWJpbGl0eUNlbnRlcnM/LnB1c2goXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0QnJpZGdlSWRzKHJlc3VsdCk7XG4gICAgXG4gIH1cblxuICBnZXRCcmlkZ2VJZHMocmVzdWx0OiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByZXN1bHQpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSByZXN1bHRba2V5XTtcbiAgICAgIGl0ZW0uYXNzaWduZWVJZHMuZm9yRWFjaCgoYXNzaWduZWVJZDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gdGhpcy51c2VyTGlzdC5maW5kKFxuICAgICAgICAgICh1c2VyOiBhbnkpID0+IHVzZXI/LmlkID09PSBhc3NpZ25lZUlkXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaXRlbS5hc3NpZ25lZUJyaWRnZUlkLmZpbmQoKGlkOiBhbnkpID0+IGlkID09PSBhc3NpZ25lZT8udWlkKSkge1xuICAgICAgICAgIGl0ZW0uYXNzaWduZWVCcmlkZ2VJZD8ucHVzaChhc3NpZ25lZT8udWlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpdGVtLnJlc3BvbnNpYmlsaXR5Q2VudGVycy5mb3JFYWNoKChyZXNwb25zaWJpbGl0eUNlbnRlcjogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJjID0gdGhpcy5yY0xpc3QuZmluZChcbiAgICAgICAgICAocmM6IGFueSkgPT4gcmM/LmlkID09PSByZXNwb25zaWJpbGl0eUNlbnRlclxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWl0ZW0ucmVzcG9uc2liaWxpdHlDZW50ZXJCcmlkZ2VJZC5maW5kKChpZDogYW55KSA9PiBpZCA9PT0gcmM/LnJjaWQpXG4gICAgICAgICkge1xuICAgICAgICAgIGl0ZW0ucmVzcG9uc2liaWxpdHlDZW50ZXJCcmlkZ2VJZD8ucHVzaChyYz8ucmNpZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tUYWJDaGFuZ2UodGFiOiBhbnkpIHtcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSB0YWI/LnR5cGU7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQuZmlsdGVyRGF0YS5jb21wbGlhbmNlVHlwZSA9IFt0aGlzLmN1cnJlbnRUYWJdO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQucGFnZU5vID0gdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnNlYXJjaFRleHQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dDtcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXM7XG4gICAgdGhpcy5nZXRSZXNwb25zaWJpbGl0eUxpc3QoKTtcbiAgfVxuXG4gIHNlYXJjaCgpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5zZWFyY2hUZXh0ID0gdGhpcy5yZXNwb25zaWJpbGl0eVNlYXJjaFRleHQ7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U7XG4gICAgdGhpcy5nZXRSZXNwb25zaWJpbGl0eUxpc3QoKTtcbiAgfVxuXG4gIHNldFJlc3BvbnNpYmlsaXRpZXNDb3VudCgpIHtcbiAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZCkpO1xuICAgIHBheWxvYWQuZmlsdGVyRGF0YS5jb21wbGlhbmNlVHlwZSA9IFswLCAxLCAyLCAzXTtcbiAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2VcbiAgICAgID8uZ2V0UmVzcG9uc2liaWxpdGllc0NvdW50KHBheWxvYWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5VGFiQ291bnQucmVndWxhdGlvbkNvdW50ID0gcmVzPy5yZWd1bGF0aW9uX2NvdW50O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5VGFiQ291bnQuc3RhbmRhcmRDb3VudCA9IHJlcz8uc3RhbmRhcmRfY291bnQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5pbnRlcm5hbENvdW50ID0gcmVzPy5pbnRlcm5hbF9jb3VudDtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVRhYkNvdW50Lm90aGVyc0NvdW50ID0gcmVzPy5vdGhlcnNfY291bnQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBpbml0aWFsaXplIGFsbCB0aGUgRmVhdHVyZSBmbGFnIGJhc2VkIHZhcmlhYmxlc1xuICBmZWF0dXJlRmxhZ0luaXRpYWxpemF0aW9uKCkge1xuICAgIHRoaXMuZmVhdHVyZUZsYWdfb25fY29tcGxldGlvbl9vZiA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX2ZyZXF1ZW5jeV9vbl9jb21wbGV0aW9uX29mJ1xuICAgICk7XG4gICAgdGhpcy5pc09uQ29tcGxldGlvblJjID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfb25fY29tcGxldGlvbl9yYydcbiAgICApO1xuICB9XG5cbiAgc2VsZWN0UmVzcChyZXNwOiBhbnksIG1vZGU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjaGVja2VkUmVzcCA9IHRoaXMuZ2VuZXJhdGVSZXNwb25zaWJpbGl0eUlkKHJlc3ApO1xuICAgIGlmICghY2hlY2tlZFJlc3A/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY2hlY2tlZFJlc3AuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCBleGlzdHNJbmRleCA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5maW5kSW5kZXgoXG4gICAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgICBlbGUucmVzcG9uc2liaWxpdHlJZCA9PT0gaXRlbS5yZXNwb25zaWJpbGl0eUlkICYmXG4gICAgICAgICAgZWxlLmFzc2lnbmVlSWQgPT09IGl0ZW0uYXNzaWduZWVJZCAmJlxuICAgICAgICAgIGVsZS5yZXNwb25zaWJpbGl0eUNlbnRlciA9PT0gaXRlbS5yZXNwb25zaWJpbGl0eUNlbnRlclxuICAgICAgKTtcbiAgICAgIGlmIChtb2RlICYmIGV4aXN0c0luZGV4ID09PSAtMSkge1xuICAgICAgICAvLyBBZGQgaWYgbm90IHByZXNlbnRcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLnB1c2goaXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZW1vdmUgaWYgcHJlc2VudFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuc3BsaWNlKGV4aXN0c0luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLm1hcChcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnJlc3BvbnNpYmlsaXR5SWRcbiAgICApO1xuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLnNvbWUoXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZT8ucmVzcG9uc2liaWxpdHlJZCA9PT0gcmVzcD8uaWRcbiAgICApO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGbG9hdGVyQmFyRGF0YSA9IFtcbiAgICAgIC4uLm5ldyBTZXQodGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQpLFxuICAgIF07XG4gIH1cblxuICBnZW5lcmF0ZVJlc3BvbnNpYmlsaXR5SWQocmVzcDogYW55KSB7XG4gICAgY29uc3QgYXNzaWduZWVJZHMgPSByZXNwPy5hc3NpZ25lZXM/LnVzZXJJZCB8fCBbXTtcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eUNlbnRlcnMgPSByZXNwPy5yZXNwb25zaWJpbGl0eUNlbnRlcnMgfHwgW251bGxdO1xuXG4gICAgY29uc3QgcmVzcE9iajogYW55W10gPSBbXTtcblxuICAgIGFzc2lnbmVlSWRzLmZvckVhY2goKGFzc2lnbmVlSWQ6IGFueSkgPT4ge1xuICAgICAgaWYgKCFyZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCkge1xuICAgICAgICByZXNwT2JqLnB1c2godGhpcy5nZW5lcmF0ZVJlc3BPYmoocmVzcCwgYXNzaWduZWVJZCwgbnVsbCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMuZm9yRWFjaCgocmM6IGFueSkgPT4ge1xuICAgICAgICByZXNwT2JqLnB1c2godGhpcy5nZW5lcmF0ZVJlc3BPYmoocmVzcCwgYXNzaWduZWVJZCwgcmMpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3BPYmo7XG4gIH1cblxuICBnZW5lcmF0ZVJlc3BPYmoocmVzcDogYW55LCBhc3NpZ25lZUlkOiBhbnksIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzcG9uc2liaWxpdHlJZDogcmVzcD8ucmlkLFxuICAgICAgYXNzaWduZWVJZDogYXNzaWduZWVJZCxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByZXNwb25zaWJpbGl0eUNlbnRlcixcbiAgICAgIHJlcG9ydE5hbWU6IHJlc3A/LnRpdGxlLFxuICAgICAgYXNzaWduZWVCcmlkZ2VJZDogW10sXG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlckJyaWRnZUlkOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgdmlld1Jlc3BvbnNpYmlsaXR5KGlkOiBhbnkpIHtcbiAgICBpZiAodGhpcy52aWV3UmVzcG9uc2liaWxpdHlJZCA9PT0gaWQpIHtcbiAgICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPSBudWxsO1xuICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlEYXRhID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPSBpZDtcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eSA9IHRoaXMucmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/LmZpbmQoXG4gICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5pZCA9PT0gaWRcbiAgICApO1xuICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXR5RGF0YVtpZF0gPVxuICAgICAgdGhpcy5jcmVhdGVTZXBhcmF0ZVJlc3BvbnNpYmlsaXRpZXMocmVzcG9uc2liaWxpdHkpO1xuICB9XG5cbiAgY3JlYXRlU2VwYXJhdGVSZXNwb25zaWJpbGl0aWVzKHJlc3BvbnNpYmlsaXR5OiBhbnkpOiBhbnlbXSB7XG4gICAgaWYgKCFyZXNwb25zaWJpbGl0eSkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgYXNzaWduZWVzID0gcmVzcG9uc2liaWxpdHkuYXNzaWduZWVzPy51c2VySWQgfHwgW107XG4gICAgY29uc3QgcmVzcG9uc2liaWxpdHlDZW50ZXJzID0gcmVzcG9uc2liaWxpdHkucmVzcG9uc2liaWxpdHlDZW50ZXJzIHx8IFtcbiAgICAgIG51bGwsXG4gICAgXTtcbiAgICAvLyBJZiBubyBhc3NpZ25lZXMgb3IgUkNzLCByZXR1cm4gb3JpZ2luYWwgcmVzcG9uc2liaWxpdHlcbiAgICBpZiAoYXNzaWduZWVzLmxlbmd0aCA9PT0gMCAmJiByZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW3Jlc3BvbnNpYmlsaXR5XTtcbiAgICB9XG4gICAgY29uc3QgbmV3UmVzcG9uc2liaWxpdGllczogYW55W10gPSBbXTtcblxuICAgIC8vIENyZWF0ZSBhIG5ldyByZXNwb25zaWJpbGl0eSBmb3IgZWFjaCBhc3NpZ25lZS1SQyBjb21iaW5hdGlvblxuICAgIGFzc2lnbmVlcy5mb3JFYWNoKChhc3NpZ25lZUlkOiBudW1iZXIpID0+IHtcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5mb3JFYWNoKChyY0lkOiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3UmVzcG9uc2liaWxpdHkgPSB7XG4gICAgICAgICAgLi4uY2xvbmVEZWVwKHJlc3BvbnNpYmlsaXR5KSxcbiAgICAgICAgICBhc3NpZ25lZXM6IHtcbiAgICAgICAgICAgIC4uLnJlc3BvbnNpYmlsaXR5LmFzc2lnbmVlcyxcbiAgICAgICAgICAgIHVzZXJJZDogW2Fzc2lnbmVlSWRdLFxuICAgICAgICAgICAgYWN0aXZlVXNlcklkOiBbYXNzaWduZWVJZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnM6IFtyY0lkXSxcbiAgICAgICAgICBhc3NpZ25lZURldGFpbHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXNzaWduZWU6IGFzc2lnbmVlSWQsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiByY0lkLFxuICAgICAgICAgICAgICBwZXJmb3JtYW5jZTogbnVsbCxcbiAgICAgICAgICAgICAgbmV4dER1ZURhdGU6IG51bGwsXG4gICAgICAgICAgICAgIHJldmlld2VyUGVyZm9ybWFuY2U6IG51bGwsXG4gICAgICAgICAgICAgIHJldmlld2VyTmV4dER1ZURhdGU6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIG5ld1Jlc3BvbnNpYmlsaXRpZXMucHVzaChuZXdSZXNwb25zaWJpbGl0eSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXdSZXNwb25zaWJpbGl0aWVzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtaGVhZCB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgUmVzcG9uc2liaWxpdHk8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1ib2R5XCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8uYWxsUmVzcG9uc2liaWxpdHlDb3VudCA+IDBcIlxuICAgICAgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgcmVzcG9uc2liaWxpdHlUYWJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LXRhYmxlLWNhcmQgdngtYmctd2hpdGUgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXIgdngtbXItMSB2eC1wdC0yIHZ4LXBiLTIgdngtcGwtMyB2eC1wci0zIHZ4LXctMTAwXCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUYWIgPT09IGkgKyAxIHx8IChjdXJyZW50VGFiID09PSAwICYmIGkgPT09IDMpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYkNoYW5nZSh0YWIpXCJcbiAgICAgICAgICBbY2xhc3MucG9pbnRlci1ub25lXT1cInJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IHZ4LWQtYmxvY2sgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+e3sgdGFiLm5hbWUgfX08L2xhYmVsXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodCB2eC1kLWZsZXggdngtanVzdGlmeS1lbmQgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtdHh0LXdoaXRlIHZ4LWZ3LTUwMCB2eC1kLWlubGluZS1ibG9jayB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5VGFiQ291bnRbdHlwZVRvQ291bnRQcm9wZXJ0eVt0YWIudHlwZV1dIHx8IDBcbiAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1zZWFyY2ggdngtbWItMlwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMlwiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyZXNwb25zaWJpbGl0eVNlYXJjaFRleHRcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSZXNwb25zaWJpbGl0aWVzXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwicmVzcG9uc2liaWxpdHlMb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtbWlkIHZ4LW1iLTRcIlxuICAgICAgW2NsYXNzLndpdGgtcGFnaW5hdGlvbl09XCJcbiAgICAgICAgIXJlc3BvbnNpYmlsaXR5TG9hZGVyICYmIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9wYWdlcyA+IDFcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/Lmxlbmd0aCA9PT0gMCAmJiAhcmVzcG9uc2liaWxpdHlMb2FkZXJcbiAgICAgICAgXCJcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIm5vRGF0YUltYWdlUGF0aFwiXG4gICAgICAgIFtub0RhdGFUZXh0XT1cIm5vRGF0YU1lc3NhZ2VcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE/Lmxlbmd0aCA+IDAgJiYgIXJlc3BvbnNpYmlsaXR5TG9hZGVyXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICNcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgICAgICBbY2xhc3Mud2l0aC1yY109XCJpc09uQ29tcGxldGlvblJjXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUkVTUE9OU0lCSUxJVElFU1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1jZW50ZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImlzT25Db21wbGV0aW9uUmNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNpYmlsaXR5IG9mIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5kYXRhO1xuICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3cgY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8ucmlkXG4gICAgICAgICAgICAgICAgICB8IGlzUmVzcFNlbGVjdGVkIDogc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJ0aGlzLnZpZXdSZXNwb25zaWJpbGl0eUlkID09PSByZXNwb25zaWJpbGl0eT8uaWRcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LnJpZFxuICAgICAgICAgICAgICAgICAgfCBpc1Jlc3BTZWxlY3RlZCA6IHNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXNcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW5vXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIicxJ1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyByZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdGllc19mcm9tICsgaSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZXNwb25zaWJpbGl0eT8ucmlkXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8ucmlkXG4gICAgICAgICAgICAgICAgICAgICAgfCBpc1Jlc3BTZWxlY3RlZCA6IHNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXNcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RSZXNwKHJlc3BvbnNpYmlsaXR5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgcmVzcG9uc2liaWxpdHktbmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyRmlsZUFyZWEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiQVZBVEFSX0NPTlNUQU5UUy5UWVBFLkFTU0lHTk9SXCJcbiAgICAgICAgICAgICAgICAgICAgW3VzZXJEZXRhaWxzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtyZXNwb25zaWJpbGl0eT8uYXNzaWdub3JdIHwgZ2V0VXNlckRldGFpbHMgOiB1c2VyTGlzdFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPjwvYXBwLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uYXNzaWduZWVzPy51c2VySWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2V0VXNlckRldGFpbHMgOiB1c2VyTGlzdCBhcyBhc3NpZ25lZURldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICBbYXZhdGFyQ2xhc3NdPVwiQVZBVEFSX0NPTlNUQU5UUy5DT0xPUi5HUkVFTlwiXG4gICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZURldGFpbHM/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBBVkFUQVJfQ09OU1RBTlRTLkFOWU9ORVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFWQVRBUl9DT05TVEFOVFMuQUxMXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdXNlckRldGFpbHNdPVwiYXNzaWduZWVEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBTdG9wUHJvcGFnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMyB2eC1uZXV0cmFsLTEwMCB2eC1saC01XCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHk/LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJlc3BvbnNpYmlsaXR5Py50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbmV1dHJhbC0xMDAgdngtbGgtNCB2eC10dC11cHBlcmNhc2UgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVI6XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eUNlbnRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRSQ0xpc3QgOiByY0xpc3QgOiBhbGxSY0xpc3QgYXMgcmNMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzcC1uYW1lIHZ4LWZzLTExIHZ4LWdyYXktNjAgdngtbGgtNCB2eC1tci0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJjTGlzdD8ubGVuZ3RoID4gMCA/IHJjTGlzdFswXSA6ICctLSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcmNMaXN0Py5sZW5ndGggPiAwID8gcmNMaXN0WzBdIDogXCItLVwiIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWJhZGdlTnVtIHhzIG1pbmltYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzcFBvcG92ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3Jlc3BQb3BvdmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByYyBvZiByY0xpc3QgfCBzbGljZSA6IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmMgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhY3Rpb25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlVHlwZSA9PT0gQVZBVEFSX0NPTlNUQU5UUy5BTEwudG9Mb3dlckNhc2UoKSB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8ucmNUeXBlID09PSBBVkFUQVJfQ09OU1RBTlRTLkFMTC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdSZXNwb25zaWJpbGl0eShyZXNwb25zaWJpbGl0eT8uaWQpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtaWNvbi1idXR0b24gbWluaW1hbCBzbWFsbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgIHZpZXdSZXNwb25zaWJpbGl0eUlkID09PSByZXNwb25zaWJpbGl0eT8uaWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCImI3hlOWU3O1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiJiN4ZTllODtcIlxuICAgICAgICAgICAgICAgICAgICB9fTwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHZpZXdSZXNwb25zaWJpbGl0eUlkID09PSByZXNwb25zaWJpbGl0eT8uaWQgJiZcbiAgICAgICAgICAgICAgICB2aWV3UmVzcG9uc2liaWxpdHlEYXRhW3ZpZXdSZXNwb25zaWJpbGl0eUlkXT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwib3Blbi1tb3JlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhIG9mIHZpZXdSZXNwb25zaWJpbGl0eURhdGFbdmlld1Jlc3BvbnNpYmlsaXR5SWRdXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YT8ucmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBpc1Jlc3BTZWxlY3RlZCA6IHNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMgOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdFJlc3AoZGF0YSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1uYW1lXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YT8uYXNzaWduZWVzPy51c2VySWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2V0VXNlckRldGFpbHMgOiB1c2VyTGlzdCBhcyBhc3NpZ25lZURldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1hcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiQVZBVEFSX0NPTlNUQU5UUy5UWVBFLkFTU0lHTk9SXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdXNlckRldGFpbHNdPVwiYXNzaWduZWVEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMSB2eC1uZXV0cmFsLTEwMCB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhc3NpZ25lZURldGFpbHNbMF0/Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWVEZXRhaWxzWzBdPy5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LW5ldXRyYWwtMTAwIHZ4LWxoLTQgdngtdHQtdXBwZXJjYXNlIHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRZIENFTlRFUjpcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdldFJDTGlzdCA6IHJjTGlzdCA6IGFsbFJjTGlzdCBhcyBjaGlsZFJjTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzcC1uYW1lIHZ4LWZzLTExIHZ4LWdyYXktNjAgdngtbGgtNCB2eC1tci0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRSY0xpc3Q/Lmxlbmd0aCA+IDAgPyBjaGlsZFJjTGlzdFswXSA6ICctLSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkUmNMaXN0Py5sZW5ndGggPiAwID8gY2hpbGRSY0xpc3RbMF0gOiBcIi0tXCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYWN0aW9uXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1wYWdpbmF0aW9uXG4gICAgICAqbmdJZj1cIiFyZXNwb25zaWJpbGl0eUxvYWRlciAmJiByZXNwb25zaWJpbGl0aWVzRGF0YT8udG90YWxfcGFnZXMgPiAxXCJcbiAgICAgIFtzdGFydF09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdGllc19mcm9tXCJcbiAgICAgIFtlbmRdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfdG9cIlxuICAgICAgW3RvdGFsXT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9yZXNwb25zaWJpbGl0aWVzXCJcbiAgICAgIFtwYWdlQ291bnRdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3BhZ2VzXCJcbiAgICAgIFtjdXJyZW50UGFnZV09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZVwiXG4gICAgICAoc2VsZWN0ZWRQYWdlKT1cInJlc3BvbnNpYmlsaXR5UGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9hcHAtcGFnaW5hdGlvbj5cbiAgICA8YXBwLWZsb2F0aW5nLWJhclxuICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlMb2FkZXJcIlxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJyZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhXCJcbiAgICAgIFtkaXNwbGF5RWxlbWVudEtleV09XCInUmVwb3J0TmFtZSdcIlxuICAgICAgKGNsb3NlTGlzdCk9XCJiYWNrKClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZSgkZXZlbnQpXCJcbiAgICAgIChkZWxldGVFdmVudCk9XCJkZWxldGVJdGVtKCRldmVudClcIlxuICAgICAgW2lzRGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5RmxvYXRlckJhckRhdGE/Lmxlbmd0aFwiXG4gICAgICBbaXNSZXNwb25zaWJpbGl0eV09XCJ0cnVlXCJcbiAgICAgIFtzaW5ndWxhclRleHRdPVwiZmxvYXRlckJhclRleHQuU0lOR1VMQVJfVEVYVFwiXG4gICAgICBbcGx1cmFsVGV4dF09XCJmbG9hdGVyQmFyVGV4dC5QTFVSQUxfVEVYVFwiXG4gICAgPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|